ページ 1 / 1
- ビンゴゲームのプログラム -
Posted: 2010年5月17日(月) 00:19
by nescafe
C言語の初心者です
C言語の課題がどうしてもわからないので教えてください
・1~50 の番号がランダムに配置された5 行×5 列のビンゴカードを作成する。
ただし、カード中央のマスには、マスが空いた状態を表す0 をあらかじめ配置しておく。
・カード初期状態を表示したあと、乱数を用いた番号の抽選を開始する。ENTER キーの入力
で、乱数を取得し番号に適用する。
・抽選によって選ばれた番号がカードにあった場合、番号表示とともにその旨を表示し、
カードのその番号のマスを空け(0 に書き換え)、最新のカードの状態を表示する。
・抽選によって選ばれた番号がカードにあった場合、ビンゴしたかどうかカードをチェックする。
・カードの縦、横、斜めいずれか1列が全て空いたら(いずれか1 列に0 が並んだら)、ビ
ンゴしたとみなす。
・番号の抽選とカードの書き換え、およびカードのチェックを繰返し、ビンゴしたらプロ
グラムを終了する
Re:- ビンゴゲームのプログラム -
Posted: 2010年5月17日(月) 00:53
by たかぎ
Re:- ビンゴゲームのプログラム -
Posted: 2010年5月17日(月) 02:45
by ru
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int i, j;
int w;
int state[50];
int card[5][5];
int GetNumber()
{
while (1)
{
w = rand() % 50 + 1;
if (state[w] == 0)
{
state[w] = 1;
break;
}
}
return w;
}
void Disp()
{
for (i=0; i<5; i++)
{
for (j=0; j<5; j++)
{
printf("%.2d ", card[j]);
}
printf("\n");
}
}
// 抽選によって選ばれた番号がカードにあった場合、番号表示とともにその旨を表示し、
// カードのその番号のマスを空け(0 に書き換え)
int NumberCheck(int n)
{
for (i=0; i<5; i++)
{
for (j=0; j<5; j++)
{
if (card[j] == n)
{
printf("%.2dはある\n", n);
card[j] = 0;
return 1;
}
}
}
printf("%.2dはない\n", n);
return 0;
}
// カードの縦、横、斜めいずれか1列が全て空いたら(いずれか1 列に0 が並んだら)、ビ
// ンゴしたとみなす。
int BingoCheck()
{
for (i=0; i<5; i++)
{
w = 0;
for (j=0; j<5; j++)
{
w += card[j];
}
if (w == 0)
{
return 1;
}
}
for (i=0; i<5; i++)
{
w = 0;
for (j=0; j<5; j++)
{
w += card[j];
}
if (w == 0)
{
return 1;
}
}
w = 0;
for (i=0; i<5; i++)
{
w += card;
}
if (w == 0)
{
return 1;
}
w = 0;
for (i=0; i<5; i++)
{
w += card[4-i];
}
if (w == 0)
{
return 1;
}
return 0;
}
int main()
{
srand((unsigned)time(NULL));
for (i=0; i<50; i++)
{
state = 0;
}
// 1~50 の番号がランダムに配置された5 行×5 列のビンゴカードを作成する。
for (i=0; i<5; i++)
{
for (j=0; j<5; j++)
{
card[j] = GetNumber();
}
}
// ただし、カード中央のマスには、マスが空いた状態を表す0 をあらかじめ配置しておく。
card[2][2] = 0;
for (i=0; i<50; i++)
{
state[i] = 0;
}
// カード初期状態を表示
Disp();
// 番号の抽選とカードの書き換え、およびカードのチェックを繰返し、ビンゴしたらプロ
// グラムを終了する
while (1)
{
// ENTER キーの入力
printf("ENTER");
getchar();
// 乱数を取得し番号に適用する。乱数を用いた番号の抽選を開始する
if (NumberCheck(GetNumber()))
{
// 最新のカードの状態を表示する。
Disp();
// 抽選によって選ばれた番号がカードにあった場合、ビンゴしたかどうかカードをチェックする。
if (BingoCheck())
{
printf("ビンゴ\n");
break;
}
}
}
printf("終了\n");
return 0;
}
Re:- ビンゴゲームのプログラム -
Posted: 2010年5月17日(月) 03:44
by nescafe
ぴよぴよさん
ありがとうございます!!
たかぎさん
規約を全然読んでませんでした以後気をつけます。