当前位置: 首页 > news >正文

网站设计模板是什么用宝塔做网站步骤

网站设计模板是什么,用宝塔做网站步骤,自己怎样建立网站,高唐做网站建设公司目录 1.创建项目 2.主函数编写 3.菜单函数编写 4.宏定义棋盘行和列 5.棋盘初始化 6.打印棋盘 7.玩家下棋 8.电脑下棋 9.平局判断 10.输赢判断 11.game函数 三子棋游戏#xff08;通过改变宏定义可以变成五子棋#xff09;#xff0c;玩家与电脑下棋 1.创建项目…目录 1.创建项目 2.主函数编写 3.菜单函数编写 4.宏定义棋盘行和列 5.棋盘初始化 6.打印棋盘 7.玩家下棋 8.电脑下棋 9.平局判断  10.输赢判断 11.game函数 三子棋游戏通过改变宏定义可以变成五子棋玩家与电脑下棋 1.创建项目 新建项目并在源文件中添加test.c、game.c文件在头文件中添加game.h文件。 2.主函数编写 int main() {srand((unsigned int)time(NULL));//设置随机数的生成起点int input 0;do{menu();//菜单打印printf(请选择\n);scanf(%d, input);switch (input){case 1:printf(开始游戏\n);game();break;case 0:printf(退出游戏\n);break;default:printf(选择错误\n);}} while (input);return 0; } 3.菜单函数编写 打印菜单栏 //菜单打印 void menu() {printf(******* 三子棋 ******\n);printf(*****1. play 0. exit*****\n);printf(************************\n);} 4.宏定义棋盘行和列 通过更改ROW、COL后面数字可以改变棋盘的行列。改变CON后面的数组可以更改为棋数限制可以改成4子棋五子棋。 #define ROW 3 #define COL 3 #define CON 3 5.棋盘初始化 初始化棋盘使棋盘内容为”空“ //棋盘初始化 void board_Init(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] ;}} } 6.打印棋盘 第一种写法这种写法将行和列写死了后续无法通过宏定义控制行列。 //打印棋盘 //第一个版本 void board_Display(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);} }版本二 用循环的方式写这种方法可以使用宏定义棋盘数 //打印棋盘Mark2 void board_Display2(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]);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){//printf(---|---|---\n);int j 0;for (j 0; j col; j){printf(---);if (j col - 1)printf(|);}printf(\n);}} } 7.玩家下棋 //玩家下棋 void Player_move(char board[ROW][COL], int row, int col) {int x 0;int y 0;printf(玩家下棋\n);while (1){printf(玩家请选择下棋位置\n);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] *;break;}elseprintf(坐标已被占用请重新选择位置\n);}elseprintf(坐标非法请重新输入\n);} } 8.电脑下棋 //电脑下棋 //找没有下棋的位置随机下棋 void Computer_move(char board[ROW][COL], int row, int col) {printf(电脑下棋\n);int x 0;int y 0;while (1){x rand() % row;//0-2y rand() % col;//0-2if (board[x][y] ){board[x][y] #;break;}}} 9.平局判断 //平局判断 //满了返回1 //不满返回0 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; } 10.输赢判断 方案一这种判断方法不能用宏定义更改行列。将程序写死了。 //判断输赢 // //玩家赢-* //电脑赢-# //平局-Q //游戏继续-c // char IsWin(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];}//列int j 0;for (j 0; j col; j){if (board[0][j] board[1][j] board[1][j] board[2][j] board[1][j] ! ){return board[1][j];}}//对角线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];}//平局if (IsFull(board,row,col)){return Q;}//游戏继续return C; } 方案二 这种方法可以使用宏定义通过更改count的值来更改棋数限制可以改成四子棋五子棋。 //判断输赢Mark2 char IsWin2(char board[ROW][COL], int row, int col, char tmp)//判断输赢返回字符 {int i 0;int j 0;int count 0;//判断行for (i 0; i ROW; i)//判断是否有三个字符相同{int count 0;for (j 0; j COL; j){if (board[i][j] ! tmp)//有一个不同就break跳出本次循环break;elsecount;//有一个相同count就1if (count CON)//当count等于3时就代表一行中有三个相同return tmp;//当一行中有三个相同的字符时就代表该字符所对应的赢了返回该字符}}//判断列for (j 0; j COL; j)//同理判断一列中是否有三个字符相同{int count 0;for (i 0; i ROW; i){if (board[i][j] ! tmp)break;elsecount;if (count CON)return tmp;}}//判断//*// *// * //对角线方向for (count 0, i 0; i ROW; i)//判断从左往右的直线三个字符是否相同{if (board[i][i] ! tmp)break;elsecount;if (count CON)return tmp;}//判断// *// *//*//对角线方向for (count 0, j COL - 1, i 0; j 0, i ROW; j--, i)//判断从左往右的直线{if (board[i][j] ! tmp)break;elsecount;if (count CON)return tmp;}//平局if (IsFull(board, row, col)){return Q;}//游戏继续return C; } 11.game函数 game() {char ret 0;char board[ROW][COL] { 0 };//棋盘初始化board_Init(board,ROW ,COL );board_Display2(board, ROW, COL);//下棋while (1){//玩家下棋Player_move(board,ROW,COL);//判断输赢//ret IsWin(board,ROW,COL);ret IsWin2(board, ROW, COL, *);if (ret ! C){break;}board_Display2(board, ROW, COL);//电脑下棋Computer_move(board, ROW, COL);//判断输赢//ret IsWin(board, ROW, COL);ret IsWin2(board, ROW, COL, #);if (ret ! C){break;}board_Display2(board, ROW, COL);}if (ret *){printf(玩家赢\n);}else if (ret #){printf(电脑赢\n);}else{printf(平局\n);}board_Display2(board, ROW, COL); } 12.源程序代码 test.c文件代码 #define _CRT_SECURE_NO_WARNINGS 1 #include stdio.h #include game.hgame() {char ret 0;char board[ROW][COL] { 0 };//棋盘初始化board_Init(board,ROW ,COL );board_Display2(board, ROW, COL);//下棋while (1){//玩家下棋Player_move(board,ROW,COL);//判断输赢//ret IsWin(board,ROW,COL);ret IsWin2(board, ROW, COL, *);if (ret ! C){break;}board_Display2(board, ROW, COL);//电脑下棋Computer_move(board, ROW, COL);//判断输赢//ret IsWin(board, ROW, COL);ret IsWin2(board, ROW, COL, #);if (ret ! C){break;}board_Display2(board, ROW, COL);}if (ret *){printf(玩家赢\n);}else if (ret #){printf(电脑赢\n);}else{printf(平局\n);}board_Display2(board, ROW, COL); }//菜单打印 void menu() {printf(******* 三子棋 ******\n);printf(*****1. play 0. exit*****\n);printf(************************\n);}int main() {srand((unsigned int)time(NULL));//设置随机数的生成起点int input 0;do{menu();//菜单打印printf(请选择\n);scanf(%d, input);switch (input){case 1:printf(开始游戏\n);game();break;case 0:printf(退出游戏\n);break;default:printf(选择错误\n);}} while (input);return 0; } game.c文件代码 #define _CRT_SECURE_NO_WARNINGS 1 #include game.h//棋盘初始化 void board_Init(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 board_Display(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);} }//打印棋盘Mark2 void board_Display2(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]);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){//printf(---|---|---\n);int j 0;for (j 0; j col; j){printf(---);if (j col - 1)printf(|);}printf(\n);}} }//玩家下棋 void Player_move(char board[ROW][COL], int row, int col) {int x 0;int y 0;printf(玩家下棋\n);while (1){printf(玩家请选择下棋位置\n);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] *;break;}elseprintf(坐标已被占用请重新选择位置\n);}elseprintf(坐标非法请重新输入\n);} }//电脑下棋 //找没有下棋的位置随机下棋 void Computer_move(char board[ROW][COL], int row, int col) {printf(电脑下棋\n);int x 0;int y 0;while (1){x rand() % row;//0-2y rand() % col;//0-2if (board[x][y] ){board[x][y] #;break;}}}//平局判断 //满了返回1 //不满返回0 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; }//判断输赢 // //玩家赢-* //电脑赢-# //平局-Q //游戏继续-c // char IsWin(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];}//列int j 0;for (j 0; j col; j){if (board[0][j] board[1][j] board[1][j] board[2][j] board[1][j] ! ){return board[1][j];}}//对角线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];}//平局if (IsFull(board,row,col)){return Q;}//游戏继续return C; }//判断输赢Mark2 char IsWin2(char board[ROW][COL], int row, int col, char tmp)//判断输赢返回字符 {int i 0;int j 0;int count 0;//判断行for (i 0; i ROW; i)//判断是否有三个字符相同{int count 0;for (j 0; j COL; j){if (board[i][j] ! tmp)//有一个不同就break跳出本次循环break;elsecount;//有一个相同count就1if (count CON)//当count等于3时就代表一行中有三个相同return tmp;//当一行中有三个相同的字符时就代表该字符所对应的赢了返回该字符}}//判断列for (j 0; j COL; j)//同理判断一列中是否有三个字符相同{int count 0;for (i 0; i ROW; i){if (board[i][j] ! tmp)break;elsecount;if (count CON)return tmp;}}//判断//*// *// * //对角线方向for (count 0, i 0; i ROW; i)//判断从左往右的直线三个字符是否相同{if (board[i][i] ! tmp)break;elsecount;if (count CON)return tmp;}//判断// *// *//*//对角线方向for (count 0, j COL - 1, i 0; j 0, i ROW; j--, i)//判断从左往右的直线{if (board[i][j] ! tmp)break;elsecount;if (count CON)return tmp;}//平局if (IsFull(board, row, col)){return Q;}//游戏继续return C; } game.h文件代码 #include stdio.h #include stdlib.h #include time.h #define ROW 3 #define COL 3 #define CON 3 //棋盘初始化 void board_Init(char board[ROW][COL], int row, int col); //打印棋盘 void board_Display(char board[ROW][COL], int row, int col); //玩家下棋 void Player_move(char board[ROW][COL], int row, int col); //电脑下棋 void Computer_move(char board[ROW][COL], int row, int col); //判断输赢 char IsWin(char board[ROW][COL], int row, int col); char IsWin2(char board[ROW][COL], int row, int col, char tmp); 13.结语 以上就是用C语言做的简单的三子棋游戏这个不止是三子棋游戏可以通过更改宏定义让他变成五子棋等等缺点是对手电脑是用随机数生成的它所下的位置是随机的所以我们想输都难后续可以尝试写一个让电脑聪明点的函数体验会更好一些。
http://www.dnsts.com.cn/news/74300.html

相关文章:

  • 山西免费网站关键词优化排名中山网站建设是什么意思
  • 做的怎样 英文网站h5教程
  • 物流门户网站源码办公室装修设计图纸
  • 做网站一定要用ps吗肇庆软件建网站公司
  • 戒赌网站怎么做wordpress目录
  • 一般网站设计多大宽度北京发布最新消息今天
  • 网站建设和优化需要几个人江苏省住房和建设部网站首页
  • 建设网站服务器网站源码下载 app
  • 企业网站建设实验报告网络项目分享平台
  • 北京市网站备案查询企业网站建设综合实训学习体会
  • 长春网站排名推广品牌建设项目申报
  • 十堰做网站排名wordpress1.0下载
  • 青岛福瀛建设集团有限公司网站icp备案网站名称是什么意思
  • 网站开发精品课程钢材料 网站建设 中企动力
  • 做网站需要做什么好用的h5网站模板
  • 衡水网站制作多少钱深圳网站建设服务找哪家
  • 自做网站教程高校网站建设存在的问题
  • 什么是网站建设?如何开发wordpress子主题
  • 阳江北京网站建设如何自学软件开发
  • 商业网站建设案例课程 下载公司网站开发需要什么证书
  • wordpress 用户站点wordpress虚拟目录图片打不开
  • 网站标题图片怎么做关于公司网站建设的请示
  • 苏州高端网站开发邯郸网站建设恋家
  • 素材网站官网wordpress播放器问题
  • 成都网站建设免费咨询成都建设网站分享
  • 邢台地区网站建设济南公司制作网站
  • 网站美食建设图片素材做家教中介网站赚钱吗?
  • 烟台建站程序大型农村电商平台
  • 山东钢结构建设局网站绍兴关键词排名工具
  • 网页版html编辑器上海网站seo招聘