ブラックジャック

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
hagekabe

ブラックジャック

#1

投稿記事 by hagekabe » 6年前

コード:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void draw(int card[])
{
  static int cards[4][14];
  int i, j; // i:スーツ、j:数字

  srand((unsigned)time(NULL));

  do{
    i = rand()%4;
    j = rand()%13+1;
    cards[i][j]++;
  }while(cards[i][j]!=1);

  card[0] = i;
  card[1] = j;
}

void display(int card[])
{
  switch(card[0]){
  case 0: printf("S"); break;
  case 1: printf("H"); break;
  case 2: printf("D"); break;
  case 3: printf("C"); break;
  }

  switch(card[1]){
  case 1: printf("A"); break;
  case 11: printf("J"); break;
  case 12: printf("Q"); break;
  case 13: printf("K"); break;
  default: printf("%d", card[1]);
  }
  printf("\n");
}

int main()
{
  int card[2];
  char c;
  int i=0;

  do{
    printf("Hit or Stand?(h/s): ");
    scanf(" %c", &c);



  return 0;
}
初心者です。
一枚引く関数と記号に置き換える関数を作ったのですが、ブラックジャックまで出来ません・・・。
ちなみにやりたい実行結果は一枚引く行為はsを入力するか、21でburstするまで繰り返しで、1は21を越えない場合は11として、越える場合は1として扱い、11,12,13は10として扱いたいです。
よろしくお願いします。

アバター
usao
記事: 1569
登録日時: 6年前

Re: ブラックジャック

#2

投稿記事 by usao » 6年前

とりあえず対戦相手(ディーラー?)がいない状態で
「カードを引く→手の得点(っていうのかな?)を計算する」
という状態までを実現したい,ということでしょうか.

一気にいろいろ実現するのが難しいのであれば,まずは目標を簡単にしてみてはいかがでしょう.
例えば,

・最初はscanf云々の話はまずは置いといて,
 burstするまでひたすらカードを引き,手札の得点を都度表示する(burstになったら終了)ということにする.

くらいでどうでしょう?

#ところでブラックジャックって何回までドローできるんでしょう?(回数制限があるのかどうか)
 手札を表すのに 回数制限が無い&カードは1セット という条件で最大引ける回数分の配列でも用意しとけばいいかな…
 { A,A,A,A,2,2,2,2,3,3,3 }が最大枚数状態?
#draw()の処理効率がとても悪い気がしますが,それは後回し.

閉鎖

“C言語何でも質問掲示板” へ戻る