黑白棋程序设计.docx
《黑白棋程序设计.docx》由会员分享,可在线阅读,更多相关《黑白棋程序设计.docx(18页珍藏版)》请在沃文网上搜索。
1、课程设计任务书学院理学院专业统计学学生姓名班级学号课程设计题目黑白棋程序设计实践教学要求与任务:1、进一步培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解;2、针对C语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。3、掌握C语言的编程技巧及程序设计的常用算法设计任务:本次设计主要实现黑白棋游戏的系统程序该程序主要实现与黑白棋有关的包括棋盘绘制,棋子绘制,双方执棋下子,统计双方分数,比较,输出输赢等一系列程序,实现在该程序中能够正常进行双方对弈的功能。工作计划与进度安排:第一天查阅资料; 第二、三天 程序设计 ;第四天 程序调
2、试 ;第五天 答辩指导教师: 201 年 月 日专业负责人: 201 年 月 日学院教学副院长: 201 年 月 日摘要程序设计语言类课程的指导思想是:使学生通过学习即高级编程语言的知识、编程技术和基本算法,又掌握程序设计的思想和方法,更具备利用计算机求解实际问题的能力,能灵活运用高级语言进行程序设计6。 其实认真学习一门语言并不困难,关键要所追求的学习的方法和途径。一条好的途径便于快速掌握,熟悉运用语言。学习的目的在于应用,理论来源于实践,如果在学习中能够通过有效的途径如自己动手设计一个功能比较前大的开发系统,借鉴于各种工具书,善于总结。定可以很好的效果。正是如此,使我们在这几年中对语言学习
3、有了很大提高。通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。关键词: 掌握编程语言的知识 ;编程技术;基本算法思想和方法目录黑白棋442.1.用到的函数:42.1.1main()主函数:42.1.2DrawQp()画棋盘函数:42.1.3MoveColor()恢复原来格子的状态42.1.4playtoplay()人人对战函数42.1.5QpChange()判断棋盘变化42.1.6PrintScore()输出成绩52.2.子函数功能一览表52.3. 主函
4、数流程图62.3.1棋盘绘制流程图62.4.函数解析72.4.1图形库文件72.4.2图形初始化函数72.4.3设置背景颜色72.4.4画线72.4.5设置填充模式和颜色72.4.6方向操作72.4.7落棋位置判断82.4.8判断棋盘的变化和改变棋子的颜色82.4.9 成绩输出82.4.10输出成绩82.4.11输出最后的胜利者结果8u2.5.源代码9u2.6运行结果17u2.7心得体会17参考文献18黑白棋2.1.用到的函数:2.1.1main()主函数:在主函数中,棋盘状态用数组a88,初值为0,表示空格。用图形系统画出棋盘,调用playtoplay()人人对弈函数开始游戏,一旦游戏结束后
5、,关闭图形系统,程序结束。2.1.2DrawQp()画棋盘函数:背景颜色设为蓝色,从坐标(100,100)开始每隔40个单位用白色画一条水平直线,一条垂直线,构成棋盘,用循环语句实现。以x和y为圆心,xradius和yradius为水平和垂直轴画一填充椭圆,当xradius和yradius相等时,则画出的是圆,用它表示棋子。SetPlayColor()设置棋子的颜色:函数的参数为整型变量t,根据t的值来设计填充棋子的当前颜色,值为1代表白棋,值为2代表黑棋。2.1.3MoveColor()恢复原来格子的状态因为棋子移动过程并没有改变数组元素的值,所以可以根据数组元素的值判定原来的状态,如果值是
6、1,就恢复白色棋子,值是2则恢复黑色棋子,否则恢复蓝色空格。2.1.4playtoplay()人人对战函数这是游戏进行的函数,主要是接收棋手的按键消息,按Esc键程序可以随时结束。按上下左右光标键,则改变棋子移动的坐标值。按回车键后判断。2.1.5QpChange()判断棋盘变化当棋手按回车键落子后,就要分别往8个方向判断是否包围住对方棋子,如果是,则改变棋盘。如果所有方向都判断过,并且没有引起棋盘的变化,则棋盘变化标志值yes为0,返回yes,结束本函数。根据当前数组元素的值判断分数,也就是各方棋子的个数,如果数组元素值为1,白棋棋子数累加;如果数组元素值为2,则黑棋棋子数累加。2.1.6P
7、rintScore()输出成绩利用设置实体填充模式填充矩形条清除掉前次的成绩,再利用sprintf()函数将整数转换为字符串的形式,再利用outtextxy()函数将成绩输出。playWin()输出胜利者结果 根据分数值score1和score2的大小得出下棋的结果,输出赢者信息2.2.子函数功能一览表序号123456名称DrawQpSetPlayPlaytoplayMoveColorQpChangeDoScore功能绘制棋盘和初始棋子设置棋子第一次的颜色人人对战函数恢复原来棋盘状态判断棋盘的变化改变棋子的颜色处理分数备注在界面上绘制320*320的棋盘,并在棋盘中绘制8*8的格子,初始棋子先
8、走棋者持白子,后走棋黑子,每次交替俩棋手交替走棋,定义键盘操作等棋子由初始位置到落子位置的路径不改变颜色走棋后判断棋盘的变化情况,根据变化情况判断是否可以输出分数根据棋盘上旗子的多少进行分数的处理2.3. 主函数流程图开始绘制棋盘和棋子棋手对战判断棋盘变化计算棋手成绩输出胜利者信息结束Y恢复原来棋盘状态2.3.1棋盘绘制流程图绘制棋盘盘面棋位置定义大小定义底色定义绘制棋子棋子大小颜色定义棋子位置2.4.函数解析2.4.1图形库文件#include graphics.h2.4.2图形初始化函数intgd=DETECT,gr图形初始化函数initgraph(&driver,&mode,“路径”)功
9、能:装入图形驱动程序2.4.3设置背景颜色在本程序中,设置的的北京颜色为蓝色,setbkcolor(BLUE),根据上述可知,此时,游戏界面的底色为蓝色。setcolor(0)将线的颜色设置为黑色,由此是为了取消圆形周围的东西。2.4.4画线在本程序中,使用上述源代码实现绘制棋盘的功能,也就是以40为一个步增,以(100,100)为起点,以(100,420)、(420,100)(420,420)为顶点画出棋盘,棋盘大下为320*320,由于步增是40,所以,棋盘上自然出现8*8的格子,由于画线的时候,没有定义线的颜色,所以线的颜色是默认的白色,所以最终出现了兰色的底面上以白色画格子的棋盘。2.
10、4.5设置填充模式和颜色 在本程序中,棋子为半径为15的圆,颜色分别为代码为15和8的深灰色和白色两种棋子,分别由两位旗手来使用。附表:颜色代号颜色号0115颜色黑色蓝色白色符号常量BLACKBLUEWHITE2.4.6方向操作在主程序前,使用宏定义将 UP、DOWN 、LEFT 、RIGHT,做了相应的定义,因此,在对战函数当中可以使用已经进行过定义的以上四个进行操作,每次移动后,在屏幕上显示的都是一个以15为半径的圆形。由于走棋时,每个格子不能重复落子,所以,需要判断棋手要落子处是不是 已经有了棋子2.4.7落棋位置判断走棋后,判断棋盘的变化情况,将棋子途径的地方恢复为空格状态,并且开始统
11、计棋手的尝试次数,当一个棋手在一次走棋的过程中尝试的次数超过空格的个数的时候,取消该棋手的本次走棋,改为下个旗手走棋,也就是跳出本次循环,进行下一次的循环。如果常识的次数没有超过空格的个数,而是落棋的位置无效,则旗手可以继续尝试,知道到达尝试次数。当某次走棋后,接受的按键的值为ESC的时候,则退出游戏,当落子后在判定棋盘的变化时,一方的棋子为0,或者是双方已经下满60手,则执行 playWin 函数,输出游戏的结果 。2.4.8判断棋盘的变化和改变棋子的颜色通过判断数aij的值来判断棋子的颜色,已经定义当aij=1的时候,棋子为白色,当aij=2的时候棋子为黑色,当aij的值不为1和2的时候,
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 白棋 程序设计