五子棋游戏开发总结(C语言版)
五子棋游戏开发总结C语言版共7页word资料

五子棋游戏开发总结一.五子棋游戏概述略二.游戏功能对弈游戏,自动判断游戏胜负。
采用人机对话模式,界面设计美观友好。
具体玩法:采用任意键开始游戏,此处采用键盘值W、A、S、D控制棋子移动方向,空格键(SPACE)落子,ESC退出游戏。
三.系统开发平台1)Visual C++ 单纯的Visual C++ 不行,需下载一个EasyX小插件对其进行配置好才可(网上有下的,也有配置方法)。
2)程序代码必须以.cpp结尾。
3)最佳分辨率:最佳效果1024*768。
四.游戏开发详细过程:五.游戏的完整详细代码:#include <stdio.h>#include <graphics.h> //图形库#include <conio.h>#include <bios.h>#include <stdlib.h>//宏定义#define ESC 27 //退出#define SPACE 32#define LEFT 65 //向左键#define RIGHT 68#define UP 87#define DOWN 83int 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://棋子左移break;elsefor(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);elsedraw_circle(chessx,chessy,RED); break;case RIGHT://棋子右移if((chessx+1)>19)break;elsefor(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);elsedraw_circle(chessx,chessy,RED); break;case DOWN://棋子下移if((chessy+1)>19)break;elsefor(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;if(flag==1)draw_circle(chessx,chessy,BLUE);elsedraw_circle(chessx,chessy,RED);break;case UP://棋子上移if((chessy-1)<0)break;elsefor(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);elsedraw_circle(chessx,chessy,RED);break;case ESC://退出游戏break;case SPACE://落子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,"CONGRATIONA TIONS,BLUE WIN !");getch();closegraph();exit(0);if(flag==2)cleardevice();outtextxy(80,200,"CONGRATIONA TIONS,RED WIN !");getch();closegraph();exit(0);if(flag==1)elseflag=1;break;elsebreak;//判断胜负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(chess[j][k]==flag)n1++;elsebreak;for(j=x,k=y;j<=19&&k<=19;j++,k++)if(chess[j][k]==flag)n2++;elsebreak;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++;elsebreak;for(j=x,k=y;j>=1&&k<=19;j--,k++)if(chess[j][k]==flag)n2++;elsebreak;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++;elsefor(j=x,k=y;j<=19;j++)if(chess[j][k]==flag)n2++;elsebreak;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++;elsebreak;for(j=x,k=y;k<=19;k++)if(chess[j][k]==flag)n1++;elsebreak;if(n1+n2-1>=5)return(1);return (0);//主函数int main(void)initgraph(620,480);start();key=getch();if(key==ESC)exit(0);elsecleardevice();flag=1;draw_chessboard();dochessx=10;chessy=10;if(flag==1)draw_circle(chessx,chessy,BLUE);elsedraw_circle(chessx,chessy,RED);dowhile(getch()==0);key=getch();play();while(key!=ESC&&key!=SPACE);while(key!=ESC);closegraph();return 0;作者:flybird时间:2012/08/18。
C语言程序设计---五子棋 (1)

五子棋算法:任何一种棋类游戏其关键是对当前棋局是否有正确的评分,评分越准确则电脑的AI 越高。
五子棋游戏也是如此,但在打分之前,我们先扫描整个棋盘,把每个空位从八个方向上的棋型填入数组gStyle(2,15,15,8,2),其中第一个下标为1时表示黑棋,为2时表示白棋,第二和第三个下标表示(x,y),第四个下标表示8个方向,最后一个下标为1时表示棋子数,为2时表示空格数,如:gStyle(1,2,2,1,1)=3表示与坐标(2,2)在第1个方向上相邻的黑棋棋子数为3gstyle(1,2,2,1,2)=4表示与坐标(2,2)在第1个方向上的最近的空格数为4在定义方向时,也应该注意一定的技巧,表示两个相反的方向的数应该差4,在程序中我是这样定义的:Const DIR_UP=1Const DIR_UPRIGHT=2Const DIR_RIGHT=3Const DIR_RIGHTDOWN=4Const DIR_DOWN=5Const DIR_DOWNLEFT=6Const DIR_LEFT=7Const DIR_LEFTUP=8这样我们前四个方向可以通过加四得到另一个方向的值。
如果你还是不太明白,请看下面的图:---------------------oo-----ox*xx---------------------图中的*点从标为(4,4),(打*的位置是空位),则:gStyle(2,4,4,1,1)=1在(4,4)点相邻的上方白棋数为1gStyle(2,4,4,1,2)=2在(4,4)点的上方距上方白棋最近的空格数为2gStyle(1,4,4,3,1)=2在(4,4)点相邻的右方黑棋数为2gStyle(1,4,4,3,2)=1在(4,4)点的右方距右方黑棋最近的空格数为3...一旦把所有空点的棋型值填完,我们很容易地得出黑棋水平方向上点(4,4)的价值,由一个冲1(我把有界的棋称为冲)和活2(两边无界的棋称为活)组成的。
c语言五子棋课程设计报告

c语言五子棋课程设计报告一、前言五子棋作为一种智力游戏,在我国有着悠久的历史和广泛的群众基础。
本次设计的目的是使用C语言实现五子棋游戏,通过此次课程设计,学生将掌握C语言的编程思想和开发方法,同时了解五子棋游戏的规则和策略。
二、五子棋游戏规则五子棋游戏是在15*15的棋盘上进行,由黑白双方轮流落子,先将五个同色棋子连成一条线的一方获胜。
落子的位置必须为空,不能与已有的棋子重叠。
黑方先手,白方后手。
下图为五子棋棋盘示意图。
三、五子棋游戏实现本次课程设计采用C语言实现五子棋游戏,主要包括棋盘的绘制、落子的判断和胜负的判断等功能。
1.棋盘的绘制棋盘的绘制采用双重循环实现,将15*15的棋盘分成225个小格,其中包括14个横线和14个竖线,以及4个角上的点。
通过循环输出字符实现棋盘的绘制。
2.落子的判断落子的判断主要包括鼠标的点击和棋子的绘制两个部分。
当鼠标点击棋盘上的一个位置时,程序会根据当前轮到哪方落子来绘制相应颜色的棋子,并将该位置的状态改为已有棋子。
同时,程序会检查当前落子是否符合规则,即该位置是否为空,如果不为空则重新等待鼠标点击。
3.胜负的判断胜负的判断主要包括横向、纵向、斜向和反斜向四个方向。
通过判断当前落子位置在这四个方向上的连续棋子数是否达到五个来确定胜负。
如果达到五个,则程序会弹出相应的提示框,显示胜利方。
四、总结通过本次课程设计,学生掌握了C语言的编程思想和开发方法,同时了解了五子棋游戏的规则和策略。
本次设计主要包括棋盘的绘制、落子的判断和胜负的判断等功能。
希望本次课程设计能够增强学生的编程能力和对五子棋游戏的理解。
【报告】c五子棋实验报告

【关键字】报告c五子棋实验报告篇一:五子棋对战实验报告实验项目五子棋网络对战和聊天实验日期XX0406实验报告要求:一、实验目的:学习和使用socket编程,熟练软件开发二、实验原理:使用socket进行网络通信,java作为编程语言三、实验要求:编写五子棋程序可以实现联机网络对战,并且可以进行聊天四、实验步骤、结果(程序+注释+截图)及分析:首先拟定编程语言与开发方案,选择java语言,考虑到java可以跨平台运行,然后决定把这个程序拆分为客户端、服务器两个部分,每个部分再分成5个小的部分实现不同功能。
1、然后考虑使用java的swing包,创建ClientChessPanel类负责棋盘部分,包括判断输赢,使用数组chesses[i][j]记录棋盘上棋子的分布,对数组进行不同的赋值表示网格节点上无棋、黑棋、白棋;使用playChessHandler作为鼠标单击事件,单击事件调用Clientskt中的函数传送棋子坐标以及输赢信息。
drawChess函数画棋子,drawGrids画网格,gameOver判断棋盘棋子分布,输赢情况。
importjavax.swing.*;importjava.awt.*;;importChatOneToOneClient.Clientskt;classClientChessPanel extends JPanel{private static final long serialVersionUID = 1L;private int space=20; //网格间的距离private int grids=30; //棋盘的网格数private int radius=space/2; //棋的半径Clientsktskt;//当chesses[i][j]=0,表示网格节点(i,j)上无棋//当chesses[i][j]=1,表示网格节点(i,j)上放白棋//当chesses[i][j]=2,表示网格节点(i,j)上放黑棋privateint[][] chesses=new int[grids+1][grids+1];private intcurrColor=1; //当前棋的颜色privateMouseListenerplayChessHandler=new MouseAdapter(){public void mouseClicked(MouseEvent e){if(skt.reMouseGo()){int x=e.getX();int y=e.getY();//放一颗棋子if(x=0 && y=0)if(chesses[round(x)][round(y)]==0){chesses[round(x)][round(y)]=currColor;repaint(); //刷新图形skt.dataout("x:"+String.valueOf(round(x)));skt.dataout("y:"+String.valueOf(round(y)));skt.setMouseGo(false);if(gameOver(currColor)){skt.dataout("g:你输了");ClientMyDialog(skt.chat,"你赢了");;}currColor=currColor==1?2:1; //切换棋子的颜色}}}};public int round(float a){ //获得接近a的网格节点坐标float f=a/space;returnMath.round(f);}publicClientChessPanel(intspace,intgrids,Clientsktskt){ this.space=space;this.grids=grids;this.radius=space/2;this.skt=skt;setBackground(Color.BLUE);setSize(space*grids,space*grids);addMouseListener(playChessHandler);startChess();}public void startChess(){clearGrids(); //清空棋盘currColor=1;repaint(); //刷新图形private void clearGrids(){for(inti=0;i for(int j=0;j chesses[i][j]=0;}//画一颗棋子private void drawChess(Graphics g,intx,inty,int color){g.setColor(color==1?Color.GREEN:Color.BLACK);g.fillOval(x*space-radius,y*space-radius,radius*2,radius*2);}//画网格private void drawGrids(Graphics g){g.setColor(Color.DARK_GRAY);for(inti=0;i g.drawLine(0,i*space,grids*space,i*space);g.drawLine(i*space,0,i*space,grids*space);}}//接收对方下的棋坐标public void paintChess(intx,int y){if(x=0 && y=0){if(chesses[x][y]==0){chesses[x][y]=currColor;currColor=currColor==1?2:1; //切换棋子的颜色skt.setMouseGo(false);skt.setMouseGo(true);repaint(); //刷新图形}}}//判断游戏是否结束publicbooleangameOver(intgameOver){int five=0;//用于判断是否有连续5个子for(inti=0;i for(int j=0;j if(chesses[i][j]==gameOver){five++;for(in(本文来自:小草范文网:c五子棋实验报告)t k=1;k if(chesses[i][j+k]==gameOver){five++;if(five==5){return true;}else{five=1;k=5;}}for(int k=1;k if(chesses[i+k][j]==gameOver){ five++;if(five==5){return true;}}else{five=1;k=5;}}for(int k=1;k if(chesses[i+k][j+k]==gameOver){ five++;if(five==5){return true;}}else{five=1;k=5;}}for(int k=1;k4;k++){//左斜向比较if(chesses[i+k][j-k]==gameOver){five++;if(five==5){return true;}}else{five=1;}}}}five=0;}return false;}public void paintComponent(Graphics g){ //覆盖paintComponent()方法super.paintComponent(g); //必须先调用父类的方法drawGrids(g); //画网格for(inti=0;i for(int j=0;j if(chesses[i][j]!=0)drawChess(g,i,j,chesses[i][j]); //画棋子}}2、ClientComponentPopupMenu类主要负责聊天的部分,使用JTextField并且对其添加单击事件以及鼠标事件,可以实现文本的剪贴、复制粘贴等功能。
c 五子棋实验报告

c 五子棋实验报告
C五子棋实验报告
引言
五子棋是一种古老的策略游戏,它既考验了玩家的思维能力,又具有很高的娱乐性。
在本次实验中,我们将利用C语言编程,设计一个简单的五子棋游戏,并对其进行实验测试。
实验目的
1. 学习使用C语言进行游戏开发;
2. 设计并实现一个简单的五子棋游戏;
3. 对游戏进行功能测试和性能评估。
实验方法
1. 使用C语言编写五子棋游戏的程序代码;
2. 设计游戏界面和用户交互功能;
3. 实现游戏规则和胜负判定功能;
4. 进行功能测试和性能评估。
实验结果
经过实验,我们成功地设计并实现了一个简单的五子棋游戏。
游戏具有清晰的界面和简单的操作方式,玩家可以轻松上手。
在功能测试中,游戏能够正确判定胜负,且没有出现明显的bug。
在性能评估中,游戏在常见的操作系统上都能够流畅运行,响应速度较快。
实验结论
通过本次实验,我们学习到了使用C语言进行游戏开发的基本方法和技巧。
我
们成功地设计并实现了一个简单的五子棋游戏,并对其进行了功能测试和性能
评估。
实验结果表明,我们的游戏具有良好的稳定性和性能表现,能够满足玩
家的基本需求。
展望
在未来,我们可以进一步完善游戏的功能和界面设计,增加更多的游戏模式和
挑战性。
我们也可以考虑将游戏移植到其他平台上,以提供更广泛的游戏体验。
同时,我们还可以利用更先进的技术和算法,进一步优化游戏的性能和用户体验。
总之,我们将继续努力,不断改进和完善我们的五子棋游戏,为玩家提供
更好的游戏体验。
c语言五子棋课程设计心得

c语言五子棋课程设计心得C语言五子棋课程设计心得在C语言课程中,五子棋作为经典的游戏项目之一,是很多学习者热爱的挑战。
通过五子棋的设计开发,学生们掌握了众多的C语言基本语法、数据类型、指针、循环,选择结构、函数等知识点,同时也锻炼了逻辑思维、编程能力和动手实践能力。
以下,我将分步骤阐述我在C语言五子棋课程设计中的心得体会。
1.确定游戏规则:五子棋在规则上主要包括棋盘的大小、棋子的形状、落子的规则、胜负的判断等方面。
设计者需要在参考五子棋规则的基础上,结合C语言的语法特点,确定如何对棋盘数组进行初始化,构造落子方法,进行胜负的判断等。
2.选择数据类型:由于棋子的状态(黑、白、无),游戏状态(落子状态、胜负状态)、棋盘数组等内容均需要存储,因此需要注意变量的数据类型。
在此我选择char类型存储棋盘数组和棋子状态,int类型存储游戏状态。
3.构造棋盘数组:在此我选择二维数组来实现。
需要注意的是,此二维数组的长度存储了棋盘的大小(如15×15)。
在数组初始化时,所有元素默认为无状态(即“+”)。
4.编写落子方法:落子方法的编写需要结合指针、循环,选择结构等语法特点。
在此,我设计出结果返回值为bool类型的函数playerMove,来实现玩家落子功能。
首先,函数需要定义所落子的坐标(如(i,j)),判断该坐标是否已有棋子(即棋子状态是否为“+”),若该坐标无棋子,则将该坐标状态赋为黑棋(" ● ")或白棋(" ○ ")。
注意事项:需要不断输入,产生循环,直到格子上没有棋子。
5.设计AI:我设计出结果为坐标的函数AIMove,实现AI的自动落子,即电脑随机在棋盘上落子。
针对AI的设计,需要注意实现随机的位置输出方法,且选择落子后的判断方式,判断其是否产生胜利。
6.胜负判断:胜负的判断方式有很多,如水平、垂直、正斜线和反斜线等情况。
由于时间的限制,我在此选择了判断水平、垂直、正斜线三种情况的方法,细节上便是没有循环变量从左到右顺序扫描棋盘,进行状态判断,以确定胜负状态。
c语言报告五子棋

青岛理工大学《C语言程序设计》题目游戏五子棋指导教师:李兰姓名:王鹏学号:200907127班级:计算094专业:计算机科学与技术地点:二号实验楼第六机房时间: 6.28 至7.1一、内容游戏五子棋在这个小游戏中,实现了两人对战的游戏模式,没有添加禁手规则,另外考虑到落子时的可能失误,就添加了悔棋工具,游戏过程中可以进行游戏存档,进入悔棋和存档的方法为将光标移动到已有子的位置,敲一下落子键即可。
下次游戏时候可以进入存档界面然后选择读取游戏存档即可继续玩上次的游戏。
在游戏时自动计算双方各胜几局,平几局。
按键控制一号玩家:上:w 下:s 左: a 右 : d 落子: f二号玩家:上:I 下:k 左: j 右: l 落子: h二、上机环境操作系统:Windows 98/XP/Win 7开发工具:VC++6.0三、函数调用关系图四、各函数功能说明对每个函数功能加以说明,说明该函数主要实现了什么内容。
1 int main() 主函数2 system(“color 5a”) 控制台前景、背景颜色设置3 system(“cls”) 清屏4 Printsjm(void) 输出游戏首界面5 start(void) 界面初始化6 print(void) 界面刷新7 check(void) 检测是否有一方赢棋8 checkheqi(void) 检测是否和棋9 zq(int,char (*p)[],char (*p)[]) 走棋落子10 huiqi(char (*p)[]) 悔棋11 jilu(char (*p)[]) 记录上次落子前的界面12 cundang(void) 存储游戏进度13 duqu(void) 读取游戏进度14 fuzhi(void) 保存临时界面15 huifu(void) 恢复临时界面以实现光标移动16 newdata(void) 数据刷新五、算法描述或流程图system(“color 5a”)和system(“cls”) 只需要调用<stdlib.h>头文件,并在使用前将要声明的变量声明好即可。
c 五子棋实验报告

c 五子棋实验报告五子棋实验报告引言五子棋是一种古老而受欢迎的棋类游戏,它简单易学,却又充满了策略性。
为了更深入地了解五子棋的规则和策略,我们进行了一系列实验,以探索不同因素对游戏结果的影响。
实验一:棋手水平对游戏结果的影响我们邀请了10名棋手参与实验,他们分别具有不同水平的五子棋技能。
实验中,每个棋手与其他9名棋手进行对局,共进行了45局比赛。
结果显示,技术水平较高的棋手在对局中获胜的次数更多,而技术水平较低的棋手则相对较少。
这表明,五子棋是一种需要技巧和经验的游戏,高水平的棋手在对局中具有明显的优势。
实验二:先手与后手的优劣势为了研究先手与后手在五子棋中的优劣势,我们进行了一组对局实验。
实验中,每个棋手与其他棋手进行5局对局,分别执黑先手和白后手。
结果显示,先手方在对局中的获胜率略高于后手方。
这可能是因为先手方在棋局初期可以占据更多的关键位置,从而更容易形成有利的局面。
然而,我们也观察到,随着棋局的发展,后手方有机会通过反击和防守来扭转局势。
实验三:不同开局策略的效果比较为了研究不同开局策略对五子棋结果的影响,我们选择了三种常见的开局策略进行实验比较。
实验中,每个棋手与其他棋手进行5局对局,分别采用三种不同的开局策略。
结果显示,开局策略A相对于策略B和C,在对局中获胜的次数更多。
这可能是因为策略A更加注重中心位置的争夺,从而更容易形成有利的局面。
然而,我们也观察到,策略B和C在特定情况下也能发挥出色,这表明在五子棋中,开局策略的选择应该根据具体情况进行调整。
实验四:不同棋盘大小对游戏结果的影响为了研究不同棋盘大小对五子棋结果的影响,我们进行了一组对局实验。
实验中,每个棋手与其他棋手进行5局对局,分别在15x15、19x19和23x23的棋盘上进行。
结果显示,随着棋盘大小的增加,对局的复杂度也增加了。
在15x15棋盘上,棋手们更容易形成有利的局面,并且获胜的次数相对较多。
而在23x23棋盘上,棋手们更容易出现失误,对局结果更加平均。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#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!");
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);
五子棋游戏开发总结
一.五子棋游戏概述
略
二.游戏功能
对弈游戏,自动判断游戏胜负。
采用人机对话模式,界面设计美观友好。
具体玩法:采用任意键开始游戏,此处采用键盘值W、A、S、D控制棋子移动方向,空格键(SPACE)落子,ESC退出游戏。
三.系统开发平台
1)Visual C++单纯的Visual C++不行,需下载一个EasyX小插件对其进行配置好才可(网上有下的,也有配置方法)。
}
//画棋子
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)
2)程序代码必须以.cpp结尾。
3)最佳分辨率:最佳效果1024*768。
四.游戏开发详细过程:
五.游戏的完整详细代码:
#include <stdio.h>
#include <graphics.h>//图形库
#include <conio.h>
#include <bios.h>
#include <stdlib.h>
if(flag==1)
draw_circle(chessx,chessy,BLUE);
{
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);
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;
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;
}
if(i<1)
break;
chessx=i;
if(==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++)
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");
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);
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
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);