五子棋游戏开发总结C语言版.docx
- 文档编号:25000605
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:17
- 大小:828.53KB
五子棋游戏开发总结C语言版.docx
《五子棋游戏开发总结C语言版.docx》由会员分享,可在线阅读,更多相关《五子棋游戏开发总结C语言版.docx(17页珍藏版)》请在冰豆网上搜索。
五子棋游戏开发总结C语言版
五子棋游戏开发总结
一.五子棋游戏概述
略
二.游戏功能
对弈游戏,自动判断游戏胜负。
采用人机对话模式,界面设计美观友好。
具体玩法:
采用任意键开始游戏,此处采用键盘值W、A、S、D控制棋子移动方向,空格键(SPACE)落子,ESC退出游戏。
三.系统开发平台
1)VisualC++单纯的VisualC++不行,需下载一个EasyX小插件对其进行配置好才可(网上有下的,也有配置方法)。
2)程序代码必须以.cpp结尾。
3)最佳分辨率:
最佳效果1024*768。
四.游戏开发详细过程:
五.游戏的完整详细代码:
#include
#include
#include
#include
#include
//宏定义
#defineESC27//退出
#defineSPACE32
#defineLEFT65//向左键
#defineRIGHT68
#defineUP87
#defineDOWN83
intkey;
intchess[20][20];//棋盘坐标位置
intflag=1;//标识要画的棋子的颜色flag=1,棋子为蓝色;其他为红色。
intchessx,chessy;
voidstart();
voiddraw_chessboard();
voiddraw_circle(intx,inty,intcolor);
voidplay();
intresult(intx,inty);
//开始游戏
voidstart()
{
outtextxy(200,240,"GAMESTART!
");
outtextxy(200,380,"ESC-exit/pressanykeytocontinue");
}
//画棋盘
voiddraw_chessboard()
{
inti,j;
setbkcolor(GREEN);//设置背景颜色为绿色
cleardevice();//清屏
for(i=40;i<=440;i+=20)
for(j=40;j<=440;j++)
{
putpixel(i,j,4);
putpixel(j,i,4);
}
setcolor(8);
setlinestyle(1,0,1);
rectangle(32,32,448,448);
outtextxy(10,10,"ESC-exit/SPACE-putapiece");
}
//画棋子
voiddraw_circle(intx,inty,intcolor)
{
setcolor(color);
setlinestyle(1,0,10);
x=(x+2)*20;
y=(y+2)*20;
circle(x,y,4);
}
//清除棋子
voiddraw_pixel(intx,inty,intcolor)
{
x=(x+2)*20;
y=(y+2)*20;
{
inta,b,c,d;
for(a=1;a<=8;a++)
putpixel(x+a,y,color);
for(b=8;b>=1;b--)
putpixel(x,y-b,color);
for(c=1;c<=8;c++)
putpixel(x,y+c,color);
for(d=8;d>=1;d--)
putpixel(x-d,y,color);
putpixel(x+9,y,color);
putpixel(x,y-9,color);
putpixel(x,y+9,color);
putpixel(x-9,y,color);
}
}
//游戏过程
voidplay()
{
inti,j;
switch(key)
{
case
if(chessx-1<0)
break;
else
{
for(i=chessx-1,j=chessy;i>=1;i--)
if(chess[i][j]==0)
{
draw_circle(chessx,chessy,GREEN);
draw_pixel(chessx,chessy,8);
break;
}
if(i<1)
break;
chessx=i;
if(flag==1)
draw_circle(chessx,chessy,BLUE);
else
draw_circle(chessx,chessy,RED);
}
break;
case
if((chessx+1)>19)
break;
else
{
for(i=chessx+1,j=chessy;i<=19;i++)
if(chess[i][j]==0)
{
draw_circle(chessx,chessy,GREEN);
draw_pixel(chessx,chessy,8);
break;
}
if(i>19)
break;
chessx=i;
if(flag==1)
draw_circle(chessx,chessy,BLUE);
else
draw_circle(chessx,chessy,RED);
}
break;
case
if((chessy+1)>19)
break;
else
{
for(i=chessx,j=chessy+1;j<=19;j++)
if(chess[i][j]==0)
{
draw_circle(chessx,chessy++,GREEN);
draw_pixel(chessx,chessy,8);
break;
}
if(j>19)
break;
chessx=i;
if(flag==1)
draw_circle(chessx,chessy,BLUE);
else
draw_circle(chessx,chessy,RED);
}
break;
case
if((chessy-1)<0)
break;
else
{
for(i=chessx,j=chessy-1;j>=1;j--)
if(chess[i][j]==0)
{
draw_circle(chessx,chessy,GREEN);
draw_pixel(chessx,chessy,8);
break;
}
if(j<1)
break;
chessy=j;
if(flag==1)
draw_circle(chessx,chessy,BLUE);
else
draw_circle(chessx,chessy,RED);
}
break;
case
break;
case
if(chessx>=1&&chessy<=19&&chessx<19&&chessy>=1)
{
if(chess[chessx][chessy]==0)
{
chess[chessx][chessy]=flag;
if(result(chessx,chessy)==1)
{
cleardevice();
if(flag==1)
{
cleardevice();
outtextxy(80,200,"CONGRATIONATIONS,BLUEWIN!
");
getch();
closegraph();
exit(0);
}
if(flag==2)
{
cleardevice();
outtextxy(80,200,"CONGRATIONATIONS,REDWIN!
");
getch();
closegraph();
exit(0);
}
}
if(flag==1)
flag=2;
else
flag=1;
break;
}
}
else
break;
}
}
//判断胜负
intresult(intx,inty)
{
intj,k,n1,n2;
while
(1)
{
n1=0;
n2=0;
for(j=x,k=y;j>=1&&k>=1;j--,k--)
{
if(chess[j][k]==flag)
n1++;
else
break;
}
for(j=x,k=y;j<=19&&k<=19;j++,k++)
{
if(chess[j][k]==flag)
n2++;
else
break;
}
if(n1+n2-1>=5)
return
(1);
n1=0;
n2=0;
for(j=x,k=y;j<=19&&k>=1;j++,k--)
{
if(chess[j][k]==flag)
n1++;
else
break;
}
for(j=x,k=y;j>=1&&k<=19;j--,k++)
{
if(chess[j][k]==flag)
n2++;
else
break;
}
if(n1+n2-1>=5)
return
(1);
n1=0;
n2=0;
for(j=x,k=y;j>=1;j--)
{
if(chess[j][k]==flag)
n1++;
else
break;
}
for(j=x,k=y;j<=19;j++)
{
if(chess[j][k]==flag)
n2++;
else
break;
}
if(n1+n2-1>=5)
return
(1);
n1=0;
n2=0;
for(j=x,k=y;k>=1;k--)
{
if(chess[j][k]==flag)
n1++;
else
break;
}
for(j=x,k=y;k<=19;k++)
{
if(chess[j][k]==flag)
n1++;
else
break;
}
if(n1+n2-1>=5)
return
(1);
return(0);
}
}
//主函数
intmain(void)
{
initgraph(620,480);
start();
key=getch();
if(key==ESC)
exit(0);
else
{
cleardevice();
flag=1;
draw_chessboard();
do
{
chessx=10;
chessy=10;
if(flag==1)
draw_circle(chessx,chessy,BLUE);
else
draw_circle(chessx,chessy,RED);
do
{
while(getch()==0);
key=getch();
play();
}
while(key!
=ESC&&key!
=SPACE);
}
while(key!
=ESC);
closegraph();
}
return0;
}
作者:
flybird
时间:
2012/08/18
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 五子棋 游戏 开发 总结 语言版