五子棋游戏(参考).doc_第1页
五子棋游戏(参考).doc_第2页
五子棋游戏(参考).doc_第3页
五子棋游戏(参考).doc_第4页
五子棋游戏(参考).doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

人机对战五子棋游戏项目文档思维分析:1. 分为显示部分和棋子的选址之处2. 选子分为:机器选址和人工先址,如果是机器选址话,这是大算法(算法越先进,越智能)。3. 显示:初始,下棋时4. 整个程序:初始+循环下棋(算法+显示)功能分析:1. 显示画面功能2. 有输入时的反应3. 没输入时怎么操作4. 结束功能任务分析:在一个2020的棋盘里,进行循环轮流交替下棋,如果五子连珠,则该方胜,退出游戏。初步设计(系统分析):1. 显示:初始化+画面2. 进行循环游戏 人输入时:移动的方向显示移动后的结果移动后是否五子连珠,如果是,则人胜出,游戏结束 机器输入时: 选择移动的目标位置 显示移动的路径移动后是否五子连珠,如果是,则机器胜出,游戏结束 返回到循环开始位置3. 结束游戏具体设计(系统设计):1. 显示:初始化+画面1.1 初始化图形驱动1.2 绘制棋盘1.2.1 底部颜色1.2.2 棋盘2020个方格2. 进行游戏2.1 设置初始的棋手,棋子的位置2.1.1 设置当前棋手2.1.2 棋子的初始位置2.1.3 初始棋手的显示(提示)2.2 进行循环游戏:每替换选手一次,就做一次循环2.2.1 人输入时:2.2.1.1 等待人的输入(键盘的输入), 提示人应按输入2.2.1.2 如有输入,则处理输入方向2.2.1.2.1 如果是出格或已有棋子,则报警,不输入2.2.1.2.2 如果条件允许,则刷新显示,记录该棋子2.2.1.3 判断是否五子连珠,如果是,则人胜利, 结束游戏 2.2.2 机器输入输入时: 2.2.2.1 提示机器输入2.2.2.2选择输入的地方(智能算法,需要当前棋子情况) 2.2.2.3 移动显示效果(垂直或水平移动) 2.2.2.4 判定是否五子连珠,如果是,则机器胜利,结束游戏 2.3.2 是ESC的话,则退出 2.3.3 是其他的话,则不反映3. 结束游戏3.1 显示game over3.1.1 YOU WIN!3.1.2 SORRY!3.2 结束显示,返回详细设计:1. 显示:初始化+画面1.1 初始化图形驱动: initgraph(); /初始化图形系统 int iDriver,iMode; detectgraph(&iDriver,&iMode); initgraph(&iDriver,&iMode,);1.2 绘制游戏界面1.2.1 20X20的方格 for(i=0;iMAXLIE;i+) /画白格子 for(ii=0;iiMAXHANG;ii+) xtemp=xlong*(i+1);ytemp=ylong*(ii+1); setcolor(normalcolor); rectangle (xtemp,ytemp,xtemp+xstart,ytemp+ystart); 1.2.2 下面的文字显示 outtextxy(xLong,yLong*(MAXHANG+2)+3,Its player1s turns); outtextxy(xLong,yLong*(MAXHANG+3),Player1 win, press any key to quit);1.2.3 画棋子及边框 fillellipse(xtemp+xr+1,ytemp+yr+1,xr,yr); rectangle ()2. 进行游戏2.1 设置初始的棋手,棋子的位置2.1.1 设置当前棋手 playernow=player1;2.1.2 棋子的初始位置 不设置初始棋子位置,可设置提示框在chess00; rectangle ()2.1.3 初始棋手的显示(提示)2.2 进行死循环游戏:棋子移动一次,就做一次循环/或者:每替换选手一次,就做一次循环while(1)2.2.1 由人输入时:2.2.1.1 接收方向键if(playernow=player1) c=getch();2.2.1.2 暂存棋子的位置 case RIGHT: if(x0) x-; else x=MAXLIE-1; case UP: if(y0) y-; else y=MAXHANG-1; case DOWN: if(yMAXHANG-1) y+; else y=0;2.2.2 机器输入时:2.2.2.1 选择落子之处 basefind(chess,&xfind,&yfind,playernow);/重要算法,通过当前的棋/局(棋盘情况、当前的棋手)来确定棋子的位置。 if(xxfind)c=RIGHT; else if(yxfind)c=LEFT; else if(yyfind)c=UP; else c=r; /设定为回车,即确定输入 2.2.2.2 进行移动 switch(c) case RIGHT: if(x0) x-; else x=MAXLIE-1; case UP: if(y0) y-; else y=MAXHANG-1; case DOWN: if(yMAXHANG-1) y+; else y=0; 2.2.3 回车输入:判定五子连珠2.2.3.1 确定棋子,看此处是否为空,能否落子if(chessyx=0) chessyx=playernow; /被现在方占else printf(a); /报警2.2.3.2 判定棋盘上是否有同方五子连珠 islianzhu(chess);/函数,根据棋盘存储情况来判定是否连珠2.2.3.3 判定胜方 if(playernow=player1) outtextxy(); else outtextxy();2.2.3.4 退出:调用结束游戏函数 2.2.3.4 交换棋手(在判定落子有效的情况下) if(playernow=player1) playernow=player2; /确定后交换对手 else playernow=player1;2.2.4 显示设置2.2.4.1 清除原来的提示框和棋子:把原来位置重新用棋面颜色画一遍2.2.4.2 显示现在的提示框和棋子:把现在位置重新用棋子颜色画一遍2.2.4.3 显示提示语句/while(有输入完)3. 结束游戏3.1 显示game over cleardevice(); PrScore(); setcolor(RED); settextstyle(); outtextxy(200,200,GAME OVER);outtextxy(200,200,YOU WIN!);/ outtextxy(200,200,Sorry!) getch();3.2 结束显示,返回 closegraph();数据结构设计(模块接口):int chessMAXHANGMAXLIE;/棋盘二维数组,记录棋子。20*20,=1:棋手1占/2:棋手2占/0:空int x,y,xr,yr,xb,yb,xstart,ystart,xtemp,ytemp,xfind,yf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论