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

网站右击无效是怎么做的网络营销产品

网站右击无效是怎么做的,网络营销产品,网站开发培训程序员,买个购物网站简介: 目标很简单:实现一个 三子棋小游戏。三子棋大家都玩过,规则就不提及了。本博文中实现的三子棋在对局中,电脑落子是随机的,不具有智能性,玩家的落子位置使用键盘输入坐标。下面开始详细介绍如何实现一…

简介:

目标很简单:实现一个 三子棋小游戏。三子棋大家都玩过,规则就不提及了。本博文中实现的三子棋在对局中,电脑落子是随机的,不具有智能性,玩家的落子位置使用键盘输入坐标。下面开始详细介绍如何实现一个简单的三子棋游戏。

步骤一:制定框架

想要实现一个小游戏,第一件事就是制定框架,那么制定框架是什么意思?怎么制定框架?

#include"chess.h"
int main()
{int n = 0;do{menu();printf("input:\n");scanf("%d", &n);switch(n){case 1:game();break;case 0:printf("exit\n");break;default:printf("input error,input again:\n");break;}} while(n);return 0;
}

这里的menu函数只是一个打印函数,定义如下:

void menu()
{printf("**************\n");printf("*** 1.play ***\n");printf("*** 0.exit ***\n");printf("**************\n");
}

将main函数写全就是制定了一个完整的框架,只要我们输入1,就会进入game函数(之后实现)进行游戏,输入0就会退出游戏,结束程序,输入其他数会让我们重新输入。整个过程就是这么简单。我们只需要实现了game的过程,整个游戏就制作完成了。

那么game函数怎么实现呢?

步骤二:实现game函数

 我们在做一个项目的时候,需要把函数的声明放在头文件里,函数的定义放在源文件里,但是具体情况可以根据个人偏好来,我个人是喜欢把主函数里会用到的函数声明放进头文件里,定义放在源文件里。如果在函数的定义中需要实现另外一个函数,就在另外一个函数的声明和定义就都放在源文件里。

要实现game函数,我们需要先将game的流程想清楚:

我们默认玩家先下棋,玩家输入一个合法坐标,然后电脑在下棋。并且每当玩家或者电脑下棋之后需要判断对局是否结束,如果结束,那么最后落子的一方胜利。另外,在玩家或者电脑下棋之后我们需要将棋盘和棋子打印出来。

void game()
{char pieces[ROW][COL] = { 0 };piecesInit(pieces, ROW, COL);board(pieces, ROW, COL);while (1){system("cls");board(pieces, ROW, COL);printf("player move!\n");playerMove(pieces, ROW, COL);system("cls");board(pieces,ROW,COL);if (judge(pieces, ROW, COL)){printf("you win\n");break;}printf("computer move!\n");computerMove(pieces, ROW, COL);Sleep(1000);system("cls");board(pieces, ROW, COL);if (judge(pieces, ROW, COL)){printf("you lose\n");break;}}
}

pieces二维数组是用来储存棋子位置信息的,玩家的棋子是星号,电脑的棋子是井号

下面对game函数中用到的函数进行解释:

piecesInit:将pieces初始化,使得每一个元素都是空格,这样初始状态就不会打印出棋子

board:传入pieces数组,将棋盘和棋子一并打印

playerMove:玩家下棋,将pieces中的一个空格元素变为星号

computerMoe:电脑下棋,将pieces中的一个空格元素变为井号

judge:返回值是int,如果对局结束了就返回1,未结束返回0

这样整个game的流程就形成了

步骤三:实现game函数中的各个函数

void board(char pieces[ROW][COL], int row, int col)
{for (int i = 0; i < row; i++){printf(" %c | %c | %c \n",pieces[i][0],pieces[i][1],pieces[i][2]);if (i < row - 1){printf("---|---|---\n");}}
}//如果不理解,可以在自己的电脑上把棋盘敲出来,就会明白board函数的原理,不敲出来不可能搞明白
void playerMove(char pieces[ROW][COL],int row,int col)
{int x = 0;int y = 0;while (1){printf("x:\n");scanf("%d", &x);printf("y:\n");scanf("%d", &y);x--;//用户输入的起始位置是1,而数组下标起始位置是0y--;if (x < 0 || x>2 || y < 0 || y>2 || pieces[x][y] != ' ')//判断是否非法printf("error,again\n");elsebreak;//正确输入,退出循环}pieces[x][y] = '*';
}
void computerMove(char pieces[ROW][COL], int row, int col)
{int x = 0;int y = 0;while (1){x = rand() % 3;//取0到2的一个数y = rand() % 3;if (x >= 0 && x <= 2 && y >= 0 && y <= 2 && pieces[x][y] == ' ')//如果位置合法{pieces[x][y] = '#';break;}}
}
int judge(char pieces[ROW][COL], int row, int col)
{//判断是否有一行三个棋子一样for (int i = 0; i < row; i++){int sum = pieces[i][0] + pieces[i][1] + pieces[i][2];if (sum == 3 * '*' || sum == 3 * '#')return 1;}//判断是否有一列三个棋子一样for (int j = 0; j < col; j++){int sum = pieces[0][j] + pieces[1][j] + pieces[2][j];if (sum == 3 * '*' || sum == 3 * '#')return 1;}//判断两个对角线是否有三个棋子一样int sum1 = pieces[0][0] + pieces[1][1] + pieces[2][2];int sum2 = pieces[0][2] + pieces[1][1] + pieces[2][0];if (sum1 == 3 * '*' || sum1 == 3 * '#' || sum2 == 3 * '*' || sum2 == 3 * '#')return 1;return 0;
}

这样就实现了一个简单的三子棋,看看效果如何:

http://www.hkea.cn/news/852218/

相关文章:

  • 中宣部网站政治建设网站服务器是什么意思
  • 淮安网站定制徐州seo外包公司
  • 嘉兴类网站系统总部网站建设技术解决方案
  • 做网站的教科书外包网络推广公司推广网站
  • 模板名字 wordpress优化大师如何删掉多余的学生
  • 3d网站建设制作百度关键词优化手段
  • 新手做那些网站比较好东莞企业网站排名
  • 欧美风格网站360指数
  • 优秀网站建设公司电话下列哪些店铺适合交换友情链接
  • 58同城乌鲁木齐网站建设重庆网站到首页排名
  • wordpress知言主题山东服务好的seo公司
  • 旅游商务平台网站建设功能需求关键词排名查询官网
  • 做网站要搭建本地服务器么微商引流被加方法精准客源
  • 网站名字要备案吗友情链接怎么弄
  • 江苏网站开发外链网站大全
  • 网站代备案流程图百度关键词优化排名技巧
  • 石狮建设局网站今日头条站长平台
  • 修改公司网站网页站长素材音效
  • 网站速度测速免费访问国外网站的app
  • 常州网站搭建公司宣传推广渠道有哪些
  • 中国建设监理网站广告网络
  • 网站维护费用怎么收路由优化大师官网
  • 如何加入小说网站做打字员合肥网站优化推广方案
  • 网站建设现状关键词在线优化
  • 网站建设就业百度网址导航主页
  • 郑州公司做网站汉狮中囯联通腾迅
  • 专业网上购物平台优化网站的步骤
  • 用web开发一个网站怎么做网站推广优化平台
  • 建设企业网站进去无法显示搜索引擎seo
  • 网站 分辨率百度视频推广