




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计课程设计任务书课程名称 程序设计 设计题目基于C语言的五子棋游戏设计与实现专业班级 学生姓名 学号 指导教师 起止日期2013年6月8日至2013年6月14日福建林业职业技术学院自动化工程系目录第1 章 课程设计的目的与要求31.1 课程设计目的31.2 课程设计的实验环境31.3 课程设计的预备知识31.4 课程设计要求3第2 章 课程设计内容42.1 程序功能介绍42.2.1 设计思路42.2.2 数据结构设计及用法说明42.2.3 程序结构(流程图)52.2.4 各模块的功能及程序说明62.2.5游戏记录载入模块62.2.6玩家移动棋子模块72.2.7计算机移动棋子模块82.2.8判断胜负模块82.2.9游戏保存模块92.2.5 程序结果92.3 程序源代码及注释10第3 章 课程设计总结14参考资料14第1 章 课程设计的目的与要求1.1 课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学习完程序设计语言(C)课程后进行的一次全面的综合练习。本课程设计的目的和任务:1. 巩固和加深对C 语言课程的基本知识的理解和掌握2. 掌握C 语言编程和程序调试的基本技能3. 利用C 语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C 语言解决实际问题的能力1.2 课程设计的实验环境硬件要求能运行Windows 2000/XP 操作系统的微机系统。C 语言程序设计及相应的开发环境。1.3 课程设计的预备知识熟悉C 语言及C 语言开发工具。1.4 课程设计要求1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告第2 章 课程设计内容2.1 程序功能介绍本程序是在一个九宫格上模拟与计算机棋盘对弈,依次在棋盘上放置表示“O”“X”的棋子,哪一方先让三个棋子形成一条直线(包括横、竖、对角线3 个方向),即为获胜,游戏初始运行界面应为如下:游戏操作规则:相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了。2.2 程序整体设计说明2.2.1 设计思路1) 每个选手选择一种属于自己的棋子,“X”或“O”2) 每人每次出一颗棋子,“X”棋子先走,两种棋子交替着出棋3) 一个正方形里只能放一颗棋子4) 先用自己的三颗棋子连成一条线(包括横线、竖线、对角线)胡一方则获胜。2.2.2 数据结构设计及用法说明int gPlayOrder; /*指示当前行棋方 */struct point gCursor; /*光标在棋盘上的位置 */char gChessBoard1919;/*用于记录棋盘上各点的状态*/break/*是落子键*/else /*交换行棋方*/2.2.3 程序结构(流程图) 将棋盘的每一格定义为空开 始由位置(1,1)起,至位置(3,3)棋盘每格之间显示 “ | ”已显示至第三行?换行,显示“ -|-|- ”换 行 图4.2.1该模块首先设置一个3X3的循环,将棋盘的每一个单元定义为空。在程序运行的第一步,主程序调用该模块功能,对棋盘进行初始化。2.2.4 各模块的功能及程序说明 将棋盘的每一格定义为空开 始由位置(1,1)起,至位置(3,3)棋盘每格之间显示 “ | ”已显示至第三行?换行,显示“ -|-|- ”换 行 图4.2.1该模块首先设置一个3X3的循环,将棋盘的每一个单元定义为空。在程序运行的第一步,主程序调用该模块功能,对棋盘进行初始化。2.2.5游戏记录载入模块 开 始定义二维数组for循环逐行读取显示棋盘判断文件是否存在载入完成 图4.2.22.2.6玩家移动棋子模块开 始选择放置棋子的位置(i,j)行变量i减一,列变量j减一该位置为空吗?错误,重新选择该位置定义为X 图4.2.3该模块首先选择放置棋子的位置(i,j),之后行变量i减一,列变量j减一。如果该位置为空,则将该单元内容定义为“X”;如果该位置不为空,则返回错误信息并重新运行该模块函数,让人重新选择放置棋子的位置。2.2.7计算机移动棋子模块由位置(1,1)起判断开 始该位置为空吗?该局比赛结果为平局行变量i与列变量j分别加一该位置定义为O退 出i与j乘积为9吗? 图4.2.4该模块首先设置33的循环,从(1,1)开始,依次判断每一个单元是否为空。为空时,则将该位置定义为“O”;若不为空,则继续运行。当移动至(3,3),即行变量i与列变量j乘积为9时,若该单元依然不为空,则判定该局比赛结果为平局2.2.8判断胜负模块开 始某列棋子相同吗?某行棋子相同吗?返回左斜列棋子返回右斜列棋子返回该列棋子返回该行棋子右斜列棋子相同吗?左斜列棋子相同吗?返 回 图4.2.5该模块首先设置33的循环,依次判断每行,每列以及左斜列,右斜列的内容是否相同。不相同时,返回至主函数;若相同,则将变量result定义为相同的内容。最后,根据结果显示谁赢。2.2.9游戏保存模块循环读取数据开 始新建并打开“record.txt”关闭文件 图4.2.6该模块保存游戏结束时,计算机的走棋记录和玩家的走棋记录,并按其在棋盘中的顺序保存到“record.dat”文件中。2.2.5 程序结果2.3 程序源代码及注释*加载头文件*/#include stdio.h #include stdlib.h void init_qipan(); void player_move(); void computer_move(); void disp(); char check(); void load();void save();char qipan33; int main(void) char done; done= ; init_qipan(); load();do disp();player_move(); done=check(); if(done!= ) break; computer_move(); done=check(); while(done= ); if(done=X) printf(真是神一般的人物啊,您完胜了!n); else printf(原来神也会输啊! n); save();return 0; void init_qipan(void) /初始化棋盘 int i,j; for(i=0;i3;i+) for(j=0;j3;j+) qipanij= ; void player_move(void) /玩家走棋 int x,y; printf(喂,那位帅哥该你走棋了:); scanf(%d%*c%d,&x,&y); x-;y-; if(qipanxy!= ) printf(恐怕您下棋的位置不对吧,再下一次试试.n); player_move(); else qipanxy=X; void computer_move(void) /电脑走棋 int i,j; for(i=0;i3;i+) for(j=0;j3;j+) if(qipanij= ) break; if(qipanij= ) break; if(i*j=9) printf(巅峰对决,不分胜负!n); exit(0); else qipanij=0; void disp(void) /显示棋盘方格 int t; for(t=0;t3;t+) printf(%c|%c|%cn,qipant0,qipant1,qipant2); if(t!=2) printf(-|-|-n); printf(n); char check(void) /检查判断 int i; for(i=0;i3;i+) if(qipani0=qipani1&qipani0=qipani2) return qipani0; for(i=0;i3;i+) if(qipan0i=qipan1i&qipan0i=qipan2i) return qipan0i; for(i=0;i3;i+) if(qipan00=qipan11&qipan00=qipan22) return qipan00; for(i=0;i3;i+) if(qipan02=qipan11&qipan11=qipan20) return qipan02; return ; void load(void) /载入数据 FILE *fp1;if(fp1=fopen(record.txt,r)=NULL)printf(不存在上一棋局的游戏记录,请开始新的游戏n);return 0; else int m,n; for(m=0;m5;m+) for(n=0;n4;n+)fscanf(fp1,%c,&(qipanmn);fclose(fp1);disp();init_qipan(); void save(void)/保存数据 int i,j;FILE *fp;fp=fopen(record.txt,w+);for(i=0;i3;i+)for(j=0;j3;j+) if(j=2)fprintf(fp,%cn,qipanij);elsefprintf(fp,%c,qipanij);fclose(fp);disp();第3 章 课程设计总结课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。经过这次课程设计,我发现原来要想学好C 语言,必须要掌握好书上的基本知识,懂得各个语句的用法,我明白了学习C 语言的重要性。而且通过这次课设我学到了许多在课本上学不到的东西,我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年传染病科感染监测计划
- 2025年新环保相关协议书
- 智能健康监测戒指设计-洞察及研究
- 2025年新香樟苗圃转让协议书
- 名校九年级英语复习计划
- (2025年标准)专利归属协议书
- (2025年标准)患者合作协议书
- 农村集体经济项目合作协议与运营方案
- 2025年新取消免签协议书
- (2025年标准)医生合同协议书
- 货款转让协议书
- 2025年内蒙古鄂尔多斯一中高考生物倒计时模拟卷含解析
- 2025CACA子宫颈癌诊疗指南解读
- 绿色建筑概论 课件全套 第1-11章 绿色建筑概述-绿色建筑运营与维护
- 2025医务人员手卫生规范
- 医务人员行为规范
- 光伏电站安全培训
- GB/T 35267.4-2025清洗消毒器第4部分:内镜清洗消毒器
- 职工安置方案模板
- DB45T 1056-2014 土地整治工程 第2部分:质量检验与评定规程
- ISO9001工厂质量体系文件
评论
0/150
提交评论