本文是用C语言写的N子棋小游戏
头文件:
代码语言:javascript复制#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#define H 3//行
#define L 3//列
void blank_borad(char board[H][L], int h, int l);//初始化棋盘
void print(char board[H][L], int h, int l);//打印棋局
void play_game(char board[H][L], int h, int l);//玩家下棋
void computer_game(char board[H][L], int h, int l);//电脑下棋
char is_win(char board[H][L], int h, int l);//判断输赢
函数功能的实现:
代码语言:javascript复制#include"game.h"
char is_win(char board[H][L], int h, int l)//判断输赢
{
/* | |
---|---|---
| |
---|---|---
| | */
int jade = 0;
int i = 0;
int j = 0;
//行 -> win
for (j = 0;j < h;j )
{
jade = 0;
for (i = 1;i < l;i )
{
if (board[j][0] == board[j][i]
&& board[j][0] != ' ')
{
jade ;
}
}
if (jade == l - 1)
{
return board[j][0];
}
}
//列 -> win
for (i = 0;i < l;i )
{
jade = 0;
for (j = 1;j < h;j )
{
if (board[0][i] == board[j][i]
&& board[0][i] != ' ')
{
jade ;
}
}
if (jade == h - 1)
{
return board[0][i];
}
}
//左对角线
jade = 0;
for (i=1,j=1;(i<h)&&(j<l);i ,j )
{
if ((board[0][0] == board[i][j])
&& (board[0][0] != ' '))
{
jade ;
}
}
if (jade == h-1 || jade==l-1)
{
return board[0][0];
}
//右对角线
jade = 0;
for (i=1,j=l-2;(i < h) && (j>=0);i ,j--)
{
if ((board[0][l-1] == board[i][j])
&& (board[0][l-1] != ' '))
{
jade ;
}
}
if (jade == h-1 || jade == l-1)
{
return board[0][l-1];
}
//平局
jade = 0;
for (j = 0;j < h;j )
{
for (i = 0;i < l;i )
{
if (board[j][i] != ' ')
{
jade ;
}
}
}
if (jade==l*h)
{
return 'Z';
}
}
void computer_game(char board[H][L], int h, int l)//电脑下棋
{
int i = 0;
int j = 0;
printf("电脑下棋:n");
while (1)
{
i = rand() % h;
j = rand() % l;
if (board[i][j] == ' ')
{
board[i][j] = '#';
break;
}
}
}
void play_game(char board[H][L], int h, int l)//玩家下棋
{
int i = 0;
int j = 0;
printf("玩家下棋,请输入选择下的棋的坐标:");
while (1)
{
scanf("%d %d", &i, &j);
//玩家不知道下标从0开始
i -= 1;
j -= 1;
if (board[i][j] == ' ')
{
board[i][j] = '*';
break;
}
else
{
printf("输入的该坐标非法,请重新输入:");
}
}
}
void print(char board[H][L], int h, int l)//打印棋局
{
/* | |
---|---|---
| |
---|---|---
| | */
int i = 0;
int j = 0;
for (j = 0;j < h;j )
{
for (i = 0;i < l-1;i )
{
printf(" %c |", board[j][i]);
if (i==l-2)
{
printf(" %c n", board[j][i 1]);
}
}
if (j < h-1)
{
for (i = 0;i < l - 1;i )
{
printf("---|");
if (i == l - 2)
{
printf("---n");
}
}
}
}
}
void blank_borad(char board[H][L], int h, int l)//初始化棋盘
{
int i = 0;
int j = 0;
for (i = 0;i < h;i )
{
for (j = 0;j < l;j )
{
board[i][j] = ' ';
}
}
}
主函数代码:
代码语言:javascript复制#include"game.h"
void menu1();//选择界面
void test();//选择函数
void Game();//三子棋游戏运行函数
void menu2();//再次选择玩游戏函数
void Game()
{
srand((unsigned int)time(NULL));
system("cls");
printf("ttt欢迎来到三子棋游戏!!!nnn");
char win;
char board[H][L];
//初始化棋盘
blank_borad(board, H, L);
//打印空白棋局
print(board, H, L);
while (1)
{
//玩家下棋
play_game(board, H, L);
//打印棋局
print(board, H, L);
//判断输赢
win = is_win(board, H, L);
if (win == '*')
{
printf("玩家胜利");
break;
}
else if (win == '#')
{
printf("电脑胜利");
break;
}
else if (win == 'Z')
{
printf("平局");
break;
}
//电脑下棋
computer_game(board, H, L);
//打印棋局
print(board, H, L);
//判断输赢
win = is_win(board, H, L);
if (win == '*')
{
printf("玩家胜利");
break;
}
else if (win == '#')
{
printf("电脑胜利");
break;
}
else if (win == 'Z')
{
printf("平局");
break;
}
}
}
void test()//选择函数
{
int choice = 0;
do
{
scanf("%d", &choice);
switch (choice)
{
case 1:
Game();//三子棋游戏运行函数
break;
case 2:
printf("已退出游戏....n");
break;
default:
printf("输入错误,请重新选择:");
break;
}
if (choice==1)
{
menu2();//再次选择玩游戏函数
}
} while (choice != 2);
}
void menu2()//再次选择玩游戏函数
{
printf("t您是否再玩一轮三子棋游戏?n");
printf("t 1.play 2.exitn");
}
void menu1()//选择界面
{
printf("t***********************************n");
printf("t********欢迎来到三子棋游戏*********n");
printf("t***** 请选择: 1.play 2.exit ******n");
printf("t***********************************n");
}
int main()
{
menu1();//选择界面
test();//选择函数
return 0;
}
这篇博客如果对你有帮助,给博主一个免费的点赞以示鼓励,欢迎各位