我是靠谱客的博主 靓丽猫咪,这篇文章主要介绍三子棋小游戏 C语言 (双人大战简单版)玩法介绍头文件源文件注意事项,现在分享给大家,希望可以做个参考。

玩法介绍

运行代码,选择1或者0,选择1开始玩游戏

输入你想下的坐标

随后,输入你朋友想下的坐标

……………………

……………………

几轮大战后,分出胜负

结果有玩家1赢,玩家2赢,平局

头文件

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//头文件的包含 #include <stdio.h> #include <stdlib.h> #include <time.h> //符号的定义 #define ROW 3 //定义行为3,列为3.也可以变成五子棋或者n子棋 #define COL 3 //函数的声明 void InitBoard(char board[ROW][COL], int row, int col);//初始化棋盘 void DisplayBoard(char board[ROW][COL], int row, int col);//打印棋盘 void Player1Move(char board[][COL], int row, int col);//玩家1下棋 void Player2Move(char board[ROW][COL], int row, int col);//玩家2下棋 char Is_Win(char board[ROW][COL], int row, int col);//判断游戏状态 //玩家1赢了--* //玩家2赢了--# //平 局----Q //游戏继续--C int Is_Full(char board[ROW][COL], int row, int col);//判断棋盘是否满了

源文件

(1) 建立一个.c文件,名为game.c

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#include "game.h" //初始化棋盘InitBoard函数 void InitBoard(char board[ROW][COL], int row, int col) { int i = 0; int j = 0; for (i = 0; i < row; i++) { for (j = 0; j < col; j++) { board[i][j] = ' ';//初始化棋盘,全为空格 } } } //打印棋盘DisplayBoard void DisplayBoard(char board[ROW][COL], int row, int col) { int i = 0; for (i = 0; i < row; i++) { int j = 0; for (j = 0; j < col; j++) { printf(" %c ", board[i][j]); if (j < col - 1) { printf("|"); } } printf("n"); if (i < row - 1)//横杠会多打印一次,所以用if { int j = 0; for (j = 0; j < col; j++) { printf("---"); if (j < col - 1) { printf("|"); } } printf("n"); } } } //玩家1下棋Player1Move void Player1Move(char board[][COL], int row, int col) { int x = 0; int y = 0; printf("玩家1走:>n"); while (1)//当有break时,也能退出来 { printf("玩家1,请输入下棋的坐标:>"); scanf_s("%d %d", &x, &y); //判断坐标合法性 if (x >= 1 && x <= row && y >= 1 && y <= col) { //下棋 //判断坐标是否被占用 if (board[x - 1][y - 1] == ' ') { board[x - 1][y - 1] = '*'; break; } else { printf("坐标被占用,请重新输入n"); } } else { printf("坐标非法,请重新输入n"); } } } //玩家2下棋Player1Move void Player2Move(char board[][COL], int row, int col) { int x = 0; int y = 0; printf("玩家2走:>n"); while (1)//当有break时,也能退出来 { printf("玩家2,请输入下棋的坐标:>"); scanf_s("%d %d", &x, &y); //判断坐标合法性 if (x >= 1 && x <= row && y >= 1 && y <= col) { //下棋 //判断坐标是否被占用 if (board[x - 1][y - 1] == ' ') { board[x - 1][y - 1] = '#'; break; } else { printf("坐标被占用,请重新输入n"); } } else { printf("坐标非法,请重新输入n"); } } } //判断棋盘是否满了 int Is_Full(char board[ROW][COL], int row, int col) { int i = 0; int j = 0; for (i = 0; i < row; i++) { for (j = 0; j < col; j++) { if (board[i][j] == ' ') { return 0;//棋盘没满 } } } return 1;//棋盘满了 } //判断游戏状态Is_Win,是否赢,是否平局 char Is_Win(char board[ROW][COL], int row, int col) { int i = 0; //判断三行是否连着三个 for (i = 0; i < row; i++) { if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][1] != ' ') { return board[i][1]; } } //判断三列是否连着三个 for (i = 0; i < col; i++) { if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[1][i] != ' ') { return board[1][i]; } } //判断对角线是否连着三个 if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' ') { return board[1][1]; } if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' ') { return board[1][1]; } //判断平局 //如果在前面四个return的情况下,棋盘满了,则为平局 //Is_Full函数判断棋盘是否满,满了返回1,没满返回0 int ret = Is_Full(board, row, col); if (ret == 1) { return 'Q'; } //游戏继续 return 'C'; }

(2) 再建立一个.c文件,名为test.c

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <stdio.h> #include "game.h" void menu() { printf("**********************************n"); printf("********** 1、play ***********n"); printf("********** 0、exit ***********n"); printf("**********************************n"); } void game() { //需要存储数据,二维数组 char board[ROW][COL];//board是棋盘 InitBoard(board, ROW, COL);//初始化棋盘InitBoard,都是空格 DisplayBoard(board, ROW, COL);//打印一下棋盘DisplayBoard,本质是打印数组的内容 char ret = 0;//接受游戏状态 while (1) { //玩家1下棋 Player1Move(board, ROW, COL); DisplayBoard(board, ROW, COL);//玩家1下完打印一下 //判断玩家1是否赢得游戏 ret = Is_Win(board, ROW, COL); //玩家2下棋 Player2Move(board, ROW, COL); DisplayBoard(board, ROW, COL);//玩家2下完打印一下 //判断玩家2是否赢得游戏 ret = Is_Win(board, ROW, COL); if (ret != 'C')//谁也没赢或者平局,游戏继续 { break; } } if (ret == '*') { printf("玩家1赢了n"); } else if (ret == '#') { printf("玩家2赢了n"); } else { printf("平局n"); } DisplayBoard(board, ROW, COL); } int main() { int input = 0; srand((unsigned int)time(NULL)); do { menu(); printf("请选择:>"); scanf_s("%d", &input); switch (input) { case 1: game(); break; case 0: printf("退出游戏n"); break; default: printf("选择错误,请重新选择n"); break; } } while (input);//如果input不为0,为真,则再来一局游戏 return 0; }

注意事项

不同的编译软件,可能会scanf_s出现错误,将scanf_s改为scanf即可

代码目前正在优化中,等待后续更新…………

快和好友一起试玩吧!

关注我,让你的上机课不再无聊

最后

以上就是靓丽猫咪最近收集整理的关于三子棋小游戏 C语言 (双人大战简单版)玩法介绍头文件源文件注意事项的全部内容,更多相关三子棋小游戏内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部