2012年C语言五子棋课程设计报告
五子棋游戏程序的设计报告
![五子棋游戏程序的设计报告](https://img.taocdn.com/s3/m/885a5738852458fb760b5600.png)
计算机学院网络工程专业《程序设计综合课程设计》报告(2011/2012学年第一学期)学生姓名:学生班级:网络工程学生学号:指导教师:2011年12月30日双人五子棋目录第一章课程设计目的和要求 (1)1.1课程设计的目的 (1)1.2课程设计的要求 (1)第二章课程设计任务内容 (2)2.1课程设计的主要内容 (2)2.2系统设计原则 (2)第三章设计说明 (3)3.1游戏分析和介绍 (3)3.1.1游戏分析 (3)3.1.2游戏介绍 (3)3.2重点模块说明 (3)3.2.1棋盘界面Showboard() (3)3.2.2下棋Play() (4)3.2.3覆盖棋盘Recoverboard() (7)3.2.4游戏结束后初始化棋盘Unitboard() (7)3.2.5保存棋盘CopyB() (8)3.3函数清单 (8)3.4接口 (9)第四章软件使用说明 (10)4.1测试 (10)4.2限制条件 (13)第五章课程设计心得体会 (14)附录一程序流程图 (15)附录二程序代码 (16)附录三参考文献 (26)第一章课程设计目的和要求1.1课程设计的目1,学习综合运用C语言课程和其他相关课程的知识,提高分析解决实际问题的能力,进一步巩固、加深和拓宽所学的知识,进一步加强结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。
2,全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法,与同学合作设计整套程序,并且独立完成一定工作量的程序设计.3,掌握程序设计中的常用算法和C语言的程序技巧,培养良好的程序设计风格。
4,运用所学的知识了解五子棋游戏的制作结构,将所学的知识运用于实践中。
1.2课程设计的要求1,与同学合作设计、编制、调试出一款双人五子棋游戏,并单独完成其中一定量的函数模块。
2,要求该游戏具有趣味性和可操作性,能够正常运行。
其中用到C++语言中的各种语句、结构。
(如其中需要注意全局变量和局部变量的申明,数组的使用等)3,双人五子棋要求能够进入欢迎界面,二人对弈,当有五颗同色棋子相连时,判断出输赢等一系列游戏流程。
C++课程设计说明书(五子棋)
![C++课程设计说明书(五子棋)](https://img.taocdn.com/s3/m/10b9aa00876fb84ae45c3b3567ec102de2bddfb2.png)
C++课程设计说明书(五⼦棋)课程设计说明书五⼦棋游戏The Game of Gobang学院名称:机械⼯程学院专业班级:测控10xx学⽣姓名:江x指导教师姓名:张xx指导教师职称:副教授2012年6⽉⽬录第⼀章需求分析 (5)1.1系统概述 (5)1.1.1概述: (5)1.2系统运⾏环境 (5)1.2.1运⾏环境 (5)1.3功能需求描述 (6)1.3.1功能需求 (6)第⼆章总体设计 (6)2.1开发与设计的总体思想 (6)2.1.1总体设计思路 (6)2.1.2屏幕的组成 (7)2.1.3形状的组成 (8)2.1.4形状的统⼀ (8)第三章概要设计 (9)3.1系统流程图 (9)3.2 软件功能模块 (10)3.3 系统功能模块 (11)第四章详细设计 (11)4.1.界⾯的设计 (11)4.1.1总体界⾯的设计 (11)4.1.2界⾯棋⼦的设计 (11)4.2.显⽰界⾯的准备 (13)4.2.1在窗体类中添加存放⿊⽩棋两维数组和背景棋盘、⿊棋、⽩棋位图对象 (13)4.2.2 在窗体构造函数中初始化wb,装⼊棋盘、⿊棋、⽩棋位图 (13)4.3. 显⽰棋盘和棋⼦代码 (13)4.4. 轮流下⼦代码 (14)4.5. 判断输赢 (17)4.5.1判断是否⽩棋胜代码 (17)4.5.2判断是否⿊棋胜代码 (18)4.5.3判断是否平局代码 (19)4.6. 悔棋 (19)4.7. 重新开始 (20)4.8. 背景⾳乐 (21)4.9. 保存读取游戏⽂件 (21)4.9.1保存⽂件: (22)4.9.2读取⽂件: (23)第五章测试分析 (24)结论和⼼得体会 (25)致谢 (26)参考⽂献: (27)课程设计任务书⼀、课程设计⽬的课程设计是⼯科各专业的主要实践性教学环节之⼀,是围绕⼀门主要基础课或专业课,运⽤所学课程的知识,结合实际应⽤设计⽽进⾏的⼀次综合分析设计能⼒的训练。
课程设计旨在培养学⽣在本课程范围内,初步掌握解决实际应⽤问题时所应具有的查阅资料、综合运⽤所学知识的能⼒,为课程设计及今后从事专业⼯作打下基础。
c课程设计五子棋
![c课程设计五子棋](https://img.taocdn.com/s3/m/6bd7a8eccd22bcd126fff705cc17552707225ef1.png)
c 课程设计五子棋一、教学目标本课程的教学目标是使学生掌握五子棋的基本规则、技巧和策略,能够独立进行游戏并具备一定的竞技水平。
具体分为以下三个维度:1.知识目标:学生能够理解并掌握五子棋的起源、基本规则、棋子的移动方式以及胜利的条件。
2.技能目标:学生能够熟练地操作棋子,进行合法的走棋,具备一定的对弈能力和竞技水平。
3.情感态度价值观目标:培养学生团队合作、挑战自我、勇于担当的精神品质,增强学生的逻辑思维能力和决策能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.五子棋的起源和发展历史:使学生了解五子棋的起源和发展过程,认识五子棋在我国的历史地位和文化价值。
2.五子棋的基本规则:讲解棋盘的布局、棋子的种类、走棋的规则以及胜利的条件。
3.五子棋的技巧和策略:教授棋子的移动技巧、防守与进攻策略、棋局形势的分析方法等。
4.五子棋的对弈实践:学生进行对弈练习,提高学生的竞技水平,培养学生的团队合作精神。
三、教学方法为了达到本课程的教学目标,我们将采用以下教学方法:1.讲授法:教师讲解五子棋的基本规则、技巧和策略,为学生提供系统的知识体系。
2.讨论法:学生进行小组讨论,分享学习心得和对弈经验,提高学生的思考和表达能力。
3.案例分析法:分析经典棋局,让学生学会从不同角度分析棋局,提高学生的棋局判断能力。
4.实验法:学生进行对弈实践,让学生在实际操作中掌握五子棋的技巧和策略。
四、教学资源为了保证本课程的顺利进行,我们将准备以下教学资源:1.教材:选用权威、系统的五子棋教材,为学生提供理论知识的学习依据。
2.参考书:推荐学生阅读一些五子棋的入门书籍和高水平棋手的著作,丰富学生的知识储备。
3.多媒体资料:制作课件、教学视频等,以生动形象的方式展示五子棋的规则和技巧。
4.实验设备:提供足够的棋盘、棋子等设备,保证学生进行对弈实践的需求。
五、教学评估本课程的评估方式将包括以下几个方面,以保证评估的客观性和公正性:1.平时表现:评估学生的课堂参与度、提问回答、团队协作等,占总评的30%。
c五子棋课程设计报告
![c五子棋课程设计报告](https://img.taocdn.com/s3/m/28148a45c381e53a580216fc700abb68a982adcf.png)
c五子棋课程设计报告一、课程目标知识目标:1. 学生理解五子棋的基本规则,掌握棋盘布局、棋子走法等相关知识。
2. 学生了解五子棋的历史背景,了解我国棋文化的发展。
3. 学生掌握基本的五子棋策略,如防守、进攻、布局等。
技能目标:1. 学生能够熟练进行五子棋对弈,具备一定的竞技水平。
2. 学生能够运用所学策略进行棋局分析,提高解决问题的能力。
3. 学生能够通过五子棋锻炼思维,提高逻辑思维和判断能力。
情感态度价值观目标:1. 学生培养对五子棋的兴趣,激发学习棋类游戏的热情。
2. 学生在五子棋学习过程中,培养团队协作精神,增进同学间的友谊。
3. 学生通过五子棋学习,体会竞技精神,树立正确的竞争观念。
课程性质分析:本课程为兴趣选修课程,结合五子棋的竞技性和趣味性,旨在提高学生的逻辑思维和竞技水平。
学生特点分析:五年级学生具备一定的认知能力和自学能力,对新鲜事物充满好奇,喜欢竞技类游戏。
教学要求:1. 教师应关注学生的个体差异,因材施教,提高学生的学习兴趣。
2. 教师应注重理论与实践相结合,让学生在实践中掌握五子棋技能。
3. 教师应关注学生在学习过程中的情感体验,培养学生的竞技精神和团队协作能力。
二、教学内容1. 五子棋基本知识:- 棋盘与棋子:介绍五子棋的棋盘布局、棋子走法及胜负判定规则。
- 历史背景:讲解五子棋的起源、发展及在我国棋文化中的地位。
2. 五子棋基本策略:- 防守策略:教授学生如何防守对手的进攻,保持棋局平衡。
- 进攻策略:指导学生运用有效进攻手段,制造对手的困境。
- 布局策略:讲解如何合理布局棋子,为后续棋局发展奠定基础。
3. 五子棋实战技巧:- 棋型分析:教授学生识别不同棋型,提高棋局分析能力。
- 残局破解:训练学生解决棋局中出现的复杂局面,提高实战水平。
4. 教学进度安排:- 第一周:五子棋基本知识学习,了解棋盘、棋子及历史背景。
- 第二周:基本策略学习,掌握防守、进攻和布局策略。
- 第三周:实战技巧训练,提高棋局分析和实战能力。
c语言五子棋课程设计报告
![c语言五子棋课程设计报告](https://img.taocdn.com/s3/m/32eaf80482c4bb4cf7ec4afe04a1b0717fd5b32d.png)
c语言五子棋课程设计报告一、前言五子棋作为一种智力游戏,在我国有着悠久的历史和广泛的群众基础。
本次设计的目的是使用C语言实现五子棋游戏,通过此次课程设计,学生将掌握C语言的编程思想和开发方法,同时了解五子棋游戏的规则和策略。
二、五子棋游戏规则五子棋游戏是在15*15的棋盘上进行,由黑白双方轮流落子,先将五个同色棋子连成一条线的一方获胜。
落子的位置必须为空,不能与已有的棋子重叠。
黑方先手,白方后手。
下图为五子棋棋盘示意图。
三、五子棋游戏实现本次课程设计采用C语言实现五子棋游戏,主要包括棋盘的绘制、落子的判断和胜负的判断等功能。
1.棋盘的绘制棋盘的绘制采用双重循环实现,将15*15的棋盘分成225个小格,其中包括14个横线和14个竖线,以及4个角上的点。
通过循环输出字符实现棋盘的绘制。
2.落子的判断落子的判断主要包括鼠标的点击和棋子的绘制两个部分。
当鼠标点击棋盘上的一个位置时,程序会根据当前轮到哪方落子来绘制相应颜色的棋子,并将该位置的状态改为已有棋子。
同时,程序会检查当前落子是否符合规则,即该位置是否为空,如果不为空则重新等待鼠标点击。
3.胜负的判断胜负的判断主要包括横向、纵向、斜向和反斜向四个方向。
通过判断当前落子位置在这四个方向上的连续棋子数是否达到五个来确定胜负。
如果达到五个,则程序会弹出相应的提示框,显示胜利方。
四、总结通过本次课程设计,学生掌握了C语言的编程思想和开发方法,同时了解了五子棋游戏的规则和策略。
本次设计主要包括棋盘的绘制、落子的判断和胜负的判断等功能。
希望本次课程设计能够增强学生的编程能力和对五子棋游戏的理解。
【报告】c五子棋实验报告
![【报告】c五子棋实验报告](https://img.taocdn.com/s3/m/966ed35669dc5022abea007f.png)
【关键字】报告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 五子棋实验报告](https://img.taocdn.com/s3/m/f91e35c3e43a580216fc700abb68a98271feac17.png)
c 五子棋实验报告
C五子棋实验报告
引言
五子棋是一种古老的策略游戏,它既考验了玩家的思维能力,又具有很高的娱乐性。
在本次实验中,我们将利用C语言编程,设计一个简单的五子棋游戏,并对其进行实验测试。
实验目的
1. 学习使用C语言进行游戏开发;
2. 设计并实现一个简单的五子棋游戏;
3. 对游戏进行功能测试和性能评估。
实验方法
1. 使用C语言编写五子棋游戏的程序代码;
2. 设计游戏界面和用户交互功能;
3. 实现游戏规则和胜负判定功能;
4. 进行功能测试和性能评估。
实验结果
经过实验,我们成功地设计并实现了一个简单的五子棋游戏。
游戏具有清晰的界面和简单的操作方式,玩家可以轻松上手。
在功能测试中,游戏能够正确判定胜负,且没有出现明显的bug。
在性能评估中,游戏在常见的操作系统上都能够流畅运行,响应速度较快。
实验结论
通过本次实验,我们学习到了使用C语言进行游戏开发的基本方法和技巧。
我
们成功地设计并实现了一个简单的五子棋游戏,并对其进行了功能测试和性能
评估。
实验结果表明,我们的游戏具有良好的稳定性和性能表现,能够满足玩
家的基本需求。
展望
在未来,我们可以进一步完善游戏的功能和界面设计,增加更多的游戏模式和
挑战性。
我们也可以考虑将游戏移植到其他平台上,以提供更广泛的游戏体验。
同时,我们还可以利用更先进的技术和算法,进一步优化游戏的性能和用户体验。
总之,我们将继续努力,不断改进和完善我们的五子棋游戏,为玩家提供
更好的游戏体验。
五子棋游戏程序的设计报告
![五子棋游戏程序的设计报告](https://img.taocdn.com/s3/m/885a5738852458fb760b5600.png)
计算机学院网络工程专业《程序设计综合课程设计》报告(2011/2012学年第一学期)学生姓名:学生班级:网络工程学生学号:指导教师:2011年12月30日双人五子棋目录第一章课程设计目的和要求 (1)1.1课程设计的目的 (1)1.2课程设计的要求 (1)第二章课程设计任务内容 (2)2.1课程设计的主要内容 (2)2.2系统设计原则 (2)第三章设计说明 (3)3.1游戏分析和介绍 (3)3.1.1游戏分析 (3)3.1.2游戏介绍 (3)3.2重点模块说明 (3)3.2.1棋盘界面Showboard() (3)3.2.2下棋Play() (4)3.2.3覆盖棋盘Recoverboard() (7)3.2.4游戏结束后初始化棋盘Unitboard() (7)3.2.5保存棋盘CopyB() (8)3.3函数清单 (8)3.4接口 (9)第四章软件使用说明 (10)4.1测试 (10)4.2限制条件 (13)第五章课程设计心得体会 (14)附录一程序流程图 (15)附录二程序代码 (16)附录三参考文献 (26)第一章课程设计目的和要求1.1课程设计的目1,学习综合运用C语言课程和其他相关课程的知识,提高分析解决实际问题的能力,进一步巩固、加深和拓宽所学的知识,进一步加强结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。
2,全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法,与同学合作设计整套程序,并且独立完成一定工作量的程序设计.3,掌握程序设计中的常用算法和C语言的程序技巧,培养良好的程序设计风格。
4,运用所学的知识了解五子棋游戏的制作结构,将所学的知识运用于实践中。
1.2课程设计的要求1,与同学合作设计、编制、调试出一款双人五子棋游戏,并单独完成其中一定量的函数模块。
2,要求该游戏具有趣味性和可操作性,能够正常运行。
其中用到C++语言中的各种语句、结构。
(如其中需要注意全局变量和局部变量的申明,数组的使用等)3,双人五子棋要求能够进入欢迎界面,二人对弈,当有五颗同色棋子相连时,判断出输赢等一系列游戏流程。
C语言图形五子棋课程设计报告
![C语言图形五子棋课程设计报告](https://img.taocdn.com/s3/m/b1843c8e26fff705cd170a00.png)
C语言图形五子棋课程设计报告集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#C语言课程设计报告五子棋院系:软件学院专业:软件工程班级:102032 指导老师:王星摘要五子棋是一种两人对弈的纯策略型棋类游戏,应用C语言编写程序可以在计算机上实现二人对弈五子棋功能。
二人对弈五子棋程序由图像生成、光标移动与落子、判断胜负和系统帮助等子程序构成;程序中应用了结构体、数组、全局变量、按键处理和图形编程等元素和语句。
程序通过棋盘和棋子图像生成、二人移子与落子和判断胜负等功能的实现,在计算机上实现了二人五子棋对弈。
AbstractGobang is a traditional checker-type game in which the lining up of five pieces in a straight line scores victory. And C language can accomplish a 2-player gobang on computers. This 2-player gobang program contains 4 main sections, they are, graphics, movement and selection, victory judgment and helping system. Several elements and sentences of C programming language such as structural element, array, global variables, press processing and Graphics Programming are also applied in the program. With the accomplishment of the three main subprograms, namely, checker board and pieces construction, play ers’ step-selection and victory judgment, a whole program of gobang is established and gobang is available on computers.目录第1章:需求分析五子棋背景传统五子棋的与围棋相同,分为黑白两色,棋盘为15×15,棋子放置于棋盘线上。
c课程设计五子棋游戏
![c课程设计五子棋游戏](https://img.taocdn.com/s3/m/0f51d3d66429647d27284b73f242336c1eb930e7.png)
c课程设计五子棋游戏一、教学目标本课程的目标是让学生掌握五子棋游戏的基本规则和技巧,能够独立进行游戏,并理解游戏的算法和逻辑。
知识目标包括了解五子棋的历史和背景,掌握游戏的规则和技巧,理解游戏的算法和逻辑。
技能目标包括能够独立进行游戏,能够分析游戏局势,能够制定游戏策略。
情感态度价值观目标包括培养学生的团队合作精神,培养学生的竞技精神,让学生理解胜负的重要性。
二、教学内容本课程的教学内容主要包括五子棋的基本规则和技巧,游戏的算法和逻辑,以及游戏中的团队合作和竞技精神。
具体包括五子棋的历史和背景,游戏的规则和技巧,如何分析游戏局势和制定游戏策略,以及如何在游戏中展现团队合作和竞技精神。
三、教学方法本课程将采用讲授法、讨论法、案例分析法和实验法等多种教学方法。
通过讲授法,让学生掌握五子棋的基本规则和技巧;通过讨论法,让学生深入理解游戏的算法和逻辑;通过案例分析法,让学生学会分析游戏局势和制定游戏策略;通过实验法,让学生在实际游戏中体验团队合作和竞技精神。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。
教材和参考书将提供五子棋的基本规则和技巧,游戏的算法和逻辑,以及游戏中的团队合作和竞技精神的相关知识。
多媒体资料将提供五子棋游戏的示例和案例,帮助学生更好地理解游戏的相关知识。
实验设备将用于让学生在实际游戏中体验团队合作和竞技精神。
五、教学评估本课程的评估方式包括平时表现、作业和考试。
平时表现主要评估学生的出勤、课堂参与度和团队合作表现。
作业包括练习题和游戏设计项目,评估学生对五子棋规则和技巧的掌握程度,以及游戏的算法和逻辑的应用能力。
考试包括期中和期末考试,评估学生对课程知识的全面理解和应用能力。
评估方式应客观、公正,能够全面反映学生的学习成果。
六、教学安排本课程的教学安排将在每周的一节课进行,共计10节课。
教学进度将按照教学大纲进行,确保在有限的时间内完成教学任务。
教学时间将安排在下午或晚上,考虑学生的作息时间。
c语言程序的设计五子棋
![c语言程序的设计五子棋](https://img.taocdn.com/s3/m/91a7620d3c1ec5da51e2700d.png)
伊犁师学院高级语言课程设计报告学院:电子与信息工程学院学生:学号:专业届别:指导教师:完成时间:五子棋游戏1 设计目的及要求目的:(1)学习综合运用C语言课程和其他相关课程的知识,提高分析解决实际问题的能力,进一步巩固、加深和拓宽所学的知识,进一步加强结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。
(2)全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法,与同学合作设计整套程序,并且独立完成一定工作量的程序设计.(3)掌握程序设计中的常用算法和C语言的程序技巧,培养良好的程序设计风格。
(4)运用所学的知识了解五子棋游戏的制作结构,将所学的知识运用于实践中。
要求:(1)独自设计、编制、调试出一款五子棋游戏。
(2)要求该游戏具有趣味性和可操作性,能够正常运行。
其中用到C语言中的各种语句、结构。
(如其中需要注意全局变量和局部变量的申明,数组的使用等)(3)五子棋游戏要求能够进入欢迎界面,当有五颗相同颜色的棋子连续连成五颗,就胜出。
任务:五子棋是一种传统的棋盘游戏,是我国古代传统的黑白棋种之一发展于日本,流行于欧洲任务容就是设计一款老少皆宜、能够锻炼个人策略谋划能力棋。
有助于孩子开发智力,或者闲暇时打发时间。
原则:(1)系统性。
系统作为统一整体而存在,因此,在设计中,要从系统的角度考虑。
系统的代码要统一,传递语言要尽可能一致。
(2)可靠性。
可靠性是指系统抵御外界干扰的能力及外界干扰时的恢复能力。
(3)规性。
游戏的运用以吸引玩家的乐趣为前提,一方面,系统设计应尽量避免不必要的复杂化,另一方面模块应尽量简洁,以缩短处理流程。
2 开发工具C语言3 应用平台Windows xp4 功能设计游戏分析:五子棋是两人之间的竞技游戏,该五子棋程序基本上实现了五子棋游戏的功能,有双方下棋之前的欢迎界面及下棋过程中的棋盘界面,还有最终会判断出输赢。
同时,该游戏采用了二维坐标实现的,明了易懂,方便玩家在游戏过程中的基本操作,使游戏更加简便。
C语言五子棋游戏程序课程设计
![C语言五子棋游戏程序课程设计](https://img.taocdn.com/s3/m/c41f10136d85ec3a87c24028915f804d2b16871c.png)
C语言五子棋游戏程序课程设计C++五子棋游戏程序设计一、课设内容1. 掌握C++基本编程风格。
2. 编写程序代码,实现各个模块的功能。
3. 完成小型游戏应用系统的设计开发.4. 关键语句写注释。
5. 测试程序,写出测试报告。
6. 在实验报告写出综合设计心得。
二、实验内容在此次大作业中,我学习设计一个五子棋游戏的程序,源代码及分析如下:#include#includevoid shuchu(char a[15][15]){int x,y,i;cout<<" ";for(i=0;i<15;i++)cout<<setw(3)<<i;< p="">cout<<endl;< p="">for(x=0;x<15;x++){cout<<setw(2)<<x;< p="">for(y=0;y<15;y++)cout<<setw(3)<<a[x][y];< p="">cout<<endl;< p="">}}bool osheng(char a[15][15]){int x,y;for(x=0;x<15;x++)for(y=0;y<11;y++)if(a[x][y]=='o'&&a[x][y+1]=='o'&&a[x][y+2]=='o'&&a[x][y+ 3]=='o'&&a[x][y+4]=='o') return 1;for(x=0;x<11;x++)for(y=0;y<15;y++)if(a[x][y]=='o'&&a[x+1][y]=='o'&&a[x+2][y]=='o'&&a[x+3][ y]=='o'&&a[x+4][y]=='o') return 1;for(x=0;x<11;x++)for(y=0;y<11;y++)if(a[x][y]=='o'&&a[x+1][y+1]=='o'&&a[x+2][y+2]=='o'&&a [x+3][y+3]=='o'&&a[x+4][y+4]=='o' )return 1;for(x=15;x>4;x--)return 0;}bool xsheng(char a[15][15]){int x,y;for(x=0;x<15;x++)for(y=0;y<11;y++)if(a[x][y]=='x'&&a[x][y+1]=='x'&&a[x][y+2]=='x'&&a[x][y+ 3]=='x'&&a[x][y+4]=='x') return 1;for(x=0;x<11;x++)for(y=0;y<15;y++)if(a[x][y]=='x'&&a[x+1][y]=='x'&&a[x+2][y]=='x'&&a[x+3][ y]=='x'&&a[x+4][y]=='x') return 1;for(x=0;x<11;x++)for(y=0;y<11;y++)if(a[x][y]=='x'&&a[x+1][y+1]=='x'&&a[x+2][y+2]=='x'&&a[ x+3][y+3]=='x'&&a[x+4][y+4]=='x' )return 1;for(x=15;x>4;x--)for(y=15;y>4;y--)if(a[x][y]=='x'&&a[x+1][y-1]=='x'&&a[x+2][y-2]=='x'&&a[x+3][y-3]=='x'&&a[x-4][y+4]=='x') return 1;return 0;}bool he(char a[15][15]){int x,y;for(x=0;x<15;x++)for(y=0;y<15;y++)if(a[x][y]=='-')return 0;return 1;}void main(){int x,y,s,q;char a[15][15];for(x=0;x<15;x++)for(y=0;y<15;y++)cin>>q;if(q==1)goto two;/* elsegoto one; */two:cout<<"请选择是否进入悔棋模式:1.是;2.否\n";cin>>q;if(q==2)goto three;shuchu(a);while(1){s: while(1){cout<<"请玩家1输入下子的坐标"<<endl;< p="">cin>>x>>y;if(a[x][y]=='o'||a[x][y]=='x')cout<<"此处已经有字,请重下"<<endl;< p="">else{a[x][y]='o';break;}}shuchu(a);cout<<"是否需要悔棋?是请输入:1;否请输入:0"<<endl;< p=""> cin>>s;switch(s){case 1:a[x][y]='-';goto s;break;case 0:break;}s1: if(osheng(a)){cout<<"玩家1胜";break;}s2: while(1){cout<<"请玩家2输入下子的坐标"<<endl;< p="">cin>>x>>y;if(a[x][y]=='o'||a[x][y]=='x')cout<<"此处已经有字,请重下"<<endl;< p="">else{a[x][y]='x';break;}}shuchu(a);cout<<"是否需要悔棋?是请输入:1;否请输入:0"<<endl;< p=""> cin>>s;switch(s){case 1:a[x][y]='-';goto s2;break;case 0:break;}s3: if(xsheng(a)){cout<<"玩家2胜";if(he(a)){cout<<"平局";break;}}three: shuchu(a);while(1){while(1){cout<<"请玩家1输入下子的坐标"<<endl;< p=""> cin>>x>>y;if(a[x][y]=='o'||a[x][y]=='x')cout<<"此处已经有字,请重下"<<endl;< p=""> else{a[x][y]='o';break;}}shuchu(a);if(osheng(a)){cout<<"玩家1胜"; break;}}shuchu(a);if(xsheng(a)){cout<<"玩家2胜"; break;}if(he(a)){cout<<"平局"; break;}}}三、感想体会本实验是用C++来设计完成了五子棋游戏。
五子棋程序设计报告参考模板
![五子棋程序设计报告参考模板](https://img.taocdn.com/s3/m/4d9373a2cf84b9d529ea7a70.png)
五子棋程序设计报告班级:姓名:学号:指导老师:2012/1/07一、课程设计题目与要求题目:网络五子棋游戏。
功能要求:该软件应包括服务器端程序和客户端程序两个部分,要求实现的功能如下。
客户端功能要求:(1)友好的用户登录界面设计;(2)登录服务器后,请求用户列表;(3)相其他用户发出邀请,做游戏;(4)当用户加入或离开时,客户端接受服务器发送的成员列表,更新用户列表;(5)当用户开始游戏或游戏结束时,服务器通知客户端用户更新该用户状态,客户端接受该消息后,更新该用户状态;(6)根据五子棋的游戏规则实现五子棋的游戏功能,包括游戏判断、画图等。
服务器端功能要求:(1)服务器接受用户注册信息,服务器最多容纳64 个成员,成员信息包括:用户名、IP 地址、端口和状态,当服务器退出时,保存用户信息;(2)当用户加入或退出,服务器向所有用户发送成员列表,通知客户端更新成员列表;(3)当用户开始游戏或者结束游戏时,服务器通知其他用户更新该用户状态,通知客户端更新成员状态;(4)和客户端一起维护游戏的进行,发送游戏信息。
二、需求分析以及模型框架1. 五子棋游戏是一历史悠久,对抗性强,技巧性高的棋类游戏。
而且我对五子棋有着独特的爱好,希望自己也可以编写出一款可以实现人机对战的五子棋游戏。
把自己的思想付给电脑,让自己有些成就感,给自己继续努力的动力。
借此次课程设计的机会,把想法变成现实。
而且五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。
五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。
它是中西文化的交流点,是古今哲理的结晶。
所以此次c++课程设计选择五子棋这个题目。
2.程序所实现的功能通过给电脑赋予人工智能,利用电脑运算速度快的特点,结合五子棋的游戏规则,给电脑设定固定的扫描方式,设定权值,使电脑能够选择最合适的落子点,然后调用加载已做好的棋盘棋子图像,最终实现简单的人机对弈。
c语言课程设计五子棋
![c语言课程设计五子棋](https://img.taocdn.com/s3/m/fc8aeb66cd1755270722192e453610661ed95a89.png)
c语言课程设计五子棋一、教学目标本章节的教学目标是使学生掌握C语言编程基础,学会使用C语言编写简单的五子棋游戏。
具体目标如下:1.知识目标:–了解C语言的基本语法和数据类型。
–掌握函数的定义和调用。
–理解指针的概念和使用方法。
–学习结构体的定义和运用。
2.技能目标:–能够使用C语言编写简单的程序。
–学会使用C语言进行基本的输入输出操作。
–掌握使用C语言进行条件判断和循环控制。
–能够使用C语言实现五子棋游戏的逻辑和规则。
3.情感态度价值观目标:–培养学生的编程兴趣和自信心。
–培养学生解决问题的能力和创新思维。
–培养学生的团队合作意识和沟通能力。
二、教学内容本章节的教学内容主要包括C语言的基本语法、数据类型、函数、指针、结构体等。
具体内容如下:1.C语言的基本语法和数据类型。
–变量的声明和赋值。
–控制语句的使用,如if、for、while等。
–数组的声明和使用。
2.函数的定义和调用。
–函数的声明和定义。
–函数的参数传递和返回值。
–函数的调用和调用方式。
3.指针的概念和使用方法。
–指针的声明和赋值。
–指针的解引用和取地址。
–指针与数组的关系。
4.结构体的定义和运用。
–结构体的声明和定义。
–结构体的成员访问和操作。
–结构体的数组和指针。
5.五子棋游戏的逻辑和规则实现。
–棋盘的表示和初始化。
–玩家输入和棋子放置。
–判断胜利条件和游戏结束。
三、教学方法本章节的教学方法采用讲授法、讨论法、实验法相结合的方式。
具体方法如下:1.讲授法:通过讲解和示例,使学生掌握C语言的基本语法和数据类型。
2.讨论法:通过小组讨论和问题解答,帮助学生理解函数、指针和结构体的概念。
3.实验法:通过编写五子棋游戏程序,让学生动手实践,巩固所学知识。
四、教学资源本章节的教学资源包括教材、参考书、多媒体资料和实验设备。
具体资源如下:1.教材:选用《C程序设计语言》作为主教材,辅助以《C语言编程实例解析》等参考书。
2.多媒体资料:提供C语言编程的教学视频和PPT课件,帮助学生更好地理解知识点。
c课程设计五子棋
![c课程设计五子棋](https://img.taocdn.com/s3/m/28bfe182a48da0116c175f0e7cd184254b351bb9.png)
c 课程设计五子棋一、课程目标知识目标:1. 学生能理解五子棋的基本规则,掌握棋盘布局及棋子的移动方式。
2. 学生能运用基本的攻防策略进行五子棋对局。
3. 学生了解五子棋的历史背景及其在我国的发展。
技能目标:1. 学生通过五子棋游戏,培养逻辑思维能力和策略运用能力。
2. 学生能独立完成一局五子棋对局,具备基本的判断和决策能力。
3. 学生学会总结经验,调整策略,逐步提高五子棋水平。
情感态度价值观目标:1. 学生培养良好的竞技精神,尊重对手,遵守规则,公平竞争。
2. 学生在游戏中学会合作与交流,培养团队意识。
3. 学生通过五子棋的学习,增强对传统文化的认识,培养民族自豪感。
课程性质:本课程以五子棋为载体,结合学生年级特点,注重培养学生的逻辑思维、策略运用和团队协作能力。
学生特点:六年级学生具备一定的独立思考能力,喜欢挑战性游戏,但需引导培养竞技精神和合作意识。
教学要求:教师应关注学生个体差异,因材施教,鼓励学生积极参与,充分调动学生的主观能动性。
在教学过程中,注重五子棋知识与实际操作相结合,提高学生的实践能力。
同时,关注学生在课程中的情感态度价值观培养,使其全面发展。
通过课程目标的分解与实现,为后续教学设计和评估提供依据。
二、教学内容1. 五子棋基本规则:介绍五子棋棋盘、棋子及落子规则,让学生理解游戏的根本原则。
- 教材章节:第二章 棋类游戏基本规则2. 五子棋棋盘布局与棋子移动:学习棋盘的分区及棋子的走法,掌握基本布局技巧。
- 教材章节:第三章 棋类游戏基本技巧3. 基本攻防策略:教授学生基本的攻防技巧,如连三、堵四等,提高对局应变能力。
- 教材章节:第四章 棋类游戏攻防策略4. 五子棋对局实践:组织学生进行多轮对局实践,培养实战经验,提高判断和决策能力。
- 教材章节:第五章 棋类游戏实战演练5. 五子棋历史与文化:介绍五子棋的历史背景、发展过程以及在我国传统文化中的地位。
- 教材章节:第六章 棋类游戏历史与文化6. 策略总结与提高:引导学生总结对局经验,调整策略,不断提高五子棋水平。
c语言五子棋课程设计报告
![c语言五子棋课程设计报告](https://img.taocdn.com/s3/m/e13855e8b04e852458fb770bf78a6529657d3577.png)
C语言五子棋课程设计报告一、引言五子棋是一种非常古老的棋类游戏,起源于中国。
它简单但却能激发人们的智慧和策略思维。
在本课程设计报告中,我们将使用C语言来实现一个五子棋游戏,让玩家可以在计算机上进行对战或与计算机进行对弈。
二、项目概述本项目旨在设计一个简单而实用的五子棋游戏,实现以下主要功能: 1. 人机对战:玩家可以选择与计算机进行对战,计算机作为电脑AI会给出最佳的下棋策略。
2. 双人对战:玩家可以选择与其他玩家进行对战,通过交替下棋来竞争胜利。
3. 悔棋功能:玩家可以选择悔棋,回退到上一步棋的状态。
4. 判断胜负:每一步落子后,游戏程序会自动判断是否有五子连珠,以确定胜负。
5. 棋盘显示:在游戏界面中,将显示实时的棋盘状态,供玩家观察。
三、设计思路1.游戏界面设计:使用命令行界面实现游戏的显示和操作,通过文本形式的棋盘来展示棋局状态。
2.数据结构设计:采用二维数组来表示棋盘,每个数组元素代表一个交叉点,可以存储不同的棋子状态(无子、玩家1棋子、玩家2棋子)。
3.算法设计:–下棋算法:计算机AI通过搜索当前棋盘的状态,评估每个可落子位置的得分,并选择得分最高的位置进行落子。
–判断胜负算法:在每次玩家下棋后,判断当前棋局是否出现了五子连珠的情况,如果有则宣布胜利。
4.用户交互设计:根据用户的输入进行响应,包括选择游戏模式、确定下棋位置等。
四、详细实现1. 游戏初始化在游戏开始时,初始化棋盘状态,清空棋盘上的所有棋子。
2. 游戏界面显示使用命令行界面来显示游戏界面,通过输出字符来展示棋盘状态。
3. 玩家操作玩家在游戏过程中可以通过键盘输入来选择操作: - 选择对手:可以选择与计算机对战或与其他玩家对战。
- 下棋位置:玩家可以通过输入行列坐标的方式选择下棋位置。
4. 计算机AI计算机AI通过搜索当前棋盘状态来选择最佳的下棋位置,算法包括以下步骤: 1. 遍历棋盘上的每个空位置。
2. 对于每个空位置,依次评估其在横向、纵向和对角线方向上的得分: - 得分规则:根据当前棋盘状态判断是否形成连珠,如果形成则加分,如果有对手形成连珠则减分。
c五子棋课程设计报告
![c五子棋课程设计报告](https://img.taocdn.com/s3/m/86535fedcd22bcd126fff705cc17552706225e4a.png)
c五子棋课程设计报告一、教学目标本课程旨在让学生掌握C五子棋的基本规则、技巧和策略,培养他们的逻辑思维、判断力和竞技水平。
具体目标如下:1.知识目标:了解C五子棋的历史背景、基本规则和竞技策略。
掌握棋子的移动、 capture 和摆放规则。
了解不同棋型(活三、活四、死三、死四等)及其应用。
2.技能目标:能够独立完成C五子棋的设置和开局。
能够运用基本技巧进行中局对抗。
能够运用竞技策略进行残局思考和决策。
3.情感态度价值观目标:培养学生的团队协作和竞技精神。
增强学生面对挑战、克服困难的信心。
通过C五子棋的学习,培养学生的耐心、细心和逻辑思维能力。
二、教学内容根据课程目标,教学内容主要包括以下几个方面:1.C五子棋基本规则:棋盘、棋子、走法、capture 等。
2.棋型识别与运用:活三、活四、死三、死四等。
3.开局技巧:棋型摆放、线路控制、速度进攻。
4.中局策略:防守、攻击、棋型配合。
5.残局思考:胜负判断、棋型转换、策略选择。
教学大纲安排如下:第1-2课时:C五子棋基本规则及棋型识别。
第3-4课时:开局技巧及中局策略。
第5-6课时:残局思考及竞技水平提升。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用以下教学方法:1.讲授法:讲解C五子棋的基本规则、棋型和策略。
2.案例分析法:分析典型棋局,引导学生思考和判断。
3.实验法:让学生亲自动手实践,提高竞技水平。
4.讨论法:分组讨论,分享学习心得和经验。
四、教学资源教学资源包括:1.教材:《C五子棋入门教程》。
2.参考书:《C五子棋高级技巧》。
3.多媒体资料:教学PPT、棋局视频等。
4.实验设备:C五子棋棋盘、棋子。
以上资源将有助于实现教学目标,提高学生的学习效果。
五、教学评估本课程的教学评估将采用多元化方式,全面、客观地评价学生的学习成果。
评估方式包括:1.平时表现:课堂参与度、团队协作、竞技水平等。
2.作业:课后练习、棋局分析报告等。
3.考试:期中考试、期末考试,分别考察学生的基本规则掌握和竞技水平。
五子棋程序设计说明书
![五子棋程序设计说明书](https://img.taocdn.com/s3/m/fc31420abe23482fb5da4c3c.png)
}
printf("\n");
}
}
int judge(int x,int y) /*判断各方向五子是否连成一线*/ //x,y分别为横纵坐标//
设计背景及意义
我们的五子棋程序是在Visual C++ 环境下运行的。
Visual C++
Microsoft Visual C++(简称Visual C++、MSVC、VC++或VC)微软公司的C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。VC++整合了便利的除错工具,特别是整合了微软视窗程式设计(Windows API)、三维动画DirectX API,Microsoft .NET框架。目前最新的版本是Microsoft Visual C++ 2010。Visual C++集成了,于1998发行。发行至今一直被广泛地用于大大小小的项目开发。
case 97: *y=*y-1;break; //a键控制棋子左移//
case 115: *x=*x+1;break; //s键控制棋子下移//
case 100: *y=*y+1;break; //d键控制棋子右移//
case 111: flag=0;break; //o键确定落子//
}
if(flag==0) break; //判断某步是否移动完成//
for(i=0;i<2000;i++) //改变玩家//{来自if(flag==1)
flag=0;
else
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for(j=0;j<19;j++) gChessBoard[i][j]=CHESSNULL;
/*光标初始位置*/ gCursor.x=gCursor.y=0;
*/
#define CHESSNULL
0 //没有棋子
#define CHESS1
'O'//一号玩家的棋子
#define CHESS2
'X'//二号玩家的棋子
/*定义按键类别*/ #define KEYEXIT #define KEYFALLCHESS #define KEYMOVECURSOR #define KEYINVALID
步履维艰,就是因为没有长期的阅读练习和教训累积。
八、源程序
/* 程序中用到的库函数所在头文件应用 #include 命令包含进来 */
#include #include #include #include #include
<stdio.h> <bios.h> <ctype.h> <conio.h> <dos.h>
3
二、设计模块
三、小组分工 李益:初始化模块 谯平:下棋操作模块 张健:胜负判断模块
四、流程图
4
五、设计过程
1、列出所需头文件名 2、定义棋盘的制符表及位置 3、定义双方玩家各自的操作键 4、定义数据结构 5、说明自定义函数原型 6、定义全局变量
5
7、初始化图像以及获得按键值 8、嵌入各自定义函数编写主函数 9、编写界面初始化函数 void Init(void) 10、编写画棋盘函数 void DrawMap(void) 11、编写交换棋手函数 int ChangeOrder(void) 12、编写获取按键值函数 int GetKey(void) 13、编写落子处理函数 void DoError(void) 14、编写赢棋处理函数 void DoWin(int Order) 15、编写走棋函数 int ChessGo(Order , point Cursor) 16、编写判断是否赢棋函数 int JudgeWin(Order,point Cursor) 17 、 编 写 判 断 在 规 定 方 向 是 否 有 五 子 相 连 函 数 int JudgeWinline(Order,point Cursor) 18、编写移动光标函数 void MoveCursor(Order,press) 19、编写游戏结束处理函数 void EndGame(void) 20、编写显示当前棋方函数 void ShowOrderMsg(Order) 21、编写落子正确处理函数 void DoOK(void) 22、编写检查用户按键类别函数 int CheckKey(press)
/*界面初始化,数据初始化*/ void Init(void) {
int i,j; char *Msg[]= {
"Player1 key:", " UP----w", " DOWN--s", " LEFT--a", " RIGHT-d", " DO----space", "", "Player2 key:", " UP----up", " DOWN--down", " LEFT--left", " RIGHT-right", " DO----ENTER", "", "exit game:", " ESC", NULL, };
#define MAPXOFT
5
#define MAPYOFT
2
/*定义1号玩家的操作键键码*/
#define PLAY1UP
0x1157/*上移--'W'*/
#define PLAY1DOWN
0x1f53/*下移--'S'*/
#define PLAY1LEFT
0x1e41/*左移--'A'*/
#define PLAY1RIGHT 0x2044/*右移--'D'*/
#define PLAY2RIGHT 0x4d00/*右移--方向键right*/
#define PLAY2DO
0x1c0d/*落子--回车键Enter*/
/*若想在游戏中途退出, 可按 Esc 键*/
#define ESCAPE
0x011b
/*定义棋盘上交叉点的状态, 即该点有无棋子 */
/*若有棋子, 还应能指出是哪个玩家的棋子
if(ChessGo(gPlayOrder,gCursor)==FALSE)/*走棋*/ DoError();/*落子错误*/
else {
DoOK();/*落子正确*/
/*如果当前行棋方赢棋*/ if(JudgeWin(gPlayOrder,gCursor)==TRUE) {
DoWin(gPlayOrder); bOutWhile = TRUE;/*退出循环标志置为真*/ } /*否则*/ else /*交换行棋方*/ ChangeOrder(); } break;
void ShowOrderMsg(int Order);
void EndGame(void);
/**********************************************************/
/**********************************************************/
#define PLAY1DO
0x3920/*落子--空格键*/
/*定义2号玩家的操作键键码*/
#define PLAY2UP
0x4800/*上移--方向键up*/
#define PLAY2DOWN
0x5000/*下移--方向键down*/
#define PLAY2LEFT
0x4b00/*左移--方向键left*/
六、调试过程
运行平台:C/C++程序设计学习与实验系统 1、点击运行,出现棋盘界面
6
2、根据界面提示键落子,玩家一先下,双方轮流落子。
7
3、一方五子相连,判出赢家,游戏结束。 4 按任意键退出游戏。
8
七、问题与与总结
1、用十六进制数制表格的方法不了解,参照网例的时候也不是很明白原
理,以至于表格不是很完善,两行中间的一行在棋盘上没有清晰的显示出
void DrawCross(int x,int y);
void DrawMap(void);
int JudgeWin(int Order,struct point Cursor);
int JudgeWinLine(int Order,struct point Cursor,int direction);
来。
2、设计这样稍微复杂的程序时,我们要多多利用自定义函数的嵌入方法,
这样把主程序分为若干个自定义函数,不仅可以减少程序设计中的遗漏现
象,还有利于我们建立完善的设计思维模式。
3、设计程序前要多翻阅资料与阅读范例,尽量减少程序编写时犯错,程
序编写时犯错很浪费时间和精力,而且往往很难找出错误的地方。
4、编程的前提是读懂其他程序,平时需要多练习才行,这次设计的过程
9
2
一、设计简介
五子棋是一种传统的棋盘游戏,是起源于中国古代的传统黑白棋种之一。 发展于日本,流行于欧美。容易上手,老少皆宜,而且趣味横生,引人入 胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。 这种游戏用笔纸都可以进行。
本程序设计为人与人对弈,双方棋子为一种颜色。一方执 O 棋,一方执 X 棋,执 O 形棋的一方先行下子,移动光标键为“w(上)、s(下)、a(左)、 d(右)”,落子键位“空格”,然后另一方走棋,移动光标键为“上、下、 左、右”,落子键为“Enter"。接着双方轮流走棋,每方都试图在游戏结束 前让自己的棋子在横线、竖线、斜线方向五子相连,首先实现五子相连的 一方获胜,游戏结束。程序执行过程中,要求棋盘、棋子时时可见,并且 人可以通过按键盘按键移动光标,摆放棋子。同时在落子不同情况以及出 现赢家的时候都会出现相应的声音。
0/*退出键*/ 1/*落子键*/ 2/*光标移动键*/ 3/*无效键*/
/*定义符号常量: 真, 假 --- 真为1, 假为0 */
#define TRUE
1
#define FALSE
0
/**********************************************************/
/**********************************************************/ /*主函数*/ void main() {
int press; int bOutWhile=FALSE;/*退出循环标志*/
Init();/*初始化图象,数据*/
while(1) {
/*是光标移动键*/ case KEYMOVECURSOR:
MoveCursor(gPlayOrder,press); break;
/*是无效键*/ case KEYINVALID:
break; }
if(bOutWhile==TRUE) break;
}
/*游戏结束*/
12
EndGame(); } /**********************************************************/