欢迎来到天天文库
浏览记录
ID:11631109
大小:724.50 KB
页数:52页
时间:2018-07-13
《五子棋游戏的论文及源代码》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、本科生课程论文论文题目五子棋游戏五子棋游戏【摘要】为了设计人人对弈模式的五子棋游戏系统,采用了C语言函数模块化程序设计方法,利用VisualC++6.0编译器运行游戏,实现一方执白棋,一方执黑棋,通过屏幕上的文字提示,轮流走棋,最先使五子相连一方获胜的人人对弈功能。通过本程序的训练,加深对C语言的了解,掌握五子棋游戏开发的基本原理,从而为以后的程序开发奠定基础。【关键字】五子棋函数设计目的:本程序旨在进一步训练学生游戏开发的技巧,掌握C语言图形模式下的编程。本程序设计很多图形函数,包括坐标定位;颜色设置(背景色和文本颜色设置)、线条颜色、填充颜
2、色;直线风格、文本风格、填充风格;画线、画圆、画矩形函数;PC扬声器的打开、延迟、关闭;图形系统的初始化和关闭;图形屏幕和文字屏幕的清除;从键盘获取键值等。功能:实现界面的初始化功能、下棋功能、胜负判断功能和帮助功能。1)初始化功能。程序初始化屏幕和棋盘,默认Player1先行。2)实现下棋功能。程序能实现下棋操作,在下棋过程中能随时退出。3)胜负判断。程序能对下棋的结果进行判断,分出胜负,并显示获胜信息。4)显示帮助信息。程序能提示玩家轮到哪方下棋了。问题分析:首先要实现五子棋的行棋功能,在程序中可以通过坐标来定位棋子的位置,用不同的字符表示
3、黑白棋子,并通过变量的交替实现黑白棋子的交替显示。另一个难点就是对于胜负的判断,这需要通过循环函数的嵌套使用,难点在于逻辑调理的把握,循环之间的对应关系。还有一个难点就是在游戏中能随时返回主菜单,这需要一个选择结构来实现,将主菜单的程序编入主函数,在得到特定指令时返回主函数,从而返回主菜单。下棋过程中对于不断地输入坐标,可以用一个死循环来是实现,在特定的条件下退出循环,返回主函数。程序设计:一、主要函数介绍本程序主要用到了main ()[1]、startGame()、printState()、judge()、help()、aboutThanks
4、()等函数。主函数中设计成死循环,再循环过程中通过选择调用其它函数。被调用的函数运行完后再次返回到主函数中。1、主函数main()运行主函数,首先调用system("colore0")[2]函数,改变运行界面的前景色和背景色。然后进入一个死循环while(1),再循环中输出主菜单的内容,包括标题、开始游戏、游戏帮助、游戏鸣谢、退出程序、请选择等字样。然后,调用scanf()函数,从键盘上获得一个数值付给变量i,接着进行健壮性处理。最后调用switch语句,通过选择调用其它函数。2、startGame()函数此函数为自定义函数,首先用一个for语
5、句实现19*19的棋盘的初步绘制,将19*19的坐标全绘制成“*”状。接着调用printState()函数,实现当前棋盘的显示。然后进入下棋的循环,提示下子一方并调用fflush(stdin)[2]函数清除缓存。然后,通过switch语句,根据从键盘上得到的值做出相应的判断,实现退格键悔棋、Esc键返回主菜单、A-S输入坐标、其他输入错误。接着判断该坐标是否有子,有子提示重新指定坐标,否则,该位置显示相应的棋子。除第一次下子前外,下一步将调用judge()函数,来判断是否有一方获胜。判断结束后再次调用printState()显示当前棋盘。最后交
6、换期权。此函数的核心代码如下:switch(t=getch()){case8:{//退格键悔棋i=m-'A';j=n-'A';state[i][j]='*';printState();printf("t提示:%s方悔棋!",player?"白":"黑");player=!player;continue;}break;case27:{system("cls");return;}break;//Esc键返回主菜单case65:{n=t;printf("%C",n);getch();}break;//纵坐标输入………………case1
7、15:{n=t;printf("%C",n);n=n-32;getch();}break;default:printf("tt请输入属于8、9、a-s>或正确的口令。");continue;}i=m-'A';j=n-'A';if(state[i][j]!='*')//判断是否有子{printf("t提示:该位置已经有子,请重新指定坐标!");continue;}c=player?4:79;//为棋子赋值state[i][j]=c;if(a!=0)judge();//判断胜负a++;printState();//显示当前棋盘pl10、ayer=!player;//交换棋权1、printState()函数此函数为自定义函数,主要实现当前棋盘的输出,首先定义字符变量,接着清除屏幕,然后
8、
9、a-s>或正确的口令。");continue;}i=m-'A';j=n-'A';if(state[i][j]!='*')//判断是否有子{printf("t提示:该位置已经有子,请重新指定坐标!");continue;}c=player?4:79;//为棋子赋值state[i][j]=c;if(a!=0)judge();//判断胜负a++;printState();//显示当前棋盘pl
10、ayer=!player;//交换棋权1、printState()函数此函数为自定义函数,主要实现当前棋盘的输出,首先定义字符变量,接着清除屏幕,然后
此文档下载收益归作者所有