用C语言实现简单 三子棋(井字棋)小游戏
2018-10-16 01:14
751 查看
函数头
放在头文件里
#ifndef __GAME_H__ #define __GAME_H__ #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h> #define ROW 3 //行为3 #define COL 3 //列为3 void InitBoard(char board[ROW][COL],int row,int col);//初始化棋盘的函数 void DisplayBoard(char board[ROW][COL],int row,int col);//打印棋盘函数 void PlayerMove(char board[ROW][COL],int row,int col);//玩家出棋函数 void ComputerMove(char board[ROW][COL],int row,int col);//电脑出棋函数 int IsFull(char board[ROW][COL],int row,int col);//判断棋盘是否满棋 int IsWin(char board[ROW][COL],int row,int col); void game(); #endif //__GAME_H__
主函数
选择1进入游戏函数 开始游戏
选择零 则退出游戏
#define _CRT_SECURE_NO_WARNINGS 1 #include"game.h" void mune() { printf("\n\n\n█████████████████████\n"); printf("█████ 经典③子棋游戏 ████\n"); printf("█████████████████████\n"); printf("███████ 1.开始游戏 ██████\n"); printf("███████ 0.退出游戏 ██████\n"); printf("█████████████████████\n"); } int main() { int input = 0; do { srand((unsigned int)time(NULL));//生成随机数函数 mune( );//游戏菜单函数 printf("请输入数字进行选择:\n"); scanf("%d",&input); switch(input) { case 1: game( ); break; case 0: printf("退出游戏!"); break; default: printf("输入错误,请重新输入:\n"); } }while(input); return 0; }
游戏函数
初始化棋盘函数————打印原始棋盘函数————电脑出棋函数—与—玩家出棋函数(循环调用每调用一次判断一次输赢)————判断输赢函数(中间嵌套判断是否棋盘已满的函数决定平局)
#define _CRT_SECURE_NO_WARNINGS 1 #include"game.h" void game() { char ret = '0'; char board[ROW][COL] = {0};//创建二维数组 InitBoard(board,ROW,COL);//调用初始化棋盘的函数 DisplayBoard(board,ROW,COL);//打印原始棋盘 //下棋过程 do { printf("▁▂▃电脑已出棋~该您出棋啦▃▂▁\n"); ComputerMove(board,ROW,COL);//电脑出棋 DisplayBoard(board,ROW,COL);//打印棋盘显示电脑出的棋 ret = IsWin(board,ROW,COL);//根据判断输赢函数的返回值来决定谁赢谁输 if(ret !=' ') //返回空格继续下棋返回0电脑赢,返回x玩家赢 { //返回空格继续下棋 返回p为平局 break; } PlayerMove(board,ROW,COL);//到玩家出棋 DisplayBoard(board,ROW,COL);//打印棋盘 ret = IsWin(board,ROW,COL); if(ret !=' ') { break; } }while(ret = ' '); //不等于空格跳出后判断谁赢 ret = IsWin(board,ROW,COL); if(ret == 'p') { printf("\n▁▂▃恭喜您和聪明的电脑打成平手啦▃▂▁\n"); } else if(ret == '0') { printf("\n▁▂▃很遗憾~电脑取得了胜利▃▂▁\n"); } else if(ret == 'X') { printf("\n▁▂▃恭喜您取得了胜利~再接再厉哦▃▂▁\n"); } } 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] = ' '; } } } void DisplayBoard(char board[ROW][COL],int row,int col) { int i = 0; for(i = 0;i<row;i++) { printf(" %c ┃ %c ┃ %c \n",board[i][0],board[i][1],board[i][2]); if(i != row-1) { printf("━━━┃━━━┃━━━\n"); } } } void ComputerMove(char board[ROW][COL],int row,int col) { while(1) { int x = rand() % row; int y = rand() % col; if(board[x][y] == ' ') { board[x][y] = '0'; break; } } } void PlayerMove(char board[ROW][COL],int row,int col) { int x = 0; int y = 0; while(1) { printf("请输入一个坐标:"); scanf("%d%d",&x,&y); if((x >= 1)&&(x <= row)&&(y >= 1)&&(y <= col)) { if( board[x-1][y-1] == ' ') { board[x-1][y-1] = 'X'; break; } else { printf("抱歉~您输入的坐标已经被电脑抢先了一步,请重新输入\n"); } } else { printf("您输入的坐标已经超出棋盘的范围啦~请重新输入哦\n"); } } } int IsWin(char board[ROW][COL],int row,int col) { int i = 0; int j = 0; for(i = 0;i<row;i++) { if(board[i][0] == board[i][1]&&board[i][1] == board[i][2]&&board[i][0] != ' ') { return board[i][0]; } } for(j = 0;j<col;j++) { if(board[0][j] == board[1][j]&&board[1][j] == board[2][j]&&board[0][j] != ' ') { return board[0][j]; } } if(board[0][0] == board[1][1]&&board[1][1] == board[2][2]&&board[0][0] != ' ') { return board[0][0]; } else if(board[2][0] == board[1][1]&&board[1][1] == board[0][2]&&board[2][0] != ' ') return board[2][0]; else if(IsFull(board,row,col)) return 'p'; else return ' '; } int IsFull(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; }阅读更多
相关文章推荐
- 用C语言实现简单的三子棋小游戏
- C语言实现简单的三子棋小游戏
- 小游戏 | 井字棋(三子棋)的C语言实现
- C语言实现简单的三子棋小游戏
- 用c语言实现三子棋小游戏
- C语言实现三子棋小游戏
- 小游戏——三子棋(C语言实现)
- c语言简单实现三子棋(五子棋)
- c语言简单实现三子棋
- C语言实现简单的三子棋小程序
- c语言小程序之三子棋小游戏的实现
- 用c语言实现简单三子棋游戏
- 用c语言简单实现三子棋游戏
- 【C语言基础】C语言三子棋的简单实现
- C语言--三子棋简单实现
- 简单c语言小游戏实现原理
- c语言实现简单的三子棋
- 简单小游戏-剪刀石头布的c语言实现
- 小游戏——三子棋(C语言实现)
- 简单的小游戏---代码实现三子棋