测绘程序设计C语言程序设计.doc

上传人:精*** 文档编号:844156 上传时间:2023-09-09 格式:DOC 页数:27 大小:181.54KB
下载 相关 举报
测绘程序设计C语言程序设计.doc_第1页
第1页 / 共27页
测绘程序设计C语言程序设计.doc_第2页
第2页 / 共27页
测绘程序设计C语言程序设计.doc_第3页
第3页 / 共27页
测绘程序设计C语言程序设计.doc_第4页
第4页 / 共27页
测绘程序设计C语言程序设计.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、五子棋游戏程序开发目 录第一章 程序设计目的和要求11.1 课程设计的目的11.2 课程设计实现的要求1第二章 五子棋程序概述2第三章 系统设计33.1 设计目标33.2 开发及运行环境33.3 需求分析3第四章 系统模块分析 4 4.2 总体模块分析44.3 功能模块分析54.4 控制模块分析5第五章 五子棋程序设计75.1 游戏规则75.2 预处理75.3 声明变量75.4 主函数75.5 设置棋盘模式75.6 开始游戏85.7 进入游戏界面95.8 游戏过程95.9 判断胜负结果11第六章 程序设计心得与体会12附录一 五子棋程序源代码13附录二 程序运行结果20附录三 参考文献23第一

2、章 程序设计的目的和要求1.1 课程设计的目的进一步巩固C程序设计所学的知识,特别加强数组、指针、结构体、文件数据类型的应用,熟悉面向过程的结构化和面向对象可视化程序设计方法,培养结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,锻炼程序设计能力,以及用C/C+语言解决实际问题的能力,为以后后续课程的学习打好坚实的基础。此课程设计着眼于知识点运用,把平常学的知识运用到课程实践中来,本身就是考察我们知识运用能力。要求熟悉运用一些编程软件(如:Microsoft Visual C+ 6.0及Turbo C+ 2.0),对我们所学的理论知识进一步的深化。1.2 程序设计实现的要求测绘

3、程序设计是综合应用所学过的C语言的基础理论知识,自行设计并实现一个较为完善的应用系统。从而为学生提供一个将理论运用于实践的机会,使大家能够学以致用,从而提高学生实践编程能力,在设计过程中培养学生的团队合作精神及创新能力。同时,从软件工程角度,也能初步树立正确的程序设计思想,从系统分析、系统设计、系统实现、系统评价出发,培养分析问题、解决问题的能力,还可以使大家提高收集、查阅资料和撰写项目文档的能力。第二章 五子棋程序概述 相信很多人都会玩五子棋游戏,当游戏的一方构成5个连续的棋子,无论是水平方向,竖直方向,还是斜对角线方向,都表示获胜了。五子棋是起源于中国古代的传统黑白棋种之一,不仅能增强思维

4、能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;既具有简单易学的特性,为人们所喜爱,又有深奥的技巧和高水平的国际性比赛。五子棋文化源远流长,具有东方的神秘河西方的直观;既有“场”的概念,亦有“点”的连接。五子棋起源于直观古代,发展于日本,风靡于欧洲,可以说它是中西方文化的交流点,是古今哲学的结晶。为了丰富用户的生活娱乐,特开发此五子棋程序。第三章 系统设计3.1 设计目标本系统属于典型的棋牌类游戏,是针对网络开发的对弈游戏。通过本系统可以达到以下目标:1.灵过的操作,可以自动判断胜负。2.系统采用良好的人机对话模式,

5、界面设计美观、友好。3.系统运行稳定、安全可靠。3.2 开发及运行环境系统开发平台:Visual C+ 6.0。运行平台:Windows XP/Windows 2003。分辨率:最佳效果1024768像素。3.3 需求分析通过调查,要求系统具有以下功能:1.为了体现良好的娱乐性,要求系统具有良好的人机交换界面。2.完全人性化设计,无需专业人士指导,即可操作本系统。3. 自动完成胜负判断,避免人为错误。第四章 系统模块分析4.1 总体模块分析NYNY开始接收键盘按键绘制棋盘调用control函数进行游戏判断某方是否有五个棋子连线游戏结束4.1-1 总体模块分析图判断输入的是否为Y键4.2 功能模

6、块分析1.主函数:游戏程序的总结构int main( ) void startGame( ); startGame( ); return 0;2.游戏初始化void startGame( );3.设置棋盘模式 void init( );4.进入游戏界面 void printChessBoard( );5.控制棋子移动void control( );6.判断是否某方有五个棋子在一条直线上int checkGameOver( );7.控制游戏界面的背景色和前景色system(color 2e);8.清除屏幕内容system(cls);4.3 控制模块分析1.向上移动棋子 void up( )if

7、(focus_x = 20)focus_x = 20;elsefocus_x+;3.向左移动棋子 void left( )if (focus_y = 20)focus_y = 20;elsefocus_y+;5.落棋子 void go( )int chessman = arrayfocus_xfocus_y;if (chessman = 0) if (player1 = 1) arrayfocus_xfocus_y = 1; player1 = 0; player2 = 1; else arrayfocus_xfocus_y = 2; player1 = 1; player2 = 0; 第五章

8、 五子棋程序设计5.1 游戏规则本游戏棋子分为1和2两种,哪种棋子先满足下列任一个条件即为获胜:1.水平方向五个棋子无间断相连;2.竖直方向五个棋子无间断相连;3.竖直方向向左倾斜45方向五个棋子无间断相连;4.竖直方向向右倾斜45方向五个棋子无间断相连;5.2 预处理在本系统中需要应用一些头文件,这些头文件可以帮助程序更好的运行。头文件的引用时通过#include命令实现的,下面即为本程序中所引用的头文件:#include /*输入输出函数*/#include /*常用子程序*/#include /*数组函数*/5.3 声明变量 int array2121; /*棋子的横纵坐标*/int f

9、ocus_x; /*光标停留的横坐标*/int focus_y; /*光标停留的纵坐标*/int player1; /*玩家1*/int player2; /*玩家2*/int winner; /*获胜者*/5.4 主函数 程序运行时,首先从main函数开始,终止于main函数。程序代码如下: int main( ) void startGame( ); startGame( ); return 0; 5.5 设置棋盘模式 在开始游戏时首先设置棋盘模式,画出棋盘。代码如下: void init( ) /*设置棋盘模式*/int i, j; for (i=0; i21; i+) for (j=0

10、; j21; j+) arrayij = 0; /*棋子落点处初始值为0*/ player1 = 1; player2 = 0; focus_x = 10; /*光标的横坐标初始值为10*/ focus_y = 10; /*光标的纵坐标初始值为10*/ 5.6 开始游戏在执行main函数时,调用了StartGame( )函数,用于开始游戏的执行。开始游戏的代码如下:void startGame( ) /*开始游戏*/void init( );void printChessBoard( );void control( );int checkGameOver( );char a;system(co

11、lor 2e);printf(nn*欢迎进入五子棋游戏! *nn”); printf(游戏规则:nnw s a d为上下左右n每个操作需按Enter确认(比如上要按w再按Enter)n走棋为k.nnn);printf(在游戏过程中不得终止或退出退出游戏nnn);printf(*”);printf(“nn你是否接受上述游戏规则(Y/N):”);scanf(“%c”,&a);if(a=Y|a=y)init( );elsereturn; while (winner = 0) printChessBoard( ); control( ); checkGameOver( ); printChessBoa

12、rd( ); /*画棋盘*/ printf(nPlayer%d is the winner!nn, winner); system(pause); /*系统暂停,退出程序*/ 5.7 进入游戏界面在startgame( )函数中,如果没有获胜者,则进入游戏界面。代码如下:void printChessBoard( ) /*进入游戏界面*/int i, j;system(cls); /*其作用是清除屏幕*/printf(游戏规则:nw s a d为上下左右,每个操作需按Enter确认(比如上要按w再按Enter),走棋为k.n); for (i=0; i21; i+) /*显示棋盘*/for (

13、j=0; j21; j+) if (i=focus_x & j=focus_y) printf(b%d , arrayij); else printf(%-3d, arrayij); printf(n); if (winner = 0) if (player1 = 1) printf(Player1: ); else printf(Player2: );5.8 游戏过程在自定义函数control( )中,主要实现了五子棋游戏的具体过程。在游戏过程中,程序会判断键盘输入的键值,如果使用的是wsad,即可在棋盘中移动棋子。代码如下:void control( ) /*控制移动操作*/void up

14、( );void down( );void left( );void right( );void go( );char input;input = getchar( );if (input = w) up( );if (input = s)down( );if (input = a)left( );if (input = d)right( );if (input = k)go( );void up( ) /*向上移动棋子*/if (focus_x = 20) focus_x = 20;else focus_x+;void left( ) /*向左移动棋子*/if (focus_y = 20)

15、focus_y = 20; else focus_y+;void go( ) /*落棋子*/int chessman = arrayfocus_xfocus_y; if (chessman = 0) if (player1 = 1) arrayfocus_xfocus_y = 1; player1 = 0; player2 = 1; else arrayfocus_xfocus_y = 2; player1 = 1; player2 = 0; 5.9 判断胜负结果int checkGameOver( ) /*判断游戏是否结束*/ int i, j; int judge(int x, int y

16、);for (i=0; i21; i+) for (j=0; j21; j+) if (arrayij != 0) if(judge(i, j) = 1) return 1;return 0;第六章 程序设计心得与体会自2012年6月11日开始,我们进行了为期两周的课程设计,在这期间我学到了很多东西,体会颇多。首先,我们加强了对C语言及C+的认识,复习了以前的知识,自己的逻辑思考能力也得到了明显的提高,从而对Microsoft Visual C+又有了更深入的认识!其次,在这次课程设计中,我们还了解了程序开发的一些比较重要的步骤,比如:需求分析、总体设计、程序模块设计(含总体模块分析、功能模块

17、分析、控制模块分析)等。再次,通过这次课程设计,激发了我们对编程的兴趣和热情,让我们从只懂理论知识变成能做一些小型程序,让我们对编程更加热爱。然后,通过此次课程设计,提高我们实践编程能力,在设计过程中培养我们的团队合作精神及创新能力。同时,我们也能初步树立正确的程序设计思想,从系统分析、系统设计、系统实现、系统评价出发,培养分析问题、解决问题的能力,还使大家提高收集、查阅资料和撰写项目文档的能力。当然,老师的细心指导与帮助时不可忽视的,在此感谢本次课程设计中指导老师对我们的关心和帮助,感谢老师的鼓励与教导,在我们迷茫和困惑的时候给了我们些许提示,激发了我们的创作灵感。附录一 五子棋程序源代码#

18、include #include #include int array2121;int focus_x;int focus_y;int player1;int player2;int winner;int main( ) /*主函数:游戏程序的总结构*/void startGame( ); startGame( );return 0;void init( ) /*设置棋盘模式*/int i, j;for (i=0; i21; i+) for (j=0; j21; j+) arrayij = 0;player1 = 1;player2 = 0;focus_x = 10;focus_y = 10;

19、void startGame( ) /*开始游戏*/void init( );void printChessBoard( );void control( );int checkGameOver( );char a;system(color 2e); /*设置游戏界面的背景色与前景色*/printf(“nn*欢迎进入五子棋游戏! *nn”); printf(“游戏规则:nnw s a d为上下左右n每个操作需按Enter确认(比如上要按w再按Enter)n走棋为k.nnn”);printf(“在游戏过程中不得终止或退出游戏nnn”);printf(“*”);printf(“nn你是否接受上述游戏

20、规则(Y/N):”);scanf(“%c”,&a);if(a=Y|a=y)init( );elsereturn;while (winner = 0) printChessBoard( ); control( ); checkGameOver( ); printChessBoard( );printf(nPlayer%d is the winner!nn, winner);system(pause);void printChessBoard( ) /*进入游戏界面*/int i, j;system(cls); /*其作用是清除屏幕*/printf(游戏规则:nw s a d为上下左右,每个操作需

21、按Enter确认(比如上要按w再按Enter),走棋为k.n);for (i=0; i21; i+) /*画出棋盘*/for (j=0; j21; j+) if (i=focus_x & j=focus_y) printf(b%d , arrayij); else printf(%-3d, arrayij); printf(n);if (winner = 0)if (player1 = 1)printf(Player1: );elseprintf(Player2: );void control( ) /*控制移动操作*/void up( );void down( );void left( );

22、void right( );void go( );char input;input = getchar( );if (input = w)up( );if (input = s)down( );if (input = a)left( );if (input = d)right( );if (input = k)go( );void up( ) /*向上移动棋子*/if (focus_x = 20)focus_x = 20;elsefocus_x+;void left( ) /*向左移动棋子*/if (focus_y = 20)focus_y = 20;elsefocus_y+;void go(

23、 ) /*落棋子*/int chessman = arrayfocus_xfocus_y;if (chessman = 0)if (player1 = 1) arrayfocus_xfocus_y = 1; player1 = 0; player2 = 1; else arrayfocus_xfocus_y = 2; player1 = 1; player2 = 0; int checkGameOver( ) /*判断游戏是否结束*/int i, j;int judge(int x, int y);for (i=0; i21; i+) for (j=0; j21; j+) if (arrayi

24、j != 0) if(judge(i, j) = 1) return 1;return 0;int judge(int x, int y) /*判断函数*/int horizontal(int x, int y);int vertical(int x, int y);int minus_diagonal(int x, int y);int plus_diagonal(int x, int y);if (horizontal(x, y) = 1) return 1;if (vertical(x, y) = 1) return 1;if (minus_diagonal(x, y) = 1) ret

25、urn 1;if (plus_diagonal(x, y) = 1) return 1;return 0;int horizontal(int x, int y) /*判断水平方向是否有五个棋子*/int i, chess;chess = 1;if (y = 16)for (i=1; i= 5)winner = arrayxy;return 1;return 0;int vertical(int x, int y) /*判断竖直方向是否有五个棋子*/int i, chess;chess = 1;if (x = 16)for (i=1; i= 5)winner = arrayxy;return

26、1;return 0;int minus_diagonal(int x, int y) /*判断向左倾斜45度方向是否有五个棋子*/int i, chess;chess = 1;if (x=16 & y=16)for (i=1; i= 5)winner = arrayxy;return 1;return 0;int plus_diagonal(int x, int y) /*判断向右倾斜45度方向是否有五个棋子*/ int i, chess;chess = 1;if (x=4 & y=16)for (i=1; i= 5)winner = arrayxy;return 1;return 0;附录

27、二 程序运行结果1.进入游戏初始界面:2.进入游戏(棋盘界面)(开始时光标指在array1010位置):此时要求玩家1开始走棋. 3.玩家1向上走一步棋后的界面为:此时要求玩家2开始走棋.4.玩家2向左走两步后的界面为:5.玩家2获胜的界面为:6.退出游戏界面:附录三 参考文献1谭浩强编著,C+语言程序设计,清华大学出版社2004.2谭浩强著,C语言程序设计(第二版),清华大学出版社,1999.3谭浩强著,C语言程序设计(第三版),清华大学出版社,2005.4张雨,阮伟良等,Visual C+工程应用与项目实践,机械工业出版社,2005.5刘彬彬,李伟明等编著,C语言开发实战宝典,清华大学出版社,2011.6C编写组编,常用C语言用法速查手册,龙门书局,1995.7尹德淳编著,C函数速查手册,人民邮电出版社,2009.

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 学术论文 > 毕业设计

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922