五子棋的代码:
#includeiostream
#includestdio.h
#includestdlib.h
#includetime.h
usingnamespacestd;
constintN=15; //15*15的棋盘
constcharChessBoardflag=''; //棋盘标志
constcharflag1='o'; //玩家1或电脑的棋子标志
constcharflag2='X'; //玩家2的棋子标志
typedefstructCoordinate //坐标类
{
intx; //代表行
inty; //代表列
}Coordinate;
classGoBang //五子棋类
{
public:
GoBang() //初始化
{
InitChessBoard();
}
voidPlay() //下棋
{
CoordinatePos1; //玩家1或电脑
CoordinatePos2; //玩家2
intn=0;
while(1)
{
intmode=ChoiceMode();
while(1)
{
if(mode==1) //电脑vs玩家
{
ComputerChess(Pos1,flag1); //电脑下棋
if(GetVictory(Pos1,0,flag1)==1) //0表示电脑,真表示获胜
break;
PlayChess(Pos2,2,flag2); //玩家2下棋
if(GetVictory(Pos2,2,flag2)) //2表示玩家2
break;
}
else //玩家1vs玩家2
{
PlayChess(Pos1,1,flag1); //玩家1下棋
if(GetVictory(Pos1,1,flag1)) //1表示玩家1
break;
PlayChess(Pos2,2,flag2); //玩家2下棋
if(GetVictory(Pos2,2,flag2)) //2表示玩家2
break;
}
}
cout"***再来一局***"endl;
cout"yorn:";
charc='y';
cinc;
if(c=='n')
break;
}
}
protected:
intChoiceMode() //选择模式
{
inti=0;
system("cls"); //系统调用,清屏
InitChessBoard(); //重新初始化棋盘
cout"***0、退出 1、电脑vs玩家 2、玩家vs玩家***"endl;
while(1)
{
cout"请选择:";
cini;
if(i==0) //选择0退出
exit(1);
if(i==1||i==2)
returni;
cout"输入不合法"endl;
}
}
voidInitChessBoard() //初始化棋盘
{
for(inti=0;iN+1;++i)
{
for(intj=0;jN+1;++j)
{
_ChessBoard[i][j]=ChessBoardflag;
}
}
}
voidPrintChessBoard() //打印棋盘,这个函数可以自己调整
{
system("cls"); //系统调用,清空屏幕
for(inti=0;iN+1;++i)
{
for(intj=0;jN+1;++j)
{
if(i==0) //打印列数字
{
if(j!=0)
printf("%d ",j);
else
printf(" ");
}
elseif(j==0) //打印行数字
printf("%2d",i);
else
{
if(iN+1)
{
printf("%c|",_ChessBoard[i][j]);
}
}
}
coutendl;
cout" ";
for(intm=0;mN;m++)
{
printf("--|");
}
coutendl;
}
}
voidPlayChess(Coordinatepos,intplayer,intflag) //玩家下棋
{
PrintChessBoard(); //打印棋盘
while(1)
{
printf("玩家%d输入坐标:",player);
cinpos.xpos.y;
if(JudgeValue(pos)==1) //坐标合法
break;
cout"坐标不合法,重新输入"endl;
}
_ChessBoard[pos.x][pos.y]=flag;
}
voidComputerChess(Coordinatepos,charflag) //电脑下棋
{
PrintChessBoard(); //打印棋盘
intx=0;
inty=0;
while(1)
{
x=(rand()%N)+1; //产生1~N的随机数
srand((unsignedint)time(NULL));
y=(rand()%N)+1; //产生1~N的随机数
srand((unsignedint)time(NULL));
if(_ChessBoard[x][y]==ChessBoardflag) //如果这个位置是空的,也就是没有棋子
break;
}
pos.x=x;
pos.y=y;
_ChessBoard[pos.x][pos.y]=flag;
}
intJudgeValue(constCoordinatepos) //判断输入坐标是不是合法
{
if(pos.x0pos.x=Npos.y0pos.y=N)
{
if(_ChessBoard[pos.x][pos.y]==ChessBoardflag)
{
return1; //合法
}
}
return0; //非法
}
intJudgeVictory(Coordinatepos,charflag) //判断有没有人胜负(底层判断)
{
intbegin=0;
intend=0;
intbegin1=0;
intend1=0;
//判断行是否满足条件
(pos.y-4)0?begin=(pos.y-4):begin=1;
(pos.y+4)N?end=N:end=(pos.y+4);
for(inti=pos.x,j=begin;j+4=end;j++)
{
if(_ChessBoard[i][j]==flag_ChessBoard[i][j+1]==flag
_ChessBoard[i][j+2]==flag_ChessBoard[i][j+3]==flag
_ChessBoard[i][j+4]==flag)
return1;
}
//判断列是否满足条件
(pos.x-4)0?begin=(pos.x-4):begin=1;
(pos.x+4)N?end=N:end=(pos.x+4);
for(intj=pos.y,i=begin;i+4=end;i++)
{
if(_ChessBoard[i][j]==flag_ChessBoard[i+1][j]==flag
_ChessBoard[i+2][j]==flag_ChessBoard[i+3][j]==flag
_ChessBoard[i+4][j]==flag)
return1;
}
intlen=0;
//判断主对角线是否满足条件
pos.xpos.y?len=pos.y-1:len=pos.x-1;
if(len4)
len=4;
begin=pos.x-len; //横坐标的起始位置
begin1=pos.y-len; //纵坐标的起始位置
pos.xpos.y?len=(N-pos.x):len=(N-pos.y);
if(len4)
len=4;
end=pos.x+len; //横坐标的结束位置
end1=pos.y+len; //纵坐标的结束位置
for(inti=begin,j=begin1;(i+4=end)(j+4=end1);++i,++j)
{
if(_ChessBoard[i][j]==flag_ChessBoard[i+1][j+1]==flag
_ChessBoard[i+2][j+2]==flag_ChessBoard[i+3][j+3]==flag
_ChessBoard[i+4][j+4]==flag)
return1;
}
//判断副对角线是否满足条件
(pos.x-1)(N-pos.y)?len=(N-pos.y):len=pos.x-1;
if(len4)
len=4;
begin=pos.x-len; //横坐标的起始位置
begin1=pos.y+len; //纵坐标的起始位置
(N-pos.x)(pos.y-1)?len=(pos.y-1):len=(N-pos.x);
if(len4)
len=4;
end=pos.x+len; //横坐标的结束位置
end1=pos.y-len; //纵坐标的结束位置
for(inti=begin,j=begin1;(i+4=end)(j-4=end1);++i,--j)
{
if(_ChessBoard[i][j]==flag_ChessBoard[i+1][j-1]==flag
_ChessBoard[i+2][j-2]==flag_ChessBoard[i+3][j-3]==flag
_ChessBoard[i+4][j-4]==flag)
return1;
}
for(inti=1;iN+1;++i) //棋盘有没有下满
{
for(intj=1;jN+1;++j)
{
if(_ChessBoard[i][j]==ChessBoardflag)
return0; //0表示棋盘没满
}
}
return-1; //和棋
}
boolGetVictory(Coordinatepos,intplayer,intflag) //对JudgeVictory的一层封装,得到具体那个玩家获胜
{
intn=JudgeVictory(pos,flag); //判断有没有人获胜
if(n!=0) //有人获胜,0表示没有人获胜
{
PrintChessBoard();
if(n==1) //有玩家赢棋
{
if(player==0) //0表示电脑获胜,1表示玩家1,2表示玩家2
printf("***电脑获胜***\n");
else
printf("***恭喜玩家%d获胜***\n",player);
}
else
printf("***双方和棋***\n");
returntrue; //已经有人获胜
}
returnfalse; //没有人获胜
}
private:
char_ChessBoard[N+1][N+1];
};
扩展资料:
设计思路
1、进行问题分析与设计,计划实现的功能为,开局选择人机或双人对战,确定之后比赛开始。
2、比赛结束后初始化棋盘,询问是否继续比赛或退出,后续可加入复盘、悔棋等功能。
3、整个过程中,涉及到了棋子和棋盘两种对象,同时要加上人机对弈时的AI对象,即涉及到三个对象。
这类游戏,你可以去图书馆借一本 ”C语言课程设计”
这本书真的认认真真学完,敲出每一行代码,你的面向过程编程能力,基本可以放心了。
有什么代码细节搞不定,上 CSDN, 博客园,overflow 去问,去发帖问。
一:C++他爹Bjarne Stroustrup说过的一句话“我特别讨厌语言的设计者把自己的喜好强加给用户”(看向go)。结果C++为了不限制你的想法,于是也就变成了现在这个样子——包含若干范式,大概有
1,面向对象(灵活应用virtual继承+shared_ptr可以达到java/C#的效果)
2,模板(这里分两类,分别为type rich programming和meta programming,区别很大)
3,函数式编程(如今有了lambda,配合algorithm文件,简直无敌了)
二:C++学习建议
C++缺点之一,是相对许多语言复杂,而且难学难精。许多人说学习C语言只需一本KR《C程序设计语言》即可,但C++书籍却是多不胜数。我是从C进入C++,皆是靠阅读自学。在此分享一点学习心得。个人认为,学习C++可分为4个层次:
之一层次,C++基础:挑选一本入门书籍,如《C++ Primer》、《C++大学教程》、或Stroustrup撰写的经典《C++程序设计语言》或他一年半前的新作《C++程序设计原理与实践》,而一般C++课程也止于此,另外《C++ 标准程序库》及《The C++ Standard Library Extensions》可供参考;
第二层次,正确高效地使用C++:此层次开始必须自修,阅读过《(More)Effective C++》、《(More)Exceptional C++》、《Effective STL》及《C++编程规范》等,才适宜踏入专业C++开发之路;
第三层次,深入了解C++:关于全局问题可读《深入探索C++对象模型》、《Imperfect C++》、《C++沉思录》、《STL源码剖析》,要挑战智商,可看关于模版及模版元编程的书籍如《C++ Templates》、《C++设计新思维》、《C++模版元编程》;
第四层次,研究C++:阅读《C++语言的设计和演化》、《编程的本质》(含STL设计背后的数学根基)、C++标准文件《ISO/IEC 14882:2003》、C++标准委员会的提案书和报告书、关于C++的学术文献。
编写游戏代码的 *** 如下:
1、打开Flash后,选择新建actionscript;
2、文件选择导入到舞台,将需要被测试的素材导入到舞台中;
3、点击素材后,转化为影片剪辑,并点击属性为素材命名;
4、点击新建文件,新建一个as文件用于写代码;
5、在as层的之一帧右击选择动作;
6、在动作中编写鼠标点击,鼠标弹起,鼠标按下代码后关掉;
7、按CTRL加ENTER即可对游戏进行测试即可编写代码。
/*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++6.0、turbo????)上都能运行,你还可以进一步改进。这是一个类似贪吃蛇的小游戏。祝你好运*/\x0d\x0a/*贪吃蛇*/\x0d\x0a#include\x0d\x0a#include\x0d\x0a#include\x0d\x0a#include\x0d\x0aint head=3 ,tail=0;\x0d\x0aint main()\x0d\x0a{\x0d\x0aint i,j,k=0;\x0d\x0aint zuobiao[2][80];\x0d\x0along start;\x0d\x0aint direction=77;\x0d\x0aint gamespeed;\x0d\x0aint timeover;\x0d\x0aint change(char qipan[20][80],int zuobiao[2][80],char direction);\x0d\x0azuobiao[0][tail]=1;zuobiao[1][tail]=1;zuobiao[0][1]=1;zuobiao[1][1]=2;zuobiao[0][2]=1;zuobiao[1][2]=3;zuobiao[0][head]=1;zuobiao[1][head]=4;\x0d\x0a/*处理棋盘*/\x0d\x0achar qipan[20][80];//定义棋盘\x0d\x0afor(i=0;i for(j=0;jqipan[i][j]=' ';//初始化棋盘\x0d\x0afor(i=0;iqipan[0][i]='_';\x0d\x0afor(i=0;iqipan[i][0]='|';\x0d\x0afor(i=0;iqipan[i][79]='|';\x0d\x0afor(i=0;iqipan[19][i]='_';\x0d\x0aqipan[1][1]=qipan[1][2]=qipan[1][3]='*';//初始化蛇的位置\x0d\x0aqipan[1][4]='#';\x0d\x0aprintf("This is a game of a SNAKE.\nGOOD LUCK TO YOU !\n");\x0d\x0aprintf("Input your game speed,please.(e.g.300)\n");\x0d\x0ascanf("%d",gamespeed);\x0d\x0a\x0d\x0awhile(direction!='q')\x0d\x0a{\x0d\x0asystem("cls");\x0d\x0afor(i=0;ifor(j=0;jprintf("%c",qipan[i][j]);\x0d\x0atimeover=1;\x0d\x0astart=clock();\x0d\x0awhile(!kbhit()(timeover=clock()-startif(timeover)\x0d\x0a{\x0d\x0agetch();\x0d\x0adirection=getch();\x0d\x0a}\x0d\x0aelse\x0d\x0adirection=direction;\x0d\x0aif(!(direction==72||direction==80||direction==75||direction==77))\x0d\x0a{\x0d\x0areturn 0;\x0d\x0asystem("cls");\x0d\x0aprintf("GAME OVER!\n");\x0d\x0a}\x0d\x0aif(!change(qipan,zuobiao,direction))\x0d\x0a{\x0d\x0adirection='q';\x0d\x0asystem("cls");\x0d\x0aprintf("GAME OVER!\n");\x0d\x0a}\x0d\x0a}\x0d\x0areturn 0;\x0d\x0a}\x0d\x0aint change(char qipan[20][80],int zuobiao[2][80],char direction)\x0d\x0a{\x0d\x0aint x,y;\x0d\x0aif(direction==72)\x0d\x0ax=zuobiao[0][head]-1;y=zuobiao[1][head];\x0d\x0aif(direction==80)\x0d\x0ax=zuobiao[0][head]+1;y=zuobiao[1][head];\x0d\x0aif(direction==75)\x0d\x0ax=zuobiao[0][head];y=zuobiao[0][head]-1;\x0d\x0aif(direction==77)\x0d\x0ax=zuobiao[0][head];y=zuobiao[1][head]+1;\x0d\x0aif(x==0||x==18||y==78||y==0)\x0d\x0areturn 0;\x0d\x0aif(qipan[x][y]!=' ')\x0d\x0areturn 0;\x0d\x0aqipan[zuobiao[0][tail]][zuobiao[1][tail]]=' ';\x0d\x0atail=(tail+1)%80;\x0d\x0aqipan[zuobiao[0][head]][zuobiao[1][head]]='*';\x0d\x0ahead=(head+1)%80;\x0d\x0azuobiao[0][head]=x;\x0d\x0azuobiao[1][head]=y;\x0d\x0aqipan[zuobiao[0][head]][zuobiao[1][head]]='#';\x0d\x0areturn 1;\x0d\x0a}
ant 蚂蚁2. bagels 百吉饼另外贪吃蛇,吃豆子都是可以的,直接代码就可以玩。
Python包括随您的安装一起分发的大量标准库。标准库有一个称为Turtle的模块,这是一种向普通人介绍python编程的流行 *** 。今天介绍的所有游戏都是使用Python及其Turtle模块实现的。
每个游戏都完全独立于其他游戏,不试一试 您永远都不知道最喜欢哪种游戏。
安装完之后我们可以使用"python -m freegames list"来查看所有的游戏
贪吃蛇
贪吃蛇 -经典街机游戏。使用箭头键导航并吃绿色食品。每次食用食物,蛇就会长出一段。避免自己进食或出界!
吃豆子
吃豆子 –经典街机游戏。使用箭头键导航并吃掉所有白色食物。提防漫游迷宫的红色幽灵。
Flappy
Flappy-bird启发游戏。单击屏幕拍打翅膀。当您飞越屏幕时,请当心黑乌鸦。
加农炮
大炮-射击运动。单击屏幕发射您的炮弹。炮弹在其路径中弹出蓝色气球。弹出所有气球,然后才能越过屏幕。
二创动漫哪里看maplestar二创在网页或者youku,都...
越战越勇鹅哥带领鹅家班是哪一期1、年1月23日这期。在《...
安徽公务员降薪20%是真的吗是真的。2022公务员降薪20%...
下载奥特曼传奇英雄免内购无限金币无限钻石版操作步骤:1、...
和平精英少羽筷子水泥原句复制?1、和平精英少羽筷子台词如...