用C语言代码编写一个五子棋小游戏

it2023-09-17  97

五子棋: 需要的数据: 1、定义一个1515的棋盘 2、定义变量用于记录棋子的坐标 3、定义角色变量 业务逻辑: 是否需要对数据进行初始化 for( ; ; ) { 1、刷新屏幕,显示棋盘 2、落子 检查坐标是否合法,该位置不能有棋子 3、检查是否五子连珠 刷新屏幕 是:游戏胜利 4、交换角色 } 5、宣布平局,结束游戏斜体样式* 代码如下图(最后面有完整代码):

#include <stdio.h> #include <stdbool.h> #include <getch.h> #include <stdlib.h> // 定义棋盘 char board[15][15]; // 棋子坐标 char key_x = 7,key_y = 7; // 角色 char role = '@'; // 初始化棋盘 void init_board(void) { for(int i=0;i<15;i++) { for(int j=0;j<15;j++) { board[i][j] = '*'; } } } // 显示棋盘 void show_board(void) { system("clear"); for(int i=0;i<15;i++) { for(int j=0;j<15;j++) { printf(" %c",board[i][j]); } printf("\n"); } } // 落子 void get_key(void) { printf("请%c下棋\n",role); for(;;) { printf("\33[%hhd;%hhdH",key_x+1,(key_y+1)*2); switch(getch()) { case 183:key_x>0 && key_x--;break; case 184:key_x<14 && key_x++;break; case 185:key_y<14 && key_y++;break; case 186:key_y>0 && key_y--;break; case 10: if(board[key_x][key_y] == '*') { board[key_x][key_y] = role; return; } } } } //计算一个方向上有多少个相同的棋子 int count_key(int go_x,int go_y)//0 -1 { int count = 0; for(int x=key_x+go_x,y=key_y+go_y; x>=0 && y>=0 && x<15 && y<15;x+=go_x,y+=go_y) { if(role == board[x][y]) { count++; } else { break; } } return count; } // 检查五子连珠 bool check_key(void) { //左上右下 if(count_key(-1,-1) + count_key(1,1) >= 4) return true; if(count_key(-1,1) + count_key(1,-1) >= 4) return true; if(count_key(1,0) + count_key(-1,0) >= 4) return true; if(count_key(0,1) + count_key(0,-1) >= 4) return true; return false; } int main(int argc,const char* argv[]) { // 初始化棋盘 init_board(); for(;;) { // 显示棋盘 show_board(); // 落子 get_key(); // 检查五子连珠 if(check_key()) { show_board(); printf("%c胜利!!!\n",role); return 0; } // 交换角色 role = role == '@'?'$':'@'; } }
最新回复(0)