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

佛山教育平台网站建设做家装施工的网站

佛山教育平台网站建设,做家装施工的网站,最好用的免费建站平台,推广关键词排名使用C语言实现一个三子棋小游戏 涉及知识点&#xff1a;二维数组、自定义函数、自带函数库、循环、常量、动态取地址等等 一些细节点&#xff1a; 1、引入自定义头文件&#xff0c;需要用""双引号包裹文件名&#xff0c;目的是为了和官方头文件的<>区分开。…

使用C语言实现一个三子棋小游戏

涉及知识点:二维数组自定义函数自带函数库循环常量动态取地址等等

一些细节点:

1、引入自定义头文件,需要用""双引号包裹文件名,目的是为了和官方头文件的<>区分开。
#include "game.h"
2、使用rand()函数,需要先调用sand(),保证每次随机函数生成的值均不一样
3、为了使srand()拥有随机种子,可以使用时间戳函数time()作为值传入使用
4、自定义方法首字母大写,是为了和官方函数库区分开

三子棋代码如下:

效果

在这里插入图片描述

代码

函数头文件 game.h
#include <stdio.h>
#include <time.h>// 定义棋盘的行与列(二位数组的大小)
#define ROW 3
#define COL 3// 菜单打印
void Menu();
//开始游戏
void Game();// 初始化棋盘
void InitChessboard(char board[ROW][COL], int row, int col);
// 打印棋盘
void PrintBoard(char board[ROW][COL], int row, int col);
// 玩家输入
void PlayerInput(char board[ROW][COL], int row, int col);
//电脑输入
void ComputerInput(char board[ROW][COL], int row, int col);
// 判断棋局是否结束
char IsEnd(char board[ROW][COL], int row, int col);
函数主文件 game.c
#define _CRT_SECURE_NO_WARNINGS
// 引入自定义函数头文件
#include "game.h"// 菜单选项
void Menu()
{printf("***************三子棋***************\n");printf("******* 1.开始游戏 0.退出游戏 ******\n");printf("************************************\n");}// 打印棋盘
void PrintBoard(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){int k = 0;for (k = 0; k < col; k++){printf("---");if (k < col - 1){printf("|");}}printf("\n");}}printf("\n");
}// 初始化棋盘
void InitChessboard(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 PlayerInput(char board[ROW][COL], int row, int col)
{int x = 0;int y = 0;while (1){printf("玩家请下棋(格式为数字+空格+数字,按下回车确认)\n请输入坐标:");scanf("%d %d", &x, &y);// 判断玩家输入值是否超出棋盘if ((x > ROW || x < 1) || (y > COL || y < 1) ){printf("坐标值超出棋盘大小,请重新输入\n");}// 判断坐标位置是否已有棋子else if(board[x-1][y-1] !=  ' '){printf("该位置已存在棋子,请重新输入\n");}// 满足条件,可下棋else{board[x-1][y-1] = '*';// 约定:玩家下棋用*表示break;}}}// 电脑下棋
void ComputerInput(char board[ROW][COL], int row, int col)
{int x = 0;int y = 0;while (1){// 产生一个随机位置 范围[0, ROW/COL - 1]x = rand() % ROW; // 行位置y = rand() % COL; // 列位置// 因为随机数的产生做了限制,此处无须再做数值的有效性校验// 位置是否冲突校验(等于空格则认为该位置可下)if (board[x][y] == ' '){board[x][y] = '#';// 约定:电脑下棋用#表示break;}}printf("电脑下棋\n");
}// 判断棋局是否结束
char IsEnd(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][2] != ' '){return board[0][0];}}// 列int j = 0;for ( j = 0; j < COL; j++){// 有一列相同就认为完成三连if (board[0][j] == board[1][j] && board[1][j] == board[2][j] && board[2][j] != ' '){return board[0][0];}}// 斜角if ((board[0][0] == board[1][1]) && (board[1][1] == board[2][2]) && board[2][2] != ' '){return board[0][0];}if ((board[0][2] == board[1][1]) && (board[1][1] == board[2][0]) && board[2][0] != ' '){return board[0][2];}// 判断平局int x = 0;int y = 0;for (x = 0; x < ROW; x++){for (y = 0; y < COL; y++){// 但凡存在一个空格说明棋盘还有空位if (board[x][y] == ' '){return 'g'; // go on 继续}}}return 'd';// dogfall 表示平局
}void Game()
{char board[ROW][COL] = { 0 };//初始化棋盘InitChessboard(board, ROW, COL);//打印棋盘PrintBoard(board, ROW, COL);char res = 0;// 循环表示玩家和电脑依次下棋while (1){// 玩家输入PlayerInput(board, ROW, COL);// 输入完毕打印棋盘PrintBoard(board, ROW, COL);// 判断棋局是否结束res = IsEnd(board, ROW, COL);// 不为g表示有了结果,为g就继续下棋if ('g' != res){break;}//电脑输入ComputerInput(board, ROW, COL);// 输入完毕打印棋盘PrintBoard(board, ROW, COL);// 判断棋局是否结束res = IsEnd(board, ROW, COL);// 不为g表示有了结果,为g就继续下棋if ('g' != res){break;}}// 判断赢家/平局if ('*' == res){printf("玩家获胜!\n");}else if ('#' == res){printf("电脑获胜!\n");}else{printf("平局!\n");}}
main函数入口文件 test.c
#define _CRT_SECURE_NO_WARNINGS#include "game.h"int main()
{// 三子棋int a = 0;do{// srand 保证随机数每次生成均不一样srand((unsigned int)time(NULL));//打印菜单Menu();printf("请输入:");scanf("%d", &a);if (1 == a){printf("------三子棋游戏开始------\n\n");// 开始游戏Game();}else if(0 == a){printf("退出游戏\n");return;} else{printf("输出数字错误,请重新输入\n");}} while (a);return 0;
}

文章转载自:

http://Bz7pN55m.dfckx.cn
http://jZSU9T3u.dfckx.cn
http://4prbivwe.dfckx.cn
http://LPNBQSSs.dfckx.cn
http://TwfNSNHy.dfckx.cn
http://CRMxBsul.dfckx.cn
http://a5rKkNp7.dfckx.cn
http://Z7rZVx9l.dfckx.cn
http://ARhbKnNy.dfckx.cn
http://pb6CUY3n.dfckx.cn
http://jxbew23v.dfckx.cn
http://DxnQzwPm.dfckx.cn
http://9TDg0UQw.dfckx.cn
http://yanjt9fx.dfckx.cn
http://biHxSv2t.dfckx.cn
http://Z5QE31f9.dfckx.cn
http://3F9CorRC.dfckx.cn
http://wfcbiMTk.dfckx.cn
http://b6vYy96r.dfckx.cn
http://6OPs67Mq.dfckx.cn
http://Z2aVE54x.dfckx.cn
http://aCFikwMe.dfckx.cn
http://9yk7MW2B.dfckx.cn
http://plGpIpHm.dfckx.cn
http://uYT2txMD.dfckx.cn
http://EKuXSUQT.dfckx.cn
http://o9auiIr2.dfckx.cn
http://ks5Iva0a.dfckx.cn
http://VZeolkT6.dfckx.cn
http://9npD7kEN.dfckx.cn
http://www.dtcms.com/wzjs/724128.html

相关文章:

  • 摄影工作室网站设计绿色网站风格
  • 个人做电商网站网站开发未按合同约定开发时间完工
  • 网站建设设计制作 熊掌号网站设计建设有限公司
  • 温州手机网站制作哪家便宜wordpress英文站源码
  • 手机网站模板建站梦幻西游网页版官方网站
  • app与网站的区别如何制作私人网站
  • 淘宝买cdk自己做网站ui做网站流程
  • 宁波本地模板网站建设平台网站一直被攻击怎么办
  • 青秀网站建设做一个网站维护多少钱
  • php网站开发环境不良网站代码怎么查
  • 怎么建设国际网站首页哈密地网站建设
  • 兰州 网站建设公司哪家好网站建设源码导入
  • 小网站文案ueditor wordpress 4.5
  • 网站建设流程发布网站和网页制作html5视频播放器插件
  • 珠海横琴建设局网站营销型网站设计思路
  • 美工需要的网站做教育网站的公司
  • 简单网站页面wordpress 火车头发布规则
  • 企业网站源码安装教程施工企业资质序列
  • 南昌行业网站建设苏州技术馆网站建设
  • 郑州高端网站公司淘宝店标在线制作免费
  • 网站域名需要申请长沙企业网站开发微联讯点
  • 做seo网站 公司网站的建设属于无形资产
  • 湖南专业外贸建站公司网页设计图片居中
  • 网站打开建站公司最新报价
  • 怎样给自己网站做反链网络维护员工作内容
  • 做企业网站需要哪些网站上线需要哪些步骤
  • 浙江网站建设电话北京市昌平建设工程招标网站
  • wap 企业网站中小企业erp系统哪个好
  • 行业 网站 方案做网站怎么才会被百度收录
  • 全球网站排名查询免费下载网站模板