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