五子棋游戏开发总结(C语言版)_五子棋游戏设计总结
五子棋游戏开发总结(C语言版)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“五子棋游戏设计总结”。
五子棋游戏开发总结
一.五子棋游戏概述
略
二.游戏功能
对弈游戏,自动判断游戏胜负。
采用人机对话模式,界面设计美观友好。
具体玩法:采用任意键开始游戏,此处采用键盘值W、A、S、D控制棋子移动方向,空格键(SPACE)落子,ESC退出游戏。
三.系统开发平台
1)Visual C++ 单纯的Visual C++ 不行,需下载一个EasyX小插件对其进行配置好才可(网上有下的,也有配置方法)。2)程序代码必须以.cpp结尾。
3)最佳分辨率:最佳效果1024*768。四. 游戏开发详细过程:
五.游戏的完整详细代码:
#include
#include
//图形库 #include
#include #include //宏定义
#define ESC 27
//退出
#define SPACE 32
#define LEFT 65
//向左键 #define RIGHT 68 #define UP 87 #define DOWN 83
int key;
int che[20][20];
//棋盘坐标位置
int flag=1;//标识要画的棋子的颜色flag=1,棋子为蓝色;其他为红色。int chex,chey;
void start();void draw_cheboard();void draw_circle(int x,int y,int color);void play();
int result(int x,int y);//开始游戏 void start(){
outtextxy(200,240,“GAME START!”);
outtextxy(200,380,“ESC-exit/pre any key to continue ”);} //画棋盘
void draw_cheboard(){
int i,j;
setbkcolor(GREEN);//设置背景颜色为绿色
cleardevice();//清屏
for(i=40;i
for(j=40;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-put a piece”);} //画棋子
void draw_circle(int x,int y,int color){
setcolor(color);
setlinestyle(1,0,10);
x=(x+2)*20;
y=(y+2)*20;
circle(x,y,4);} //清除棋子
void draw_pixel(int x,int y,int color){
x=(x+2)*20;
y=(y+2)*20;
{
int a,b,c,d;
for(a=1;a
putpixel(x+a,y,color);
for(b=8;b>=1;b--)
putpixel(x,y-b,color);
for(c=1;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);
} } //游戏过程 void play(){
int i,j;
switch(key)
{
case LEFT://棋子左移
if(chex-1
break;
else
{
for(i=chex-1,j=chey;i>=1;i--)
if(che[i][j]==0)
{
draw_circle(chex,chey,GREEN);
draw_pixel(chex,chey,8);
break;
}
if(i
break;
chex=i;
if(flag==1)
draw_circle(chex,chey,BLUE);
else
draw_circle(chex,chey,RED);
}
break;
case RIGHT://棋子右移
if((chex+1)>19)
break;
else
{
for(i=chex+1,j=chey;i
if(che[i][j]==0)
{
draw_circle(chex,chey,GREEN);
draw_pixel(chex,chey,8);
break;
}
if(i>19)
break;
chex=i;
if(flag==1)
draw_circle(chex,chey,BLUE);
else
draw_circle(chex,chey,RED);
}
break;
case DOWN://棋子下移
if((chey+1)>19)
break;
else
{
for(i=chex,j=chey+1;j
if(che[i][j]==0)
{
draw_circle(chex,chey++,GREEN);
draw_pixel(chex,chey,8);
break;
}
if(j>19)
break;
chex=i;
if(flag==1)
draw_circle(chex,chey,BLUE);
else
draw_circle(chex,chey,RED);
}
break;
case UP://棋子上移
if((chey-1)
break;
else
{
for(i=chex,j=chey-1;j>=1;j--)
if(che[i][j]==0)
{
draw_circle(chex,chey,GREEN);
draw_pixel(chex,chey,8);
break;
}
if(j
break;
chey=j;
if(flag==1)
draw_circle(chex,chey,BLUE);
else
draw_circle(chex,chey,RED);
}
break;
case ESC://退出游戏
break;
case SPACE://落子
if(chex>=1&&chey=1)
{
if(che[chex][chey]==0)
{
che[chex][chey]=flag;
if(result(chex,chey)==1)
{
cleardevice();
if(flag==1)
{
cleardevice();
outtextxy(80,200,“CONGRATIONATIONS,BLUE WIN!”);
getch();
closegraph();
exit(0);
}
if(flag==2)
{
cleardevice();
outtextxy(80,200,“CONGRATIONATIONS,RED WIN!”);
getch();
closegraph();
exit(0);
}
}
if(flag==1)
flag=2;
else
flag=1;
break;
}
}
else
break;
} } //判断胜负
int result(int x,int y){
int j,k,n1,n2;
while(1)
{
n1=0;
n2=0;
for(j=x,k=y;j>=1&&k>=1;j--,k--)
{
if(che[j][k]==flag)
n1++;
else
break;
}
for(j=x,k=y;j
{
if(che[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++,k--)
{
if(che[j][k]==flag)
n1++;
else
break;
}
for(j=x,k=y;j>=1&&k
{
if(che[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(che[j][k]==flag)
n1++;
else
break;
}
for(j=x,k=y;j
{
if(che[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(che[j][k]==flag)
n1++;
else
break;
}
for(j=x,k=y;k
{
if(che[j][k]==flag)
n1++;
else
break;
}
if(n1+n2-1>=5)
return(1);
return(0);
} }
//主函数
int main(void){
initgraph(620,480);
start();
key=getch();
if(key==ESC)
exit(0);
else
{
cleardevice();
flag=1;
draw_cheboard();
do
{
chex=10;
chey=10;
if(flag==1)
draw_circle(chex,chey,BLUE);
else
draw_circle(chex,chey,RED);
do
{
while(getch()==0);
key=getch();
play();
}
while(key!=ESC&&key!=SPACE);
}
while(key!=ESC);
closegraph();
}
return 0;}
作者:flybird 时间:2012/08/18