五子棋人人对战c五子棋课程设计报告

合集下载

五子棋(双人对战) C语言课程设计.doc

五子棋(双人对战) C语言课程设计.doc

C语言程序设计题目五子棋(双人对战)指导教师曹东燕学生姓名夏文龙于文杰邢健学号 201000802032 201000802114 201000802097专业电子信息工程教学单位物理系(盖章)目录1设计内容与设计要求 (1)1.1系统功能简介 (1)1.2系统运行环境 (1)2程序流程图 (1)3运行的运行及说明 (2)3.1系统的运行 (2)3.2运行说明 (4)4课程设计目的………………………………………………….5 程序特色 (5)6总结 (5)附件:源程序清单 (5)1设计内容与设计要求1.1系统功能简介该系统是五子棋的人人对战模式,而非平常的人机对战系统有简单的菜单界面1.2系统运行环境Vc++6.0下运行,硬件基本无要求,现在的计算机系统基本都可以运行该系统。

2程序流程图3系统的运行及说明3.1系统的运行图3-1程序的初始化界面程序初始化的界面,界面简洁明快,便于观察。

图3-2程序的运行界面图3-3程序的介绍界面3-2运行说明A向左 W向上 D向右 S向左空格键确定当结束时按Y重新开始游戏按N退出游戏4课程设计目的五子棋游戏不仅能增强人们的抽象思维能力、逻辑推理能力、空间想象力,提高人们的记忆力、心算能力等,而且深含哲理,有助于修身养性。

五子棋既有现代休闲方式所特有的特征“短、平、快” ,又有中国古典哲学所包含的高深学问“阴阳易理” ;它既有简单易学的特点,为人民群众所喜闻乐见,又有深奥的技巧;既能组织举办群众性的比赛、活动,又能组织举办高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观,它是中西方文化的交融点,也是中西方文化交流的一个平台。

自从计算机作为游戏对战平台以来,各种棋类游戏如雨后春笋般纷纷冒出。

五子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。

同时具有简单易学、既动手又动脑的特点。

同时也为锻炼自己的编程能力。

5程序特色本程序简洁明快,采用黑白两色棋,并且本程序为双人对战。

c五子棋课程设计报告

c五子棋课程设计报告

c五子棋课程设计报告一、课程目标知识目标:1. 学生理解五子棋的基本规则,掌握棋盘布局、棋子走法等相关知识。

2. 学生了解五子棋的历史背景,了解我国棋文化的发展。

3. 学生掌握基本的五子棋策略,如防守、进攻、布局等。

技能目标:1. 学生能够熟练进行五子棋对弈,具备一定的竞技水平。

2. 学生能够运用所学策略进行棋局分析,提高解决问题的能力。

3. 学生能够通过五子棋锻炼思维,提高逻辑思维和判断能力。

情感态度价值观目标:1. 学生培养对五子棋的兴趣,激发学习棋类游戏的热情。

2. 学生在五子棋学习过程中,培养团队协作精神,增进同学间的友谊。

3. 学生通过五子棋学习,体会竞技精神,树立正确的竞争观念。

课程性质分析:本课程为兴趣选修课程,结合五子棋的竞技性和趣味性,旨在提高学生的逻辑思维和竞技水平。

学生特点分析:五年级学生具备一定的认知能力和自学能力,对新鲜事物充满好奇,喜欢竞技类游戏。

教学要求:1. 教师应关注学生的个体差异,因材施教,提高学生的学习兴趣。

2. 教师应注重理论与实践相结合,让学生在实践中掌握五子棋技能。

3. 教师应关注学生在学习过程中的情感体验,培养学生的竞技精神和团队协作能力。

二、教学内容1. 五子棋基本知识:- 棋盘与棋子:介绍五子棋的棋盘布局、棋子走法及胜负判定规则。

- 历史背景:讲解五子棋的起源、发展及在我国棋文化中的地位。

2. 五子棋基本策略:- 防守策略:教授学生如何防守对手的进攻,保持棋局平衡。

- 进攻策略:指导学生运用有效进攻手段,制造对手的困境。

- 布局策略:讲解如何合理布局棋子,为后续棋局发展奠定基础。

3. 五子棋实战技巧:- 棋型分析:教授学生识别不同棋型,提高棋局分析能力。

- 残局破解:训练学生解决棋局中出现的复杂局面,提高实战水平。

4. 教学进度安排:- 第一周:五子棋基本知识学习,了解棋盘、棋子及历史背景。

- 第二周:基本策略学习,掌握防守、进攻和布局策略。

- 第三周:实战技巧训练,提高棋局分析和实战能力。

五子棋人人对战_c五子棋课程设计报告

五子棋人人对战_c五子棋课程设计报告

VC课程设计报告设计题目:五子棋人人对战目录学院:第1章引言 (4)第2章任务专业班级:信息与计算科学班概述...........................2.1 问题概述:述……学生姓名:***** 2 :1:1问题重::::42 :1: 2 设计目地……学生学号:12345 ::::42.2 需求分析:指导教师:### 2 :2 :1 基本要求 (4)222游戏功台匕提交时间:冃匕2013年07月02日介绍第3章概要设计......3:1功能成绩:设计......3:2程序结构......3:3基本流程...................... . (4)第4章程序实现......................... . (4)4:1主要变量及函数地说明......... . (4)4:1:1主要变量.............. . (4)理学院4.1.2主要函数 (4)4.2主要功能地实现 (4)4.2.1类声明 (4)4.2.2棋盘初始化 (4)4.2.3开始下棋 (4)4.2.4判断下棋合法 (4)4.2.4判断输赢 (4)第 5 章结果与总结 (4)5.1 运行结果截图 (4)5.2总结 (4)参考文献: (4)第1章引言通过一学期地课程学习,对<C++程序设计>和Visual2010 C++编程环境有了一定程度地了解•根据课程要求,利用两周时间对所学知识加以巩固学习,用C++编译小游戏,初步了解程序设计与软件实现地思想.该设计通过对“五子棋人人对战”游戏地编写对所学知识复习巩固.程序设计过程中,先对问题进行了全面分析,将“五子棋人人对战”划分成几个子问题后,逐步细化,最终归结成一个个函数地实现.第2 章任务概述2.1 问题概述2.1.1 问题重述设计一个五子棋,能实现人人对战.(棋盘大小为13X13)2.1.2 设计目地独立地利用所学地C++程序设计和Visaul C++6.0编程环境编写程序2.2 需求分析2.2.1 基本要求明确五子棋游戏地游戏规则,编写程序实现其功能.2.2.2 游戏功能介绍为了更好地实现游戏,首先必须明确“五子棋”地游戏规则下:(1)进入主界面后,选择开始游戏..大体地规则可描述如(2)开始游戏后,一方开始下棋.(3)再由另一方下棋(4)判断输赢.(5)玩家选择结束游戏时,结束游戏.第3 章概要设计3.1 功能设计程序主要实现地功能如下所述:(1)启动程序,出现主界面.(2)显示棋盘.(3)选择开始游戏.(4)有一方开始下棋,并判断下棋是否合理.(5)判断输赢.(6)有另一方开始下棋,并判断下棋是否合理.(7)判断输赢.(8)选择是否继续.9)游戏结束后,退出游戏3.2程序结构 程序地结构如下图所示: 五子棋人人对战图3.2程序结构3.3基本流程判断输赢 结束游戏根据游戏规则及其结构图,画出如下程序基本流程图:NO玩家X 下棋是否赢棋图3.3基本流程第4章程序实现4.1主要变量及函数地说明 4.1.1主要变量//下棋地横坐标 int y 。

c语言五子棋课程设计报告

c语言五子棋课程设计报告

c语言五子棋课程设计报告一、前言五子棋作为一种智力游戏,在我国有着悠久的历史和广泛的群众基础。

本次设计的目的是使用C语言实现五子棋游戏,通过此次课程设计,学生将掌握C语言的编程思想和开发方法,同时了解五子棋游戏的规则和策略。

二、五子棋游戏规则五子棋游戏是在15*15的棋盘上进行,由黑白双方轮流落子,先将五个同色棋子连成一条线的一方获胜。

落子的位置必须为空,不能与已有的棋子重叠。

黑方先手,白方后手。

下图为五子棋棋盘示意图。

三、五子棋游戏实现本次课程设计采用C语言实现五子棋游戏,主要包括棋盘的绘制、落子的判断和胜负的判断等功能。

1.棋盘的绘制棋盘的绘制采用双重循环实现,将15*15的棋盘分成225个小格,其中包括14个横线和14个竖线,以及4个角上的点。

通过循环输出字符实现棋盘的绘制。

2.落子的判断落子的判断主要包括鼠标的点击和棋子的绘制两个部分。

当鼠标点击棋盘上的一个位置时,程序会根据当前轮到哪方落子来绘制相应颜色的棋子,并将该位置的状态改为已有棋子。

同时,程序会检查当前落子是否符合规则,即该位置是否为空,如果不为空则重新等待鼠标点击。

3.胜负的判断胜负的判断主要包括横向、纵向、斜向和反斜向四个方向。

通过判断当前落子位置在这四个方向上的连续棋子数是否达到五个来确定胜负。

如果达到五个,则程序会弹出相应的提示框,显示胜利方。

四、总结通过本次课程设计,学生掌握了C语言的编程思想和开发方法,同时了解了五子棋游戏的规则和策略。

本次设计主要包括棋盘的绘制、落子的判断和胜负的判断等功能。

希望本次课程设计能够增强学生的编程能力和对五子棋游戏的理解。

c语言五子棋课程设计

c语言五子棋课程设计

c语言五子棋课程设计一、课程目标知识目标:1. 学生能理解并掌握C语言的基本语法和编程技巧;2. 学生能运用C语言编写五子棋游戏的基本功能,包括棋盘的初始化、玩家输入、落子、判断胜负等;3. 学生能通过五子棋案例,理解并掌握数组和循环等C语言核心知识点的应用。

技能目标:1. 学生能够运用结构化的编程思想进行问题分析,将复杂问题分解为可解决的小问题;2. 学生能够独立完成五子棋游戏的编写,培养编程实践能力和解决问题的能力;3. 学生通过团队协作完成课程项目,提高沟通和协作能力。

情感态度价值观目标:1. 学生在编程实践中培养逻辑思维能力和创新意识,增强对编程的兴趣和热情;2. 学生通过五子棋游戏的设计与实现,体验编程带来的成就感,提高自信心;3. 学生在团队协作中学会相互尊重、理解和帮助,培养良好的合作精神。

二、教学内容1. C语言基础语法回顾:变量定义与使用、数据类型、运算符、表达式、控制语句(if、for、while等);2. 数组的应用:一维数组、二维数组,重点讲解二维数组在五子棋棋盘中的应用;3. 函数的定义与调用:编写功能模块,如初始化棋盘、打印棋盘、落子、判断胜负等函数;4. 指针的应用:指针与数组的关系,通过指针操作五子棋棋盘;5. 五子棋游戏设计与实现:分析游戏需求,设计游戏流程,编写代码实现游戏功能;6. 结构体的使用:定义玩家信息结构体,存储和管理玩家信息;7. 文件操作:读取和保存棋局,实现游戏进度保存与加载;8. 算法与逻辑:介绍五子棋胜负判断的算法,以及优化策略;9. 项目实践:学生分组进行五子棋游戏的开发,按照教学进度完成相应功能;10. 课堂讨论与展示:分析项目中的问题与解决方法,分享编程技巧,展示团队成果。

教学内容按照课本章节进行组织,确保学生能够将所学知识应用于实际项目中,逐步掌握C语言编程的核心技能。

三、教学方法本课程采用以下多样化的教学方法,旨在激发学生的学习兴趣,提高学生的主动性和实践能力:1. 讲授法:教师以清晰、生动的语言讲解C语言的基本概念、语法规则和五子棋游戏设计原理。

【报告】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五子棋实验报告
引言
五子棋是一种古老的策略游戏,它既考验了玩家的思维能力,又具有很高的娱乐性。

在本次实验中,我们将利用C语言编程,设计一个简单的五子棋游戏,并对其进行实验测试。

实验目的
1. 学习使用C语言进行游戏开发;
2. 设计并实现一个简单的五子棋游戏;
3. 对游戏进行功能测试和性能评估。

实验方法
1. 使用C语言编写五子棋游戏的程序代码;
2. 设计游戏界面和用户交互功能;
3. 实现游戏规则和胜负判定功能;
4. 进行功能测试和性能评估。

实验结果
经过实验,我们成功地设计并实现了一个简单的五子棋游戏。

游戏具有清晰的界面和简单的操作方式,玩家可以轻松上手。

在功能测试中,游戏能够正确判定胜负,且没有出现明显的bug。

在性能评估中,游戏在常见的操作系统上都能够流畅运行,响应速度较快。

实验结论
通过本次实验,我们学习到了使用C语言进行游戏开发的基本方法和技巧。


们成功地设计并实现了一个简单的五子棋游戏,并对其进行了功能测试和性能
评估。

实验结果表明,我们的游戏具有良好的稳定性和性能表现,能够满足玩
家的基本需求。

展望
在未来,我们可以进一步完善游戏的功能和界面设计,增加更多的游戏模式和
挑战性。

我们也可以考虑将游戏移植到其他平台上,以提供更广泛的游戏体验。

同时,我们还可以利用更先进的技术和算法,进一步优化游戏的性能和用户体验。

总之,我们将继续努力,不断改进和完善我们的五子棋游戏,为玩家提供
更好的游戏体验。

子棋人人对战c五子棋课程设计报告Word

子棋人人对战c五子棋课程设计报告Word

VC课程设计报告设计题目:五子棋人人对战学院:理学院专业班级:信息与计算科学班学生姓名:*****学生学号:12345指导教师:###提交时间:2013年 07 月 02 日成绩:目录第1章引言 (4)第2章任务概述 (4)2.1问题概述 (4)2.1.1问题重述 (4)2.1.2设计目的 (4)2.2需求分析 (4)2.2.1基本要求 (4)2.2.2游戏功能介绍 (4)第3章概要设计 (4)3.1功能设计 (4)3.2程序结构 (4)3.3基本流程 (4)第4章程序实现 (4)4.1主要变量及函数的说明 (4)4.1.1主要变量 (4)4.1.2主要函数 (4)4.2主要功能的实现 (4)4.2.1类声明 (4)4.2.2棋盘初始化 (4)4.2.3开始下棋 (4)4.2.4判断下棋合法 (4)4.2.4判断输赢 (4)第5章结果与总结 (4)5.1 运行结果截图 (4)5.2总结 (4)参考文献: (4)第1章引言通过一学期的课程学习,对<C++程序设计>和Visual2010 C++编程环境有了一定程度的了解。

根据课程要求,利用两周时间对所学知识加以巩固学习,用c++编译小游戏,初步了解程序设计与软件实现的思想。

该设计通过对“五子棋人人对战”游戏的编写对所学知识复习巩固。

程序设计过程中,先对问题进行了全面分析,将“五子棋人人对战”划分成几个子问题后,逐步细化,最终归结成一个个函数的实现。

第2章任务概述2.1问题概述2.1.1问题重述设计一个五子棋,能实现人人对战。

(棋盘大小为13X13)2.1.2设计目的独立地利用所学的C++程序设计和Visaul C++6.0编程环境编写程序。

2.2需求分析2.2.1基本要求明确五子棋游戏的游戏规则,编写程序实现其功能。

2.2.2游戏功能介绍为了更好地实现游戏,首先必须明确“五子棋”的游戏规则。

大体的规则可描述如下:(1)进入主界面后,选择开始游戏。

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

VC课程设计报告设计题目:五子棋人人对战学院:理学院专业班级:信息与计算科学班学生:*****学生学号:12345指导教师:###提交时间:2013年 07 月 02 日成绩:目录第1章引言 (4)第2章任务概述 (4)2.1问题概述 (4)2.1.1问题重述 (4)2.1.2设计目的 (4)2.2需求分析 (4)2.2.1基本要求 (4)2.2.2游戏功能介绍 (4)第3章概要设计 (4)3.1功能设计 (4)3.2程序结构 (4)3.3基本流程 (4)第4章程序实现 (4)4.1主要变量及函数的说明 (4)4.1.1主要变量 (4)4.1.2主要函数 (4)4.2主要功能的实现 (4)4.2.1类声明 (4)4.2.2棋盘初始化 (4)4.2.3开始下棋 (4)4.2.4判断下棋合法 (4)4.2.4判断输赢 (4)第5章结果与总结 (4)5.1 运行结果截图 (4)5.2总结 (4)参考文献: (4)第1章引言通过一学期的课程学习,对<C++程序设计>和Visual2010 C++编程环境有了一定程度的了解。

根据课程要求,利用两周时间对所学知识加以巩固学习,用c++编译小游戏,初步了解程序设计与软件实现的思想。

该设计通过对“五子棋人人对战”游戏的编写对所学知识复习巩固。

程序设计过程中,先对问题进行了全面分析,将“五子棋人人对战”划分成几个子问题后,逐步细化,最终归结成一个个函数的实现。

第2章任务概述2.1问题概述2.1.1问题重述设计一个五子棋,能实现人人对战。

(棋盘大小为13X13)2.1.2设计目的独立地利用所学的C++程序设计和Visaul C++6.0编程环境编写程序。

2.2需求分析2.2.1基本要求明确五子棋游戏的游戏规则,编写程序实现其功能。

2.2.2游戏功能介绍为了更好地实现游戏,首先必须明确“五子棋”的游戏规则。

大体的规则可描述如下:(1)进入主界面后,选择开始游戏。

(2)开始游戏后,一方开始下棋。

(3)再由另一方下棋(4)判断输赢。

(5)玩家选择结束游戏时,结束游戏。

第3章概要设计3.1功能设计程序主要实现的功能如下所述:(1)启动程序,出现主界面。

(2)显示棋盘。

(3)选择开始游戏。

(4)有一方开始下棋,并判断下棋是否合理。

(5)判断输赢。

(6)有另一方开始下棋,并判断下棋是否合理。

(7)判断输赢。

(8)选择是否继续。

(9)游戏结束后,退出游戏。

3.2程序结构程序的结构如下图所示:图3.2程序结构3.3基本流程根据游戏规则及其结构图,画出如下程序基本流程图:图3.3基本流程第4章程序实现4.1主要变量及函数的说明4.1.1主要变量char board[14][14]; //棋盘大小int x; //下棋的横坐标int y; //下棋的列坐标int count; //下棋的个数int a; //交换下棋4.1.2主要函数void MainForm();//显示主菜单void PlayEplain();//游戏说明void PrintBoard();// 打印初始棋盘void InitialBoard();//初始化棋盘void PlayChess();//开始下棋wuziqi();//初始化a和count,a是交换下棋,count记录棋盘是否下满int CheckWin(int x,int y); //判断赢棋4.2主要功能的实现4.2.1 类声明class wuziqi{public:void MainForm(); //显示主菜单void PlayEplain(); //游戏说明void PrintBoard(); //打印初始棋盘void InitialBoard(); //初始化棋盘void PlayChess(); //开始下棋wuziqi(); //初始化a和count,a是交换下棋,count记录棋盘是否下满private:int CheckWin(int x,int y); //判断赢棋char board[13][13];int x; //下棋的横坐标int y; //下棋的列坐标int count; //计数判断是否满int a; //判断谁落子};4.2.2棋盘初始化Void wuziqi::InitialBoard() //初始化棋盘,将所用的位置设置为空格for(i=1;i<MXA;i++){for(i=1;i<MXA;i++){将所有下棋的格线设为空格}}Void wuziqi::PrintBoard() ///打印棋盘利用制表符打印棋盘(┏┳┓┣╋┫┛┻┗)4.2.3开始下棋void PlayChess(); //开始下棋由a 的值决定下棋方If(a==0)一方下棋Else另一方下棋用坐标决定下棋位置4.2.4判断下棋合法如果输入是否越界{如果board[x][y]==' 空格'就可以下棋{board[x][y] 设为○}如果board[x][y]是否已经有棋子{输出 "输入错误,此位置已经有棋子了,请重新输入!"<<endl;continue;返回去继续输入。

}}如果输入是否越界{cout<<" 输入位置超出围,请重新输入!"<<endl;PrintBoard();打印棋盘返回重新输入}4.2.5判断输赢int CheckWin(int x,int y); //判断赢棋当一方有五个棋子连成线时赢,用-1和1判断输赢,当棋盘满是为平局。

第5章结果与总结5.1 运行结果截图1..启动画面图5-1启动画面2.游戏说明图5.2游戏说明3.退出游戏图5.3退出游戏4进入游戏图5-4 进入游戏5.输入越界图5-5输入超出围6。

已有棋子图5-6已有棋子7.游戏进行图5-7 游戏进行8.判断输赢图5-8 判断输赢5.2总结编辑小游戏这在以前我都以为是遥不可及,但现在通过这次五子棋的设计我明白了,并不是如此,通过课程设计,我们对《C++程序设计》这门课程有了更深一步的了解。

它是计算机程序设计的重要技术。

同时也使我知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。

因为我们学习知识就是为了实践。

而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。

另外,在课程设计期间,让自己的思维变得活跃,也会看懂,学明白程序问题,总之,受益匪浅。

参考文献:C++程序设计(第8版)(美)Walter Savitch 清华大学附录:#include<iostream>#include <iomanip> //setw(3)using namespace std;const int MAX=13;class wuziqi{public:void MainForm(); //显示主菜单void PlayEplain(); //游戏说明void PrintBoard(); //打印初始棋盘void InitialBoard(); //初始化棋盘void PlayChess(); //开始下棋wuziqi(); //初始化a和count,a是交换下棋,count 记录棋盘是否下满private:int CheckWin(int x,int y); //判断赢棋char board[13][13];int x; //下棋的横坐标int y; //下棋的列坐标int count; //计数判断是否满int a; //判断谁落子};//////////////////////////////////////wuziqi::wuziqi():a(0) //将a初始化为0{}//////////////////////////////////////////////////////void wuziqi::PlayChess(){count=0;for(;;) //交换下棋{//玩家○输入if(a==0) //先下棋{cout<<"请玩家○输入下棋位置!"<<endl;cout<<"请输入行坐标:";cin>>x;cout<<"请输入列坐标:";cin>>y;system("cls"); //清屏if((x>0&&x<=MAX)&&(y>0&&y<=MAX)) //判断请输入是否越界{if(board[x][y]==' ') //如果board[x][y]==' '就可以下棋{board[x][y]='O';// PrintBoard1();PrintBoard();count++;}else //如果board[x][y]是否已经有棋子{system("cls");cout<<" 玩家○输入错误,此位置已经有棋子了,请重新输入!"<<endl;//PrintBoard1();PrintBoard();continue;}}else{system("cls");cout<<" 玩家○输入位置超出围,请重新输入!"<<endl;//PrintBoard1();PrintBoard();continue;}if(CheckWin(x,y)==1) //判断输赢cout<<" 恭喜玩家○获得胜利!"<<endl<<endl;break;};if(count==MAX*MAX) //判断是否下满{cout<<"平局!"<<endl;break;}a=1;}//玩家●输入和玩家○输入一样else if(a==1){cout<<"请玩家●输入下棋位置!"<<endl;cout<<"请输入行坐标:";cin>>x;cout<<"请输入列坐标:";cin>>y;system("cls");if((x>0&&x<=MAX)&&(y>0&&y<=MAX)){if(board[x][y]==' '){board[x][y]='X';PrintBoard();count++;}else{system("cls");cout<<" 玩家●输入错误,此位置已经有棋子了,请重新输入"<<endl;PrintBoard();continue;}}else{system("cls");cout<<" 玩家●输入位置超出围,请重新输入!"<<endl;PrintBoard();continue;if(CheckWin(x,y)==-1){cout<<" 恭喜玩家●获得胜利!"<<endl;break;};if(count==MAX*MAX){cout<<"平局!"<<endl;break;}a=0;}}}/////////////////////////////////////////////////////////////////////////////// /////void wuziqi::InitialBoard()//初始化棋盘,将所用的位置设置为“”{for(int i=0;i<14;i++){for(int j=0;j<14;j++){board[i][j]=' ';}}}void wuziqi::PrintBoard()///打印棋盘{cout<<endl;cout<<"*-*-*-*-*-*-*-*-*-*-*-*-*-*五子棋棋盘*-*-*-*-*-*-*-*-*-*-*-*-*"<<endl;int i,j;cout<<" ";for(i=1;i<=MAX;i++){cout<<setw(2)<<i;}cout<<endl;for( i=1;i<MAX+1;i++){for( j=1;j<MAX+1;j++){if(board[i][j]=='O'){if(j==1){cout<<setw(20)<<i<<"○";}elsecout<<"○";}else if(board[i][j]=='X')if(j==1){cout<<setw(20)<<i<<"●";}elsecout<<"●";else{if((i==1)&&(j==1)){cout<<setw(20)<<"1"<<"┏";}else if((i==MAX)&&(j==1)){cout<<setw(20)<<MAX<<"┗";}else if((i==1)&&(j==MAX)){cout<<"┓";}else if((i==MAX)&&(j==MAX)){cout<<"┛";}else if((i==1)&&((j>0)&&(j<MAX))){cout<<"┯";}else if(((i>1)&&(i<MAX))&&(j==1)){cout<<setw(20)<<i<<"┠";}else if((i==MAX)&&((j>1)&&(j<MAX))){cout<<"┷";}else if((j==MAX)&&((i>1)&&(i<MAX))){cout<<"┨"; }else{cout<<"┼";}}}cout<<endl;}}///////////////////////最开始时的棋盘////////////////////*void wuziqi::PrintBoard(){cout<<endl;cout<<"*-*-*-*-*-*-*-*-*-*-*-*-*-*五子棋棋盘*-*-*-*-*-*-*-*-*-*-*-*-*"<<endl;int i,j,k;system("color 0A");cout<<" ";for(k=0;k<=MAX;k++)cout<<setw(4)<<k;cout<<endl;cout<<" ┏━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┓"<<endl;for( i=1;i<MAX;i++){cout<<" "<<setw(3)<<i;for(j=1;j<=MAX;j++){board[i][j]=' ';cout<<"┃ "<<board[i][j];}cout<<"┃"<<endl;cout<<" ┣━╋━╋━╋━╋━╋━╋━╋━╋━╋━╋━╋━╋━┫"<<endl;}cout<<" "<<setw(3)<<"13";for(j=1;j<=MAX;j++){board[i][j]=' ';cout<<"┃ "<<board[i][j];}cout<<"┃"<<endl;cout<<" ┗━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┛"<<endl;}/////////////////////////////////////////////////////////////////////////////// //*void wuziqi::PrintBoard1(){cout<<endl;cout<<"*-*-*-*-*-*-*-*-*-*-*-*-*-*五子棋棋盘*-*-*-*-*-*-*-*-*-*-*-*-*"<<endl;int i,j,k;system("color 0A");cout<<" ";for(k=0;k<=MAX;k++)cout<<setw(4)<<k;cout<<endl;cout<<" ┏━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┓"<<endl;for( i=1;i<MAX;i++){cout<<" "<<setw(3)<<i;for(j=1;j<=MAX;j++){// board[i][j]=' ';cout<<"┃ "<<board[i][j];}cout<<"┃"<<endl;cout<<" ┣━╋━╋━╋━╋━╋━╋━╋━╋━╋━╋━╋━╋━┫"<<endl;}cout<<" "<<setw(3)<<"13";for(j=1;j<=MAX;j++){board[i][j]=' ';cout<<"┃ "<<board[i][j];}cout<<"┃"<<endl;cout<<" ┗━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┛"<<endl;}*////////////////////////////////////void wuziqi::MainForm(){cout<<" *-*-*-*-*-*-*-*-*-*〇欢迎来到五子棋游戏〇*-*-*-*-*-*-*-*-*-*"<<endl<<endl;cout<<"*-*-*-*-*-*-*-*-*-*-*人人对弈五子棋游戏*-*-*-*-*-*-*-*-*-*-*"<<endl;cout<<" 1.游戏说明"<<endl;cout<<" 2.开始游戏"<<endl;cout<<" 3.退出游戏"<<endl;cout<<"*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"<<endl;cout<<"请输入你的选择:";}/////////////////////////////////////////////////////////////////////////////////////void wuziqi::PlayEplain(){cout<<"*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*--*-*-*-*-*-*-*-*-*-*-*"<<endl;cout<<"*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*--*-*-*-*-*-*-*-*-*-*-*"<<endl;cout<<"*-* 游戏说明: *-*"<<endl;cout<<"*-* 1.第一个玩家用O第二个玩家用X;*-*"<<endl;cout<<"*-* 2.请根据提示输入所要走的行和列;*-*"<<endl;cout<<"*-* 3.谁先连成五个子谁胜利。

相关文档
最新文档