五子棋游戏开发总结C语言版.docx

上传人:b****9 文档编号:25000605 上传时间:2023-06-03 格式:DOCX 页数:17 大小:828.53KB
下载 相关 举报
五子棋游戏开发总结C语言版.docx_第1页
第1页 / 共17页
五子棋游戏开发总结C语言版.docx_第2页
第2页 / 共17页
五子棋游戏开发总结C语言版.docx_第3页
第3页 / 共17页
五子棋游戏开发总结C语言版.docx_第4页
第4页 / 共17页
五子棋游戏开发总结C语言版.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

五子棋游戏开发总结C语言版.docx

《五子棋游戏开发总结C语言版.docx》由会员分享,可在线阅读,更多相关《五子棋游戏开发总结C语言版.docx(17页珍藏版)》请在冰豆网上搜索。

五子棋游戏开发总结C语言版.docx

五子棋游戏开发总结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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1