game
.h
#ifndef __game_h__
#define __game_h__
#include<stdio.h>
#include<time.h>
#include<windows.h>
#pragma warning(disable:4996)
#define row 3
#define line 3
void Init(char board
[][row
], int x
,int y
);
void Show(char board
[][row
], int x
, int y
);
char Judge(char board
[][row
], int x
, int y
);
void C_move(char board
[][row
], int x
, int y
);
int Firstone();
void Game();
#endif
game
.c
#include "game.h"
void Init(char board
[][row
], int x
, int y
)
{
int i
= 0;
for (i
; i
< x
; ++ i
){
int j
= 0;
for (j
; j
< y
; j
++){
board
[i
][j
] = ' ';
}
}
}
int Firstone()
{
int rnum
= rand() % 2;
printf("请猜硬币正反面决定落子顺序!\n");
for (int i
= 5; i
> 0; i
--){
printf("正在生成硬币...........%d\r", i
);
Sleep(1000);
}
printf("硬币已生成,请猜(反面:0,正面:1):>");
int select
=0;
scanf("%d", &select
);
if (select
== rnum
){
printf("恭喜猜对了!\n");
return 0;
}
else{
printf("很遗憾猜错了\n");
return 1;
}
}
void Show(char board
[][row
], int x
, int y
)
{
printf(" 1 | 2| 3\n");
printf("-------------\n");
for (int i
=1; i
<= x
; i
++){
printf("%d |",i
);
for (int j
=1; j
<= y
; j
++){
printf("%c |", board
[i
-1][j
-1]);
}
printf("\n");
printf("-------------\n");
}
}
char Judge(char board
[][row
], int x
, int y
)
{
for (int i
=0; i
< line
; i
++){
if (board
[i
][0]!=' '&&board
[i
][0] == board
[i
][1] && board
[i
][1] == board
[i
][2]){
return board
[i
][0];
}
if (board
[0][i
] != ' '&&board
[0][i
] == board
[1][i
] && board
[1][i
] == board
[2][i
]){
return board
[0][i
];
}
}
if (board
[0][0] != ' '&&board
[0][0] == board
[1][1] && board
[0][0] == board
[2][2])
return board
[0][0];
if (board
[0][2] != ' '&&board
[0][2] == board
[1][1] && board
[0][2] == board
[2][0])
return board
[0][2];
for (int i
=0; i
< x
; i
++){
for (int j
=0; j
< y
; j
++){
if (board
[i
][j
] == ' ')
return 'N';
}
}
return 'F';
}
void C_move(char board
[][row
], int x
, int y
)
{
while (1){
int a
= rand()%line
;
int b
= rand()%row
;
if (board
[a
][b
] == ' '){
board
[a
][b
] = 'o';
break;
}
}
}
void Game()
{
int who
=1;
char board
[3][3];
char result
= 0;
Init(board
, line
, row
);
who
= Firstone();
if (who
){
goto aa
;
}
do{
int x
= 0, y
= 0;
Show(board
,line
,row
);
printf("请落子(输入格式:x y): >");
scanf("%d %d", &x
, &y
);
if (x
<1 || x
> 3 || y
<1 || y
> 3){
printf("输入有误,请重新输入!\n");
continue;
}
else if (board
[x
-1][y
-1] != ' '){
printf("该位置已被占用,请重新输入!\n");
continue;
}
else
board
[x
-1][y
-1] = 'x';
result
=Judge(board
, line
, row
);
if (result
!= 'N'){
break;
}
aa
:C_move(board
,line
,row
);
result
=Judge(board
, line
,row
);
if (result
!= 'N'){
break;
}
} while (1);
if (result
== 'x'){
printf("---------------------\n");
Show(board
, line
, row
);
printf("恭喜,你赢了!\n");
}
else if (result
== 'o'){
printf("---------------------\n");
Show(board
, line
, row
);
printf("很遗憾,你输了!\n");
}
else if (result
== 'F'){
printf("平局!\n");
}
}
```cpp
main
.c
#include "game.h"
void Menu()
{
printf("###########################\n");
printf("## 欢迎来到我的游戏厅 ##\n");
printf("## 1.play 2.exit ##\n");
printf("###########################\n");
printf("Please select >");
}
int main()
{
srand((unsigned long)time(NULL));
int select
= 0;
int quit
= 0;
while (!quit
)
{
Menu();
scanf("%d", &select
);
switch (select
)
{
case 1:
Game();
printf("玩的还不错,还要继续吗?\n");
break;
case 2:
quit
= 1;
printf("bye,bye~\n");
break;
default:
printf("输入有误,请重新输入!\n");
break;
}
}
转载请注明原文地址: https://mac.8miu.com/read-508232.html