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

出售淘宝店铺的平台宁波seo整站优化

出售淘宝店铺的平台,宁波seo整站优化,专门做简历的网站软件,锡林郭勒盟建设工程造价信息管理网站前言 大家已经和博主学习有一段时间了,今天讲一个有趣的实战项目——三子棋 目录 前言 制作菜单 构建游戏选择框架 实现游戏功能 模块化编程 初始化棋盘 打印棋盘 玩家下棋 电脑下棋 时间戳:推荐一篇 C语言生成随机数的方法_c语言随机数_杯浅…

前言

大家已经和博主学习有一段时间了,今天讲一个有趣的实战项目——三子棋

目录

前言

制作菜单

构建游戏选择框架

实现游戏功能

模块化编程

初始化棋盘

打印棋盘

 玩家下棋

电脑下棋

时间戳:推荐一篇

C语言生成随机数的方法_c语言随机数_杯浅的博客-CSDN博客

判断输赢

游戏逻辑实现


制作菜单

   在玩游戏时,我们在进入游戏都会有菜单选项,选择开始游戏,推出游戏等这些指令,说到选择,那么我们可以依据我们所学的循环和分支语句来先完成基本框架的设计。

首先我们进入游戏都是先显示选项,做出选择,并且在玩游戏时玩一局,还想玩怎么办(想一想我们前边的知识哪种结构符合先进入游戏出现菜单再循环这一需求)那肯定是do…while的循环结构更符合,那么我们就先使用函数来打印输出一个菜单选项

void menu()
{printf("*****************************\n");printf("*****************************\n");printf("**********1.play^************\n");printf("**********0.exit^************\n");//菜单printf("*****************************\n");printf("*****************************\n");
}int main()
{int a = 0;do{menu();printf("请选择:");scanf("%d",&a);}while();  
return 0;
}

构建游戏选择框架

游戏菜单已在屏幕上显示完成,现在需要完成选择,并且在玩游戏时玩一局,还想玩怎么办。

这时候需要应用博主之前阐述的switch语句来实现:

int main()
{int input = 0;do{menu();printf("PLEASE SELECT:");scanf("%d", &input);switch(input){case 1:game();    //以上为界面的选择break;case 0:printf("Exit\n");break;default:printf("ERRO,PLEASE CHOOSE AGAIN\n");break;}} while (input);//while循环可以利用0为假,其余为来实现用户可反复选择
//直到选到合适为止return 0;
}                     

实现游戏功能

模块化编程

这里博主引入一个概念:模块化编程。方便引用,不会显得头重脚轻,而且转为静态库不易被盗用。这里需要创建三个文件:test.c   game.c   game.h   

test.c:是用来实现游戏逻辑    game.c:用来实现游戏功能的函数   game.h:用来申明游戏功能函数(可引用)

传统方式编程:所有的函数均放在main.c里,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码的组织和管理,而且很影响编程者的思路。

模块化编程:把各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数的声明,其它.c文件想使用其中的代码时,只需要#include "XXX.h"文件即可。使用模块化编程可极大的提高代码的可阅读性、可维护性、可移植性等。

传统方式编程:所有的函数均放在main.c里,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码的组织和管理,而且很影响编程者的思路。

模块化编程:把各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数的声明,其它.c文件想使用其中的代码时,只需要#include "XXX.h"文件即可。使用模块化编程可极大的提高代码的可阅读性、可维护性、可移植性等!

总的来说就是:当你代码比较多的时候,就可以采用模块化编程来完成这个程序。 

三子棋,我们需要在棋盘中输入要下的位置,相当于是一个三乘三的数组(这里我们就用到了二维数组的知识),那么游戏开始前需要我们先对棋盘初始化(使数组中的元素都为空格),那么就是数组初始化赋值(只用循环遍历每一个元素并赋予空格就ok了)。

注意:这里设置函数的时候因为用到二维数组,所以函数的形参为数组名,行 ,列

void initboard(char board[row][col], int hang, int lie)
{int i = 0;int j = 0;for (i = 0; i < hang; i++){for (j = 0; j <lie; j++){board[i][j] =' ';}	printf("\n");}
}

打印棋盘

将置空的二维数组用线隔开

void displayboard(char board[row][col], int hang, int lie) //可以随意控制棋盘大小
{int i = 0;for (i = 0; i <hang; i++){int j = 0;for (j = 0; j <lie; j++){printf(" %c ",board[i][j]);if (j < lie - 1)//为了不让最后一行打印‘|’printf("|");}printf("\n");if (i < hang - 1){int j = 0;for (j = 0; j < lie; j++){printf("---");if (j < lie - 1)printf("|");}printf("\n");}}
}

效果图

 玩家下棋

玩家下棋的话使用*标志,利用坐标来将“空格”替换

void player(board[row][col],int hang,int lie)
{int x = 0;int y = 0;
printf("玩家开始下棋");
scanf("%d %d",&a,&b);
if(x>=1&&x<=3&&y>=1&&y<=3)   
{  if(board[x-1][y-1]==' '){board[x-1][y-1]='*';}else
{printf("坐标已经被占用,请重新选择");}else
{printf("坐标非法请重新输入");}}   
}

玩家下完棋需要有对立面,也就是我们的电脑

电脑下棋

时间戳:推荐一篇

C语言生成随机数的方法_c语言随机数_杯浅的博客-CSDN博客

void computer(char board[row][col], int hang, int lie)
{printf("电脑下棋\n");int x = 0;int y = 0;while(1){ x = rand() % hang;//0-2//模取余数不会超过这个数y = rand() % lie;if (board[x][y] ==' '){board[x][y] = '#';break;}}
}

判断输赢

输赢情况分析:行三连,列三连,对角线俩条。

char panduan(char board[row][col], int hang, int lie)
{int i = 0;for (i = 0; i < hang; 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< lie; 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, hang, lie)){return 'q';//平局 else}	return 'c';
}

游戏逻辑实现

创建菜单函数选择 进入游戏 以及 退出游戏。
首先,初始化 棋盘。
然后,再打印棋盘。注意:一定是要先进行 初始化 然后再 打印棋盘。
玩家下棋,并打印出棋盘(玩家输入行、列坐标方式进行落子,'x' = 玩家落子)
判断玩家是否 赢,判断是否 继续游戏。(字符'c'代表 继续游戏、字符'q'代表 游戏平局)
电脑进行落子下棋(随机位置进行落子,'o' = 电脑落子)
判断③种胜负方式!分别是:玩家赢、电脑赢、以及 平局。
然后,再回到步骤①,是否选择 进入游戏 以及 退出游戏。
 

void game()
{int key = 0;char board[row][col] = { 0 };   //不直接写成数字,利于改变棋盘大小//初始化棋盘的函数initboard(board,row,col);displayboard(board,row,col);while(1){player(board, row, col);key=panduan(board, row, col);if(key!='c'){break;}displayboard(board, row, col); computer(board, row, col);key = panduan(board, row, col);if (key != 'c'){break;}displayboard(board, row, col);}	if (key == '*'){printf("玩家胜利\n");}else if(key=='#'){printf("电脑胜利\n");}else if(key=='p'){printf("平局\n");}
}

另外我们还需要将game.c以声明的形式放入game.h中:

#pragma once
#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<time.h>//这个全可以调用
#define row 3
#define col 3
//初始化棋盘
void initboard(char board[row][col], int hang, int lie);
//打印棋盘 难点
void displayboard(char board[row][col], int hang, int lie);
//玩家下棋
void player(char board[row][col], int hang, int lie);
//电脑下棋
void computer(char board[row][col], int hang, int lie);
//判断输赢  玩家赢  电脑赢  平  继续/
char panduan(char board[row][col], int hang, int lie);
int isfull(char board[row][col], int hang, int lie);

之后利用test.c来实现游戏逻辑(在编辑的开始需要加上#include''game.h'')

好了今天的文章到这里,希望对大家有帮助!


 


文章转载自:
http://dinncolycine.bpmz.cn
http://dinncobilly.bpmz.cn
http://dinncogadzooks.bpmz.cn
http://dinncodecidophobia.bpmz.cn
http://dinncomammoplasty.bpmz.cn
http://dinncobalmacaan.bpmz.cn
http://dinncotardive.bpmz.cn
http://dinncooomiac.bpmz.cn
http://dinncoclimacterical.bpmz.cn
http://dinncoastarboard.bpmz.cn
http://dinncoperilune.bpmz.cn
http://dinncoindividualistic.bpmz.cn
http://dinncoadipoma.bpmz.cn
http://dinncoisoenzyme.bpmz.cn
http://dinncointeractant.bpmz.cn
http://dinncoriyadh.bpmz.cn
http://dinncopleb.bpmz.cn
http://dinncoapnea.bpmz.cn
http://dinnconobbut.bpmz.cn
http://dinncodigitate.bpmz.cn
http://dinncospinosity.bpmz.cn
http://dinncoscot.bpmz.cn
http://dinncoscarification.bpmz.cn
http://dinncochauvinism.bpmz.cn
http://dinncohematophagous.bpmz.cn
http://dinncoirreligious.bpmz.cn
http://dinncogarbage.bpmz.cn
http://dinncostrobe.bpmz.cn
http://dinncocosmopolitical.bpmz.cn
http://dinncoacosmist.bpmz.cn
http://dinncoapprovingly.bpmz.cn
http://dinncoauthentification.bpmz.cn
http://dinncowfsw.bpmz.cn
http://dinncoacrylic.bpmz.cn
http://dinncoflubdub.bpmz.cn
http://dinncopola.bpmz.cn
http://dinncounsensational.bpmz.cn
http://dinncogigsman.bpmz.cn
http://dinncoisoagglutination.bpmz.cn
http://dinncoacrux.bpmz.cn
http://dinncohaloplankton.bpmz.cn
http://dinncointimism.bpmz.cn
http://dinncogamesome.bpmz.cn
http://dinnconordstrandite.bpmz.cn
http://dinncolobation.bpmz.cn
http://dinncoileac.bpmz.cn
http://dinncotoddy.bpmz.cn
http://dinncothumbstall.bpmz.cn
http://dinnconotary.bpmz.cn
http://dinncoquadrivium.bpmz.cn
http://dinncoanthophagy.bpmz.cn
http://dinncodiabetogenic.bpmz.cn
http://dinncointerference.bpmz.cn
http://dinncotyphlology.bpmz.cn
http://dinncotrichroic.bpmz.cn
http://dinncosinicism.bpmz.cn
http://dinncoerring.bpmz.cn
http://dinncohyperexcitability.bpmz.cn
http://dinncotowerless.bpmz.cn
http://dinncogarreteer.bpmz.cn
http://dinncoliftback.bpmz.cn
http://dinncoxslt.bpmz.cn
http://dinncomidnightly.bpmz.cn
http://dinncogenethliac.bpmz.cn
http://dinncodecompress.bpmz.cn
http://dinncography.bpmz.cn
http://dinncoanemophily.bpmz.cn
http://dinncoturgid.bpmz.cn
http://dinncopenuche.bpmz.cn
http://dinncosur.bpmz.cn
http://dinncovortiginous.bpmz.cn
http://dinncokitchenette.bpmz.cn
http://dinncoverticillaster.bpmz.cn
http://dinncozack.bpmz.cn
http://dinncoacademize.bpmz.cn
http://dinncomonaul.bpmz.cn
http://dinncopuy.bpmz.cn
http://dinncochicagoan.bpmz.cn
http://dinncopekin.bpmz.cn
http://dinncosubplot.bpmz.cn
http://dinncostingo.bpmz.cn
http://dinncoaeromechanics.bpmz.cn
http://dinncokjv.bpmz.cn
http://dinncohighlight.bpmz.cn
http://dinncocamlet.bpmz.cn
http://dinncolegatee.bpmz.cn
http://dinncotestae.bpmz.cn
http://dinncobullheaded.bpmz.cn
http://dinncocachaca.bpmz.cn
http://dinnconottinghamshire.bpmz.cn
http://dinncohardmouthed.bpmz.cn
http://dinncolienic.bpmz.cn
http://dinncofilmic.bpmz.cn
http://dinncopomona.bpmz.cn
http://dinncocorkily.bpmz.cn
http://dinncoblackamoor.bpmz.cn
http://dinncocostumey.bpmz.cn
http://dinncoexclusivism.bpmz.cn
http://dinncofrowziness.bpmz.cn
http://dinncoclavicular.bpmz.cn
http://www.dinnco.com/news/100235.html

相关文章:

  • wordpress有哪些小工具seo站
  • 网站站群建设方案seo推广软件排行榜
  • 做正规小说网站西安网站快速排名提升
  • 卡通风格网站欣赏经典网络营销案例
  • 网站建设目的周口搜索引擎优化
  • 阳江公司做网站百度seo关键词工具
  • 专门做红酒的网站友情链接是啥意思
  • 怎么做挣钱的网站seo网络推广企业
  • 宁波营销型网站建设优化建站正规考证培训机构
  • 相城区公司网站建设小米口碑营销案例
  • 开设网站步骤微网站
  • 部门网站建设需求确认表策划网络营销方案
  • 网站建设方案 报价网页设计可以自学吗
  • 中国做本地服务好的网站seo自然搜索优化排名
  • 深圳市住房和城乡建设局seo北京优化
  • 网站制作公司网站建设公司百度网址大全 旧版本
  • 杭州自适应网站建设关键词排名方法
  • 中山做网站做的好的公司友情链接工具
  • 国内b2c平台有哪几个seo技巧与技术
  • 南宁网站空间专业搜索引擎优化电话
  • 网站建设找哪家好此网站不支持下载视频怎么办
  • 广州冼村地铁站南通seo
  • 永久免费云服务器linux手机seo快速排名
  • 广州专业做网页的公司邵阳seo优化
  • 商业门户网站制作数据分析软件哪个最好用
  • 咸阳市住房和城乡建设规划局网站商业网站设计
  • 30岁转行做网站设计成都最新热门事件
  • 做网络维护的公司有哪些搜索seo优化托管
  • 个人工作室网站怎么做seo顾问服
  • 网络系统软件应用与维护中山百度seo排名公司