数据结构课程设计实验报告五子棋

合集下载

五子棋课程实训报告

五子棋课程实训报告

一、设计内容与设计要求1.设计内容:在手机屏幕上设计一个五子棋游戏,屏幕有棋盘,可人与人对奕,人与机对弈。

双方交替下棋,如果某方在水平、垂直或45度方向有连续的5个棋子,就算胜利,结束比赛,提示游戏得到的分数。

2.设计要求:(1)论述课题的性质、内容以及本次课程实训的目的和要求。

(2)说明Android系统对计算机软、硬件环境的基本要求,对Android应用程序作简要的说明。

(3)界面设计和游戏操作设计:界面要求美观和友好(可使用图片资源文件),使用手机键盘上的2个方向键控制方向,按照手机上的操作习惯进行设计。

)游戏核心数据结构设计4(.主要是界面控制信息:五子棋的位置信息,双方已经下棋子的具体位置。

逻辑控制信息主要双方交替下棋。

下棋子和处理, 棋子只能下到棋盘的指定位置(棋盘的格子上)并不能下到已经有棋子位置,(5)胜负判断:双方每个已下点的3个方向判断它们是否构成五连、五连就胜利。

(6)编写代码、上机输入、调试、修改并运行通过。

(7)编写实训说明书。

说明书是总结性的技术文件,应全面叙述整个设计的内容及过程(可参考上述6条),发现的问题及解决方法等。

(8)源代码和参考书目应作为说明书的附录。

(9)说明书应采用A4纸张,文字说明不少于4000字。

说明书中应包括系统结构示意图。

进度安排二、第十五周星期一上午8:30——11:30,星期二下午2:30——5:00,星期三上午8:30——11:30,星期四上午8:30——11:30,第十六周星期一一天,星期二一天星期三上午8:30——11:30,星期四上午8:30——11:30,目录一、课程实训的目的及要求-------------------------------------------6二、游戏设计思路---------------------------------------------------7三、主要功能实现---------------------------------------------------9四、程序调试-------------------------------------------------------12五、程序源代码-----------------------------------------------------13六、总结-----------------------------------------------------------21七、课程设计评分表-------------------------------------------------22一、课程实训的目的及要求本次课程实训是专门针对大四学生的一次项目实践,当前3G移动互联网发展迅速,而Android系统已经成为当前时期移动终端设备的主流操作系统之一,在这样的条件下计算机与通信学院组织这次基于Android系统的手机项目实战,紧跟当前时代电子通信业的发展,让学生学习当前主流的新技术,扩展学生们的视野,为即将大学毕业的我们进入社会求职开辟了一条新道路。

五子棋游戏实验报告

五子棋游戏实验报告
重新绘制棋盘是独立的一块功能,因此考虑用全局子过程来实现,该子过程定义在模块中。思路如下:
清屏—绘制棋盘—根据a数组中的每一项的两个下标来决定绘制棋子的位置,根据每一项的值是1还是2来决定在该位置绘制何颜色的棋子。
决定该黑白方走的blackwhite变量当时没有保存,可以采用在数据库中保存的方式来解决,本例中解决方法是通过数黑白棋子个数来决定恢复棋局后该谁走的。
(6)棋局能够恢复,即重新打开,打开后出现棋局结束的状态、对手名字(此功能要求用数据库和文件两种技术实现)。
2.其它要求:
(1)界面友好、漂亮。
(2)程序尽可能无bug。
(3)程序健壮性强,基本上达到无论用户如何操作,软件都不出错,都有相应的处理方法。
3.设计步骤
(1)首先做界面
界面包括几个窗体,窗体上有相应的控件。
(6)五子棋保存棋局
思路:保存棋局的功能即把内存中与棋局相关的数据(棋局名称、棋子位置、棋子颜色、棋局状态(即棋局是否结束))存入外存中,以便以后能够恢复棋局。保存的实现用两种技术实现:文件和数据库。
采用数据库技术实现棋局保存:
数据库设计:
数据表字段:棋局名、x坐标、y坐标、该点状态值、下棋状态。
每条记录表示棋盘上一个存储的点的信息。
二、实验内容
1.基本要求:
(1)输入两个对手名字,然后进入游戏界面。
(2)用鼠标点击的方式在棋盘上摆放棋子,黑白交替。(棋盘15*15)
(3)可以悔棋。
(4)五子连在一起的时候能判断胜利,并且显示出胜利者的名字。
(5)能够将棋局的结ຫໍສະໝຸດ 保存,保存该棋局结束的状态、对手名字、棋局名字(棋局名字在保存时由用户在相应的界面下添入)(此功能要求用数据库和文件两种技术实现)。

c++上机实习报告-五子棋

c++上机实习报告-五子棋

目录一概述 (2)二总体方案设计 (3)三详细设计 (4)四程序的调试与运行结果说明 (8)五课程设计总结 (10)六后记 (11)参考文献 (11)附录——源代码 (12)一概述1.课程设计的目的1、学会编写C++程序。

2、课程设计是检验我知识能力的一种途径。

3、课程设计能让我学会许多书本中学不到的东西。

4、课程设计能使我所学知识融会贯通,熟练掌握C++中一些基本知识点。

5、课程设计是一次很好的实践机会,可以通过实际操作来找出不足,修改不足,让自己精益求精,做到最好。

6、通过设计开发五子棋这个具体的例子把我所学到的和我所想到的都运进设计一个自己的作品。

7、通过课程设计培养了我的动手能力以及综合运用所学的C++语言基础论,基础知识,基本技能,进行程序分析和程序开发,提高在实际开发中解决问题的能力,达到了能够利用C++语言进行应用程序的规划,分析,设计和实施,更能进一步使我对这门语言有深刻的理解和更好的得到巩固,更能对我所学的知识得到检验。

2.课程设计的要求需要的基本知识与技能:C++语言基本理论,基础知识,基本技能。

数据结构相关知识。

尚未掌握的知识点:由于最开始想开发windows界面的五子棋,查阅了很多相关资料。

比如《浅入浅出MFC》、《c++可视化编程》等等,但最终因自己可视化界面编程知识的缺乏和时间问题,改编成了dos界面的五子棋。

要想做一个完成的五子棋游戏,还需要学习《算法设计》《人工智能》等相关知识。

3.课程设计的主要设计思想1.五子棋是一个棋牌类对战游戏,一般有人机对战,和双人对战两种模式。

由于人机对战涉及人工智能等后续课程,所以我的程序只涉及了双人对战这一模式。

2.程序用一个二位数组name【N】【N】来存放棋盘信息,N=20表示一个20*20的棋盘。

Name【i】【j】=0表示此位置上没有落子,1、2分别表示落有黑子和白子。

3.程序中还应有个最重要的功能就是判断胜负。

五子棋游戏中,只要一方棋子在任一直线上率先连成五颗即为胜利。

五子棋人机博弈实验报告

五子棋人机博弈实验报告

五子棋人机博弈实验报告目录一(课程设计目的............................................. 2 二(课程设计要求............................................. 2 三(课程设计内容............................................. 2 四(课程设计思想............................................. 2 五(系统实现 (2)设计平台 (2)数据结构设计 (3)程序流程图设计 (3)主要算法设计 (4)程序调试及运行结果.............................. 4 六(课程设计总结............................................. 5 七(参考资料................................................... 6 八(附录:五子棋博弈算法源代码 (7)1一( 课程设计目的通过上学期学习的《人工智能》学科,运用推理技术、搜索方法和决策规划和博弈树设计五子棋人机博弈系统,以此进一步深化对理论知识技术的了解,培养学生编程能力以及实践水平。

二(课程设计要求通过本次课程设计要求学生掌握以下内容:1.深入了解博弈树和alpha-beta剪枝算法。

2.设计出适合五子棋算法的启发式函数。

3.熟练掌握启发式的搜索方法。

三(课程设计内容本系统实现的是五子棋博弈算法,运用java语言实现了图形用户界面,方便用户使用。

算法采用了博弈算法和启发式函数进行搜索,人机对弈可自动判断输赢,结束后可重新开局。

四(课程设计思想本系统实现的是五子棋博弈算法,为了方便用户的使用,采用的是java图形用户界面技术。

为了记录棋盘的每一个下棋点,定义数组array[19][19]。

(最新版)五子棋毕业课程设计报告

(最新版)五子棋毕业课程设计报告

上海海事大学程序设计课程设计报告课程题目FIVE CHESS GAME作者姓名学号联系方式指导教师学科(专业)所在学院提交日期目录1引言 (3)1.1五子棋介绍 (3)1.2选题背景和动机 (3)1.3系统所要解决的问题 (3)2 系统框架 (5)2.1棋盘类 (6)2.1.1 主要成员变量说明: (6)2.1.2清空棋盘——Clear (6)2.1.3绘制棋子——Draw (6)2.1.4左键消息——OnLButtonUp (7)2.1.5载入棋盘 (7)2.1.6对方落子完毕——Over (7)2.1.7设置游戏模式——SetGameMode (7)2.1.8胜负的判断——Win (7)2.2游戏模式类 (8)3关键技术 (9)3.1 棋盘对话框的制作 (9)3.1.1 对话框机制 (9)3.1.3 棋子 (10)3.2 人机对弈 (10)3.2.1 难度的选择 (10)3.2.2 机器的落子判断 (11)4运行结果 (15)4.1开发环境及运行环境 (15)4.1.1开发环境 (15)4.1.2运行环境 (15)4.2运行图示 (15)4.2.1 棋盘显示 (15)4.2.2 开始的选择对话框 (16)4.2.3 主界面中的游戏难度选项 (16)4.2.4 电脑的应对 (17)5调试分析 (19)6总结 (21)参考文献 (22)1引言1.1五子棋介绍五子棋是起源于中国古代的传统黑白棋种之一。

现代五子棋日文称之为“連珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。

五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。

五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。

【报告】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并且对其添加单击事件以及鼠标事件,可以实现文本的剪贴、复制粘贴等功能。

五子棋系统实验报告

五子棋系统实验报告

湖南工业大学课程设计任务书2015—2016学年第2 学期计算机与通信学院(系、部)计算机科学与技术专业计算机1502班级课程名称:面向对象程序设计设计题目:五子棋完成期限:自2016年6月13日至2016年6月19日共1周指导教师(签字):年月日系(教研室)主任(签字):年月日面向对象程序设计课程设计设计说明书五子棋起止日期: 2016年6月13日至 2016年6月18日学生姓名王回班级计算机1502学号15408100209成绩指导教师(签字)计算机与通信学院2016年 6 月 18日五子棋一、课题的介绍和课题的任务设计的课题名称:五子棋实现以下功能:功能1、模拟真实棋盘棋子功能2、模拟人与人对战下棋功能3、模拟实时胜负判断功能4、模拟棋局的存储与读取二、设计的要求具有动画功能(即图像能即时移动),能实现人与人进行简单的对玩,能实现简单的胜负判断三、系统的分析和系统中类的设计CWZQApp类作用:初始化应用程序及运行该程序的所需要的成员函数CWZQDoc类作用:存放应用程序的数据以及实现文件的保存,加载功能CMainFrame类作用:管理应用程序的窗口,显示标题栏,状态栏,工具栏等,同时处理针对窗口操作的信息CAboutDlg类作用:向导自动生成对话框类CWZQView类作用:管理视图窗口,在框架窗口中实现用户数据的显示和打印,存放添加的功能模块CWZQView类中的成员函数与数据成员:void Save(); //**** //保存文件void OnOpen() //打开文件void over(CPoint point);//**** //检查是否结束voidOnDraw(CDC* pDC) //画棋盘函数void OnLButtonUp(UINT nFlags, CPoint point)//模拟下棋函数HCURSOR hcursorwhite; //**** //两个鼠标HCURSOR hcursorblack; //****intwzq[19][19]; //**** //棋盘数组boolcolorwhite; //**** // colorwhite TRUE时白棋下,否则黑棋下CBitmapm_bmblack; //**** //棋子位图CBitmapm_bmwhite; //****void CWZQView::OnDraw(CDC* pDC) //构造棋盘,显示白棋以及黑棋GetDocument() //获取文档指针,在视图中显示文档内容CBrush //用于构造CBrush对象,然后传给需要画刷的CDC成员函数pDC->FillRect(myrect1,&mybrush1) // 画黑框线四、系统的实现及调试添加的功能:1.图标,光标以及位图的绘制程序运行开始鼠标在进入棋盘界面未放下棋子时变为类似棋子光标,此处需要描绘2种棋子光标:黑白鼠标Cursor以替换当前鼠标:IDC_CURSOR1 黑棋子IDC_CURSOR2 白棋子说明:由于下棋时我们必须把鼠标热点设置在中间,点击下图(图3-1-3)最右边按扭,然后把鼠标移动到图像中你想设置为热点的地方,按下鼠标左键。

五子棋课程设计实验报告

五子棋课程设计实验报告

西南交通大学程序语言综合课程设计五子棋游戏课程《程序语言综合课程设计》学院信息科学与技术学专业软件工程姓名学号 20119050 日期 2016年月日目录第一章课程设计的目的和要求 (3)1.1 课程设计的目的 (3)1.2 课程设计的要求 (3)1.3 课程设计的实验环境 (3)第二章功能描述 (4)第三章总体设计 (5)3.1 功能模块设计 (5)3.1.1 任务执行流程图 (5)3.1.2 下棋函数流程图 (6)3.2 数据结构设计 (7)3.2.1 定义结构体 (7)3.2.2 定义数组 (7)3.2.3 全局变量 (7)3.3 函数功能描述 (7)第四章程序实现 (8)4.1源码分析 (8)4.2运行结果及界面介绍 (22)第五章后记 (27)第一章课程设计的目的和要求1.1 课程设计的目的1.加深对C语言数据类型,运算,语句结构及其程序设计的基本方法理解和掌握;2.熟练掌握流程图的绘制、程序设计文档的书写;3.通过编写一个完整的程序,一方面可以检查我们这学期的学习情况,为以后的学习打下坚实的基础;4.熟悉C语言游戏编程,掌握五子棋游戏开发的基本原理,从而为以后的程序开发奠定基础。

1.2 课程设计的要求1、编写程序代码,调试所写程序使其能够正确运行;2、能进行基本的五子棋操作,有图形界面,能够用键盘操作;3、能够实现悔棋、存档和读档等附加功能1.3 课程设计的实验环境该课程设计在设计与实验过程中需要在windows XP系统/windows 2000以上系统中进行,程序设计要求在visual C++6.0平台中进行,完成代码的编写、编译、调试、测试等工作。

本游戏对计算机硬件和操作系统要求极低,所以在这里只是把自己的电脑硬件参数和系统参数列下:硬件:Cpu:2.1GHZ,内存,2GB,硬盘:320GB,操作系统:windows xp软件环境:安装VC++6.0第二章功能描述本程序用C语言实现了五子棋游戏,能进行基本的五子棋操作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

湖南科技学院实验报告系部:计算机与通信工程系专业:软件工程姓名:范清文学号:201008003113班级:软件1001班课程名称:数据结构程序课程设计指导老师:卿武明实验项目:制作简单的五子棋课程设计目的:1:对本学期所学的专业知识进行实践运用2:制作五子棋并实现它的图示化实验环境:Visual C++6.0实验内容(算法、程序、步骤和方法):#include<iostream>#include<conio.h>using namespace std;int x,y,Step=0;bool flag=0;char Switch;char map[20][20][3]={ {"┌","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┐"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"}, {"└","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┘"}}; char copymap[20][20][2];float Player[20][20][1];int Table[20][20] ,Showboard(),Play(),Interface(),Initboard(),Judgewin(),Deuce() ,Initdata();bool legal(),Overflow();int Interface(){char a;cout << "\n\n五子棋\n \t\t─\n 制作人:范清文(201008003113)\n\t\t────\n";cout << " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl;cout << " ~~ ~~" << endl;cout << " ~~ 1:人人对战~~" << endl;cout << " ~~ ~~" << endl;cout << " ~~ 2:退出~~" << endl;cout << " ~~ ~~" << endl;cout << " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl;cout << "\n 请选择:";cin >> a;if(a=='2'){cout << "\n谢谢使用!\n";cout << "按任意键退出!";getch();return 0;}if(a=='1'){Play();}return 0;}int Deuce(){for(int i=0;i<20;i++)for(int j=0;j<20;j++)if(Table[i][j]==0)return 0;return 1;}int Initboard(){Step=0;for(int i=0;i<20;i++)for(int j=0;j<20;j++){map[i][j][0]=copymap[i][j][0];map[i][j][1]=copymap[i][j][1];}return 0;}int CopyB(){for(int i=0;i<20;i++)for(int j=0;j<20;j++){copymap[i][j][0]=map[i][j][0];copymap[i][j][1]=map[i][j][1];}return 0;}int Judgewin(){int cx,cy,dx,dy;char a0=-95;char a1=-16;if(flag==0){a1=-15;}cx=x;cy=y;dx=x;dy=y;while(map[cx][cy][0]==a0&&map[cx][cy][1]==a1){cx--;cy--;if(cx<0||cy<0) break;}while(map[dx][dy][0]==a0&&map[dx][dy][1]==a1) {dx++;dy++;if(dx>15||dy>15) break;}if(dx>=(cx+6)||dy>=(cy+6)) return 1;cx=x;cy=y;dx=x;dy=y;while(map[cx][cy][0]==a0&&map[cx][cy][1]==a1){cx--;if(cx<0) break;}while(map[dx][dy][0]==a0&&map[dx][dy][1]==a1){dx++;if(dx>15) break;}if(dx>=(cx+6)) return 1;cx=x;cy=y;dx=x;dy=y;while(map[cx][cy][0]==a0&&map[cx][cy][1]==a1){cy--;if(cy<0) break;}while(map[dx][dy][0]==a0&&map[dx][dy][1]==a1){dy++;if(dy>15) break;}if(dy>=(cy+6)) return 1;cx=x;cy=y;dx=x;dy=y;while(map[cx][cy][0]==a0&&map[cx][cy][1]==a1){cx++;cy--;if(cx>15||cy<0) break;}while(map[dx][dy][0]==a0&&map[dx][dy][1]==a1){dx--;dy++;if(dx<0||dy>15) break;}if(cx>=(dx+6)||dy>=(cy+6)) return 1;return 0;}int Showboard(){system("CLS");cout << " ";for(int s=1;s<=20;s++){if(s>=10) cout << s<< "";else cout << s << " ";}cout << endl;for(int i=0;i<20;i++){printf("%2d",i+1);for(int j=0;j<20;j++)cout << map[i][j];if(i==6) cout << "退出:输入: 0 0 ";if(i==8) cout << "步数(Step):" << Step;if(i==10) cout << "请输入棋子的纵坐标、横坐标下子!" ;cout << endl;}return(1);}bool legal(){if((map[x-1][y-1][0]==-95&&map[x-1][y-1][1]==-16)||(map[x-1][y-1][0]==-95&&map[x-1][y-1][1]==-15)) return 0;elsereturn 1;}bool Overflow(){if(x>20||x<1||y>20||y<1){cout << "此位置不合法!请重新输入:";return 1;}elsereturn 0;}int Play(){Showboard();cout << "白方下:";while(cin >> x >> y){if(x==0&&y==0){Initboard();Interface();break;}if(Overflow()) continue;if(legal()){x--;y--;map[x][y][0]=-95;if(flag==1){map[x][y][1]=-16;Step++;Showboard();Deuce();if(Judgewin()){cout << "\n黑方胜利了!\n" ;cout << "游戏结束!再来一局?(y/n)";cin >> Switch;if(Switch!='n'){Initboard();Play();}else return 1;}cout << "白方下:";flag=0;}else{map[x][y][1]=-15;Step++;Showboard();Deuce();if(Judgewin()){cout << "\n白方胜利了!" << endl;cout << "游戏结束!再来一局?(y/n)";cin >> Switch;if(Switch!='n'){Initboard();Play();}else return 1;}cout << "黑方下:";flag=1;}}else{cout << "此位置已有子!请重新输入:";}}return 0;}void main(){CopyB();Interface();}数据记录与结果:课程设计结论:程序运行的很成功。

相关文档
最新文档