/* ******************************
神経衰弱ゲーム (sinkei.c)
for c-prog.2
* ****************************** */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* ----- カードを覚えておく配列変数 */
int map[4][4] = {1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8};
/* ----- カードを画面に表示する関数 */
void display(int x1, int y1, int x2, int y2)
{
int x, y;
printf(" 0 1 2 3\n");
printf(" +---------+\n");
for (y = 0; y < 4; y++) {
printf("%d| ", y);
for (x = 0; x < 4;
x++) {
if (( y == y1 ) && ( x == x1 )) {
printf("%d ", map[y1][x1]);
} else if (( y == y2 ) && ( x == x2 )) {
printf("%d ", map[y2][x2]);
} else if ( map[y][x] > 0 ) {
printf("# ");
} else {
printf(" ");
}
}
printf("|\n");
}
printf(" +---------+\n");
}
/* ----- main 関数 */
main()
{
int x,y,x1,y1,x2,y2, buffer;
int i;
/* カードをシャッフル */
srand( time(0) );
for (i = 1;i <= 100;i++) {
x1 = (rand()
/ 10) % 4;
/* rand() は乱数 */
y1 = (rand()
/ 10) % 4;
x2 = (rand()
/ 10) % 4;
y2 = (rand()
/ 10) % 4;
buffer
= map[y1][x1] ;
map[y1][x1] = map[y2][x2]
;
map[y2][x2] = buffer
;
}
/* ゲーム開始 */
while (1) {
printf("\n----- ☆ 神経衰弱ゲーム ☆ -----\n");
/* 現在の結果を画面に表示
*/
display(-1,-1,-1,-1);
/* プレーヤーが 1 枚目のカードを引く
*/
printf("1 枚目を引いて下さい
(x y):");
scanf("%d %d", &x1,
&y1);
display(x1, y1, -1,-1);
/* プレーヤーが 2 枚目のカードを引く
*/
printf("2 枚目を引いて下さい
(x y) :");
scanf("%d %d", &x2,
&y2);
display(x1, y1, x2,
y2);
/* 内容が同じだったら
'あたり' 表示 */
if (map[y1][x1] == map[y2][x2])
{
printf("あたり !\n");
map[y1][x1] = -1;
/* カードを取り除く */
map[y2][x2] = -1;
/* カードを取り除く */
} else {
printf("残念 はずれ\n");
}
}
} |