五子棋游戏开发总结(C语言版)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
五子棋游戏开发总结
一.五子棋游戏概述
略
二.游戏功能
对弈游戏,自动判断游戏胜负。
采用人机对话模式,界面设计美观友好。
具体玩法:采用任意键开始游戏,此处采用键盘值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 chess[20][20]; //棋盘坐标位置
int flag=1;//标识要画的棋子的颜色flag=1,棋子为蓝色;其他为红色。int chessx,chessy;
void start();
void draw_chessboard();
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/press any key to continue ");
}
//画棋盘
void draw_chessboard()
{
int i,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-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<=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);
}
}
//游戏过程
void play()
{
int i,j;
switch(key)
{
case LEFT://棋子左移
if(chessx-1<0)
break;
{
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 RIGHT://棋子右移
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 DOWN://棋子下移
if((chessy+1)>19)
break;