三子棋的实现
今天我们来说说,一个简单的三子棋小游戏怎样用C语言代码来实现;
三子棋要实现的功能:
1.轮流下棋。
2.判断胜负。
3.判断是否和棋。
具体的代码逻辑:
1.甲落子。
2.判断是否甲胜利。
3.判断是否为和棋。
4.电脑落子。
5.判断是否电脑胜利。
6.判断是否为和棋。
一直重复上述过程,直到一方胜利或者和棋跳出循环,而且每次有一方落子,都得更新棋盘。
并打印出来。我是用一个二维的字符数组来写这个小游戏的,代码如下:
#define ROW 3
#define COL 3
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>
char arr[ROW][COL];
void computer(){
int row = 0;
int col = 0;
while (2){
srand((unsigned)time(0));
row = rand() % 3;
col = rand() % 3;
if (arr[row][col] == 'o'|| arr[row][col] == 'x'){
continue;
}
if (arr[row][col] == ' '){
arr[row][col] = 'o';
for (int i = 0; i < 3; i++){
for (int j = 0; j < 3; j++){
printf(" | ");
printf("%c", arr[i][j]);
}
printf(" |");
printf("\n");
if (i < 2){
printf(" -------------");
}
printf("\n");
}
printf("\n");
break;
}
}
}
这是电脑的落子,由随机数产生随机的落子位置。
void man(){
int row = 0;
int col = 0;
while (2){
printf("请输入坐标,中间用空格隔开:\n");
scanf("%d %d", &row, &col);
if (row> 2 || col > 2 || row < 0 || col < 0){
printf("输入不合法:\n");
continue;
}
else if (arr[row][col] == 'o' || arr[row][col] == 'x'){
printf("该位置已经落子:\n");
continue;
}
else if (arr[row][col] == ' '){
arr[row][col] = 'x';
}
break;
}
}
这是玩家的落子代码
void game(){
int num1 = 0;
int num2 = 0;
for (int i = 0; i < 3; i++){
for (int j = 0; j < 3; j++){
arr[i][j] =' ';
printf("%c", arr[i][j]);
}
printf("\n");
}
while (2){
man();
if ((arr[0][0]==arr[0][1]&&arr[0][0]==arr[0][2]&&arr[0][0] == 'x') || (arr[1][0] == arr[1][1]&&arr[1][0] == arr[1][2]&&arr[1][0] == 'x')
|| (arr[2][0] == arr[2][1]&&arr[2][0] == arr[2][2]&&arr[2][0] == 'x' )|| (arr[0][0] == arr[1][0]&&arr[0][0] == arr[2][0]&&arr[0][0] == 'x') ||
(arr[0][1] == arr[1][1] &&arr[0][1]== arr[2][1]&&arr[0][1] == 'x') || (arr[0][2] == arr[1][2]&&arr[0][2] == arr[2][2]&&arr[0][2] == 'x' )||( arr[0][0] == arr[1][1]&&arr[0][0] == arr[2][2]&&arr[0][0] == 'x') || ( arr[0][2] == arr[1][1]&&arr[0][2] == arr[2][0] &&arr[0][2]== 'x')){
printf("游戏结束,你赢了!\n");
for (int i = 0; i < 3; i++){
for (int j = 0; j < 3; j++){
printf(" | ");
printf("%c", arr[i][j]);
}
printf(" |");
printf("\n");
if (i < 2){
printf(" -------------");
}
printf("\n");
}
break;
}
for (int i = 0; i < 3; i++){
for (int j = 0; j < 3; j++){
if (arr[i][j] == 'x' || arr[i][j] == 'y'){
num1++;
}
}
}
if (num1 == 9){
printf("和棋\n");
break;
}
computer();
if ((arr[0][0] == arr[0][1] && arr[0][0] == arr[0][2] && arr[0][0] == 'o') || (arr[1][0] == arr[1][1] && arr[1][0] == arr[1][2] && arr[1][0] == 'o')
|| (arr[2][0] == arr[2][1] && arr[2][0] == arr[2][2] && arr[2][0] == 'o') || (arr[0][0] == arr[1][0] && arr[0][0] == arr[2][0] && arr[0][0] == 'o') ||
(arr[0][1] == arr[1][1] && arr[0][1] == arr[2][1] && arr[0][1] == 'o') || (arr[0][2] == arr[1][2] && arr[0][2] == arr[2][2] && arr[0][2] == 'o') || (arr[0][0] == arr[1][1] && arr[0][0] == arr[2][2] && arr[0][0] == 'o') || (arr[0][2] == arr[1][1] && arr[0][2] == arr[2][0] && arr[0][2] == 'o')){
printf("游戏结束,电脑赢!\n");
for (int i = 0; i < 3; i++){
for (int j = 0; j < 3; j++){
printf(" | ");
printf("%c", arr[i][j]);
}
printf(" |");
printf("\n");
if (i < 2){
printf(" -------------");
}
printf("\n");
}
break;
}
for (int i = 0; i < 3; i++){
for (int j = 0; j < 3; j++){
if (arr[i][j] == 'x' || arr[i][j] == 'y'){
num2++;
}
}
}
if (num2 == 9){
printf("和棋\n");
break;
}
}
}
这是游戏是否结束的逻辑判断,胜负以及和棋的判断。
这就是一个简单的三子棋小游戏哈哈哈。