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

咖啡网站设计建设佛山网站建设怎么选

咖啡网站设计建设,佛山网站建设怎么选,wordpress的icon,坪山手机网站建设三子棋 前言一#xff0c;游戏规则二#xff0c;所需文件三#xff0c;创建菜单四#xff0c;游戏核心内容实现1.棋盘初始化1.棋盘展示3.玩家下棋4.电脑下棋5.游戏胜负判断6.game#xff08;#xff09;函数内部具体实现 四#xff0c;游戏运行实操 前言 C语言实现三子棋… 三子棋 前言一游戏规则二所需文件三创建菜单四游戏核心内容实现1.棋盘初始化1.棋盘展示3.玩家下棋4.电脑下棋5.游戏胜负判断6.game函数内部具体实现 四游戏运行实操 前言 C语言实现三子棋是对大家对数组函数循环与分支等内容的考察。通过本篇文章你将学会如何制作出三子棋坚持一段时间的复习相信你肯定能够掌握三子棋**文末附三子棋全部代码.** 一游戏规则 设计游戏前先了解三子棋基本规则以围绕规则用C语言实现 1、人机双方轮流在格子里落子棋子先连成三棋一线者视为胜利 2、棋盘被摆满棋子仍未分出胜利视为平局 二所需文件 三子棋并不是一项容易的代码需要我们进行分文件编写。 什么是分文件编写 就是把我们的程序代码划分成多个文件这样就不会把所有的代码都放在main.c里面采用分模块的编程思想进行功能划分把每个功能不一样的单独放在一个c文件里然后写头文件把它封装成可调用的一个函数在主函数调用这个封装好的函数编译的时候一起编译即可 好处 a.功能责任划分 b.方便调试 c.主程序简洁 来让给我们看看具体操作如下 头文件中创建game.h ----用来声明函数 源文件中创建game.c—函数具体实现 / test.c—主题流程 三创建菜单 先创建一个菜单以展示进入退出游戏功能 void menu() {printf(**********************\n);printf(****** 1.play ******\n);printf(****** 0.exit ******\n);printf(**********************\n); }用do…while循环实现菜单使用switch语句进行菜单选择 int main() {int input 0;do{menu();printf(请输入选项);scanf(%d, input);switch (input){case 1:game();break;case 0:printf(退出游戏\n);break;default:printf(选择错误重新选择\n);break;}} while (input);return 0; }四游戏核心内容实现 game函数中实现整个游戏先数组棋盘 char board[ROW][COL]; 1.棋盘初始化 在game.h中定义行和列为3 #define ROW 3 #define COL 3在game.h中声明初始化函数Initboard //初始化棋盘 void Initboard(char board[ROW][COL], int row, int col);在game.c中实现初始化函数创造三行三列的空格 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] ;}} }期盼初始化完成。 1.棋盘展示 初始化完棋盘需要将棋盘打印在键盘上 在game.文件中声明打印棋盘 //打印棋盘 void Displayboard(char board[ROW][COL], int row, int col);在game.c文件中实现棋盘打印函数 void DisplayBoard(char board[ROW][COL], int row, int col) {int i 0;int j 0;for (i 0; i row; i){//先打印数据printf( %c | %c | %c \n, board[i][0], board[i][1], board[i][2]);//再打印分割行if(irow-1)printf(---|---|---\n);} }棋盘打印完成 3.玩家下棋 在game.h声明玩家下棋函数 //玩家下棋 void Playermove(char board[ROW][COL], int row, int col);在game.h中实现玩家下棋函数。玩家所在下棋子不能出棋盘否则坐标非法重新下所下棋子必须在无棋子格子中否则坐标备占有重新下while实现玩家下错棋子重新下直到下正确退出循环 void PlayerMove(char board[ROW][COL], int row, int col) {int x 0;int y 0;printf(玩家下棋\n);while (1){printf(请输入要下棋的坐标:);scanf(%d %d, x, y);if (x 1 x row y 1 y col){if (board[x-1][y-1] )//数组下标从0开始所以横纵坐标各减一{board[x - 1][y - 1] *;break;}else{printf(该坐标被占有请输入其他坐标\n);}}else{printf(坐标非法请重新输入\n);}} }玩家下棋完成。 4.电脑下棋 在game.h声明电脑下棋函数 //电脑下棋 void Computermove(char board[ROW][COL], int row, int col);在game.c文件中实现电脑下棋函数。电脑随机下棋需要随机坐标引头文件#include stdlib.h随机数生成需要头文件#include time.h。将电脑所下棋控制在棋盘内然后判断是否下在空棋盘内否则重下while实现玩家下错棋子重新下直到下正确退出循环 void Computermove(char board[ROW][COL], int row, int col) {printf(电脑开始下棋\n);int x 0;int y 0;while (1){x rand() % row;y rand() % col;if (board[x][y] ){board[x][y] #;break;}} }5.游戏胜负判断 在game.h中声明胜负判断函数。 //判断输赢 char IsWin(char board[ROW], int row, int col);在game.c中实现胜负判断函数。每次下棋结果共有四种1.玩家嬴2.电脑嬴3.平局4.继续游戏 for循环实现行列三点成直线if判断玩家或电脑三点成直线打印‘ * ’或‘ # ’ 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][0] board[i][0] board[i][2] ! )//行连成线{return board[i][0];}}for(i 0; i col; i){if (board[0][i] board[1][i] board[1][i] board[2][i] board[0][i] board[2][i] board[0][i] ! )//列连成线{return board[i][0];}}if (board[0][0] board[1][1] board[1][1] board[2][2] board[0][0] board[2][2] board[0][0] ! )//斜方连成线{return board[0][0];}if (board[2][0] board[1][1] board[1][1] board[0][2] board[0][2] board[2][0] board[1][1] ! )//斜方连成线{return board[1][1];}if (isFull(board, ROW, COL)){return Q;}return C; }嵌套平局函数在game.h中。若所有坐标被占满坐标都不为空平局函数返回真判断胜负函数返回Q平局。若坐标有空平局函数返回假在判断胜负函数中返回C继续游戏 static 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; }6.game函数内部具体实现 创建数组char board[ROW][COL];调用初始化棋盘(Initboard(board, ROW, COL))和打印棋盘Displayboard(board, ROW, COL)函数while循环实现电脑和玩家相互下棋用ret接受胜负结果如果不是继续游戏C则跳出循环。若结果为玩家*则玩家嬴若结果为电脑#则电脑应否则结果为平局。 void game() {int ret 0;char board[ROW][COL];Initboard(board, ROW, COL);Displayboard(board, ROW, COL);while (1){Playermove(board, ROW, COL);Displayboard(board, ROW, COL);ret IsWin(board, ROW, COL);if (ret ! C){break;}Computermove(board, ROW, COL);Displayboard(board, ROW, COL);ret IsWin(board, ROW, COL);if (ret ! C){break;}}if (ret *){printf(玩家嬴\n);}else if (ret #){printf(电脑嬴\n);}else{printf(平局\n);} }四游戏运行实操 1.运行程序出现菜单 1.选择1开始玩游戏出现棋盘 2.输入下棋位置开始下棋 3.棋子没有落在空位置重新下棋 4出现三点成直线获得胜利 5若棋盘下满则平局 6.选择0退出游戏 完整代码: game.h #pragma once#include stdio.h #include time.h #include stdlib.h#define ROW 3 #define COL 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); //判断输赢 char IsWin(char board[ROW], int row, int col); game.c #define _CRT_SECURE_NO_WARNINGS 1 #includegame.hvoid 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;int j 0;for (i 0; i row; i){for (j 0; j col; j){printf( %c , board[i][j]);if (j col - 1)printf(|);}printf(\n);if (i row - 1){for (j 0; j col; j){printf(---);if (j col - 1)printf(|);}}printf(\n);} } void Playermove(char board[ROW][COL], int row, int col) {int x 0;int y 0;printf(玩家要下棋:\n);while (1){printf(请输入下棋位置);scanf(%d %d, x, y);if (x 1 x row y1 y col){if (board[x - 1][y - 1] ){board[x - 1][y - 1] *;break;//跳出循环}else{printf(所输入位置被占用,请输入其他坐标\n);}}else{printf(输错位置,请重新输入\n);}} } void Computermove(char board[ROW][COL], int row, int col) {printf(电脑开始下棋\n);int x 0;int y 0;while (1){x rand() % row;y rand() % col;if (board[x][y] ){board[x][y] #;break;}} } static 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; } 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][0] board[i][0] board[i][2] ! ){return board[i][0];}}for(i 0; i col; i){if (board[0][i] board[1][i] board[1][i] board[2][i] board[0][i] board[2][i] board[0][i] ! ){return board[i][0];}}if (board[0][0] board[1][1] board[1][1] board[2][2] board[0][0] board[2][2] board[0][0] ! ){return board[0][0];}if (board[2][0] board[1][1] board[1][1] board[0][2] board[0][2] board[2][0] board[1][1] ! ){return board[1][1];}if (isFull(board, ROW, COL)){return Q;}return C; }test.c #define _CRT_SECURE_NO_WARNINGS 1 #includegame.h //创建菜单 void menu() {printf(**********************\n);printf(****** 1.play ******\n);printf(****** 0.exit ******\n);printf(**********************\n); } //创建游戏 void game() {int ret 0;char board[ROW][COL];Initboard(board, ROW, COL);Displayboard(board, ROW, COL);while (1){Playermove(board, ROW, COL);Displayboard(board, ROW, COL);ret IsWin(board, ROW, COL);if (ret ! C){break;}Computermove(board, ROW, COL);Displayboard(board, ROW, COL);ret IsWin(board, ROW, COL);if (ret ! C){break;}}if (ret *){printf(玩家嬴\n);}else if (ret #){printf(电脑嬴\n);}else{printf(平局\n);} } int main() {int input 0;srand((unsigned int)time(NULL));do{menu();printf(请输入选项);scanf(%d, input);switch (input){case 1:game();break;case 0:printf(退出游戏\n);break;default:printf(选择错误重新选择\n);break;}} while (input);return 0; }本次三子棋学习告一段落三子棋详解完整代码反复阅读坚持打码相信你在不久的将来就会拿下三子棋以扩展更高级代码。期待下次作品与大家见面
http://www.sadfv.cn/news/222256/

相关文章:

  • 网站建设应该注意哪些广州系统开发公司
  • 网站怎么做自然优化荣耀商城手机官网
  • 海淀区网站备案去哪wordpress连接微信订阅号
  • 如何做与别人的网站一样的做的好看的旅游网站
  • 建设网站群电商平台市场调研报告
  • 台州网站开发公司产品策划书模板
  • 腾讯云网站搭建流程传播文化有限公司网站建设
  • asp 大型网站开发沈阳哪有做网站的
  • 做网站需要每年交钱吗久久建筑网登录
  • 有关学校网站建设策划书网页设计作业假面骑士
  • 社交网站开发公司自建站平台
  • 甘肃住房与城乡建设厅网站毕业设计做视频网站
  • 承德企业网站建设网站建设相关的书籍
  • 平凉哪家做企业网站织梦模板大全
  • 免费服装网站模板青少年编程培训教育
  • 网站栏目结构设计建筑360网
  • 伊犁做网站网站文件夹目录结构
  • 室内设计方案网站高端网吧设备
  • 黑龙江学校网站建设网站快速注册
  • 做网站郑州汉狮wordpress企业网站制作
  • 网站的中英文切换怎么做永康网站建设zjyuxun
  • 国外网站dns改成什么快网站开发设计培训价格
  • 网站开发翻译插件wordpress淘点金
  • 怎么做木马网站品牌设计案例网站
  • 新乡市建设局网站网址导航推广
  • wordpress打开超级慢芜湖做网站优化
  • 免费企业名录网站成都建设网官方网站
  • 湖南省建设安监局官网站翠竹营销网站设计
  • 淘宝加盟网站建设视频直播怎么赚钱的
  • 微盟网站模板网站每年空间域名费用及维护费