猜数字游戏课程设计报告_第1页
猜数字游戏课程设计报告_第2页
猜数字游戏课程设计报告_第3页
猜数字游戏课程设计报告_第4页
猜数字游戏课程设计报告_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

XXXX学校《C程序设计》课程设计报告设计题目:猜数字游戏附录完整源代码专业:班级:学生:学号:指导教师:起止时间:xxx.x.x-xxx.x.xxxxx-xxxx年xx学期目录1、程序设计描述1.1程序设计目的:1.2程序设计要求:1.3、猜数字游戏的简介:2、程序设计内容:2.1、游戏主要框架图:2.2、开始游戏框架:2.3、最佳排行框架:2.4、游戏操作说明模块:2.5、退出游戏系统:2.6、游戏系统总流程图:3、猜数字游戏源代码:3.1、voidmain()函数函数功能:3.2、voidgame();//双人游戏voidpgame();//单人游戏3.4、排行榜模块函数功能:3.5、继续游戏模块函数功能:3.6、操作说明模块函数功能:4、调试与测试:4.1、调试方法4.2、测试结果的分析与讨论4.3、测试过程中遇到的主要问题及采取的解决措施5、程序具体说明书:6、程序设计心得:7、参考文献1、程序设计描述1.1程序设计目的:综合使用所学过的C语言程序设计知识,掌握结构化程序设计的基本思路和方法,利用所学的基本知识和技能,发挥自学能力和查找资料的能力,解决稍微复杂的结构化程序设计问题,加深对所学知识的理解与掌握,增强学生利用自己所学知识解决实际问题的能力,为以后的程序开发打下基础。1.2程序设计要求:1、巩固和加强《C语言程序设计》课程的理论知识。2、掌握C语言的基本概念、语法、语义和数据类型的使用特点。3、掌握C语言程序设计的方法及编程技巧,能正确使用C语言编写程序。4、进一步理解和运用结构化程设计的思想和方法;学会利用流程图。5、掌握调试程序的基本方法及上机操作方法。6、掌握书写程设计开发文档的能力,学会撰写课程设计总结报告。课程设计的思想和方法还可以作为做毕业论文时的参考资料。7、通过查阅手册和文献资料,培养独立分析问题和解决问题的能力。为做毕业设计打好基础。8、培养自己的创新能力和创新思维。可以根据指导书和相关文献上的参考算法,自己设计出相应的应用程序。9、培养自己良好的程序设计风格。在实际编程中,为了提高编程质量,对空行、空格和注释均有要求。在课程设计书写代码时,应该严格按要求处理,以便建立良好的程序设计风格。1.3、猜数字游戏的简介:猜数字游戏(又称BullsandCows)是一种大概于20世纪中期兴起于英国的益智类小游戏。一般由两个人玩,也可以由一个人和电脑玩,在纸上、在网上都可以玩。这种游戏规则简单,但可以考验人的严谨和耐心。2、程序设计内容:2.1、游戏主要框架图:该模块为玩家提供猜数字游戏的主体功能,即开始游戏、继续游戏、最佳排行、操作说明、退出游戏。给用户一个清晰明了的操作界面!流程图如下:系统模块结构图2.2、开始游戏框架:开始游戏开始游戏返回主返回主菜单单人游戏双人游戏①单人游戏由系统产生4个随机数,并按任意顺序排列,作为游戏的原始数字供玩家进行猜数字游戏。=2\*GB3②双人游戏有主用户知己定义输入输入,再用另一用户猜测!=3\*GB3③单人、双人游:提示用户数值和位置全对的数字个数,和只有数值但位置不对的数字个数。=4\*GB3④原始数字显示:当用户在8次之内仍未能猜出原始数字和顺序时,系统提示玩家失败,并给玩家显示出原始数字和顺序。2.3、最佳排行框架:进入该界面后,进行提示由于技术问题此项有待解决!个人认为最佳排行的应有的功能想法(有待改进)该模块为玩家提供排行榜的浏览和清除功能,包括按玩家成绩顺序浏览、按玩家姓名浏览和清除排行榜功能。2.4、游戏操作说明模块:进入该界面后,进行提示由于技术问题此项有待解决!当玩家选项为帮助功能对应的选项数字时,进入帮助模块,给出用户猜数字的游戏规则和游戏中相关提示的含义和简单提示。2.5、退出游戏系统:该功能主要是在主界面操作,为方便用户退出游戏功能2.6、游戏系统总流程图:开始开始功能选择功能选择最佳排行继续游戏开始最佳排行继续游戏开始新游戏操作说明退出游戏输入0输入0单人双人输入0输输入0输入0单人双人输入0输入0主完家输入数字系统内部随机出数主完家输入数字系统内部随机出数0输入数字输入数字0 是否有效四位数是否有效四位数输出第一次结果是输出第一次结果否不输出结果是否大达到3此不输出结果是否大达到3此?输出结果并返回是输出结果并返回否提示再输提示再输结束游戏结束游戏3、猜数字游戏源代码:游戏主程序调用的函数如下:#include<stdio.h>#include<windows.h>#include<stdlib.h>#include"process.h"#defineN4//随机抽N个数#defineNUM8//NUM次猜数的机会voidmainmenu();//游戏主菜单voidbestmenu();//最佳排行子菜单Bestrankingvoidcontinumenu();//继续游戏子菜单Continuetogamevoidoperationmenu();//操作说明子菜单operationexplanationvoidplaygame();//新游戏子菜单voidgame();//双人游戏voidpgame();//单人游戏voidgotoxy(intx,inty){ COORDc; c.X=x-1; c.Y=y-1; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);}3.1、voidmain()函数函数功能:功能:软件执行的入口,在函数所在的程序头部包含可部分系统必须的头文件和完成其他功能的源文件。在该函数中还提供了系统功能选择的平台,提示用户系统可用的功能有哪些和这些功能的选项代码。并给用户提供输入功能选项代码的接口,当用户输入选项代码后,即显示给用户相应的功能处理界面或结果。欢迎界面 while(1) {system("color6A");//颜色代码 mainmenu();//调用游戏主菜单 printf("请输入序号:"); choose=getchar();switch(choose) {case'1': do {intx; playgame();//调用开始新游戏子菜单 printf("请输入序号:"); editch=getchar(); switch(editch) { case'1':game(); loop1:{printf("|****按0键返回两人游戏菜单*****|\n");} scanf("%d",&x); switch(x) { case2:printf("|****按0键返回两人游戏菜单*****|\n");pgame(); gotoloop1; }break; case'2':pgame();loop2:{printf("|******按0返回两人游戏菜单*********|\n");} scanf("%d",&x); switch(x) { case2:printf("|******按0返回两人游戏菜单********|\n");pgame(); gotoloop2; }break; case'0': system("cls");//C++清屏函数 printf("\n\n\n\n\n\n操作结束,返回主菜单!"); getch();system("cls");break;} }while(editch!='0');break; case'2':do { continumenu();//调用继续游戏子菜单 printf("按“0”返回上一级菜单:"); editch=getchar();switch(editch) {case'0': system("cls");//C++清屏函数 printf("\n\n\n\n\n\n操作结束,返回主菜单!"); getch();system("cls"); break; } }while(editch!='0');break; case'3': do{bestmenu();//调用最佳排行子菜单 printf("按“0”返回上一级菜单:"); editch=getchar();switch(editch) { case'0': system("cls");printf("\n\n\n\n\n\n操作结束,返回主菜单!"); getch();system("cls");break; } }while(editch!='0');break; case'4': do { operationmenu();//调用操作说明菜单 printf("按“0”返回上一级菜单:"); editch=getchar(); switch(editch) { case'0': system("cls");printf("\n\n\n\n\n\n操作结束,返回主菜单!"); getch();system("cls");break; } }while(editch!='0');break; case'0'://退出猜数字游戏系统 system("cls"); printf("\n\n\n\n\n\n游戏结束,退出系统!"); getch(); system("cls"); exit(0);}}}3.2、voidgame();//双人游戏voidpgame();//单人游戏功能:开始猜数字游戏和进行游戏过程,调用系统内部以随机给出的数字,提示用户输入猜数字,每次再输入完整后自动给出答案,在8次之内未猜出者提示失败,如果成功,进行提示。3.3、#defineN4//随机抽N个数#defineNUM8//NUM次猜数的机会getnumber()函数功能:由系统产生4个按任意顺序排列的随机整数。3.4、排行榜模块函数功能:voidbestmenu();//最佳排行子菜单功能:主要是起调用作用,显示排行界面!(提示数据技术原因未制作)voidbestmenu()//猜数字游戏最佳排行子菜单函数{system("cls");printf("\n\n\n"); printf("|*******最佳排行****|\n");}3.5、继续游戏模块函数功能:voidcontinumenu();//继续游戏子菜单Continuetogame功能:主要是起调用作用,显示继续游戏子菜单界面!(提示数据技术原因未制作)voidcontinumenu()//猜数字游戏继续游戏子菜单函数{ getchar(); system("cls"); printf("\n\n\n"); printf("|*******继续游戏****|\n");}3.6、操作说明模块函数功能:voidoperationmenu();//操作说明子菜单operationexplanation功能:主要是起调用作用,显示操作说明子菜单界面!输出显示帮助系统。具体游戏规则(未直接在游戏显示)。双人游戏,由一方出数字,一方猜。出数字的人要想好一个没有重复数字的4位数,不能让猜的人知道。猜的人就可以开始猜。每猜一个数字,出数者就要根据这个数字给出几A几B,其中A前面的数字表示位置正确的数的个数,而B前的数字表示数字正确而位置不对的数的个数如正确答案为5234,而猜的人猜5346,则是1A2B,其中有一个5的位置对了,记为1A,而3和4这两个数字对了,而位置没对,因此记为2B,合起来就是1A2B,在本软件中,在用户输入数字后自动给出答案!猜数字次数限制:本猜数字游戏软件设有猜测次数的上限。根据计算机测算,采用严谨的猜测策略,任何数字最低8次就可猜出。最快取胜的简单策略:一是保证在猜测次数限制下赢得游戏,二是使用尽量少的猜测次数。以目标追求的是最坏情况下的猜测次数最少。如启发式策略:这类策略是猜数字游戏最常用的解法。其算法步骤如下:=1\*ZODIAC1甲、首先猜1234,得到第一个反馈(xAyB)。=2\*ZODIAC1乙、从所有数字中,筛选出满足已知反馈的所有可能数字,称之为“可能集”。=3\*ZODIAC1丙、对于所有数字(而不仅限于筛选出来的可能集),逐一评估每个数字的“好坏”,并给其打分。选取得分最高的那个数字猜。如果有多个数字的评分一样高,则优先选取可能集中的数字。=4\*ZODIAC1丁、重复乙、丙、丁步骤,直到猜出4A0B为止。voidoperationmenu()//猜数字游戏操作说明子菜单函数{system("cls"); printf("\n\n\n"); printf("|*******操作说明******|\n");}4、调试与测试:4.1、调试方法:先运行游戏软件,按照提示进行操作,对输出地数据进行判断,并参考书籍进行查阅!4.2、测试结果的分析与讨论:通过查找资料和同学讨论,测试正常。下面对软件运行结果进行展示4.3、测试过程中遇到的主要问题及采取的解决措施:同学讨论、上网查阅资料对错误进行改进!5、程序具体说明书:程序的功能说明:猜数字游戏是一个运行在Windows平台下的小型游戏软件,依据猜数字游戏的基本规则,给用户进行娱乐。游戏用户可以选择开始游、排行榜查看、帮助等主要功能。如果用户猜数字的次数超过8次,则提示用户游戏失败,如果在8次之内猜出4个数字和正确的顺序,则提示用户猜数字成功,在帮助模块,用户可以查看游戏规则,当熟悉规则后可以退出帮助模块。本游戏软件实现以下一些基本功能:新游戏:玩家可以在游戏区逐次猜数字,系统给出玩家每次猜数字后的提示,包括数值、位置均正确的数字个数和数值正确但位置不正确的数字个数;查看排行榜:(待改进);清除排行榜:(待改进);帮助:玩家通过帮助功能了解游戏规则和排行榜设置规则。6、程序设计心得:通过猜数字游戏课程设计了解其典型功能:即系统产生4个不重复的随机数字、提供给玩家8次猜测机会、提供给玩家每次猜数字后的正确数字和位置,让玩家根据这些信息继续下一次的猜测。简单的设计蕴涵了多种功能,简单而又全面。实验过程中,通过查询各资料基本掌握数字游戏功能的实现步骤,并且熟练了解流程图设计与编画过程。能够次实验的设计成功完成游戏,准确猜出所须的4位数。感觉对所学的知识有更进一步的了解。附:完整代码,VS建工程,COPY运行就OK#include<stdio.h>#include<windows.h>#include<stdlib.h>#include"process.h"#defineN4//随机抽N个数#defineNUM8//NUM次猜数的机会voidmainmenu();//游戏主菜单voidbestmenu();//最佳排行子菜单Bestrankingvoidcontinumenu();//继续游戏子菜单Continuetogamevoidoperationmenu();//操作说明子菜单operationexplanationvoidplaygame();//新游戏子菜单voidgame();//双人游戏voidpgame();//单人游戏voidgotoxy(intx,inty){ COORDc; c.X=x-1; c.Y=y-1; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);}voidmain(){charchoose='\0'; chareditch='\0'; charcontinu='\0'; charoperation='\0'; charsortch='\0'; charplay='\0'; system("color5A");//颜色代码 system("cls");//C++清屏函数 gotoxy(20,3); printf("_____________________________________"); gotoxy(20,4); printf("|欢|01010101010101010101010|迎|"); gotoxy(20,5); printf("_____|_________________________|____|"); gotoxy(20,6); printf("|1|**|1|"); gotoxy(20,7); printf("|0|******|0|"); gotoxy(20,8); printf("|1|******|1|"); gotoxy(20,9); printf("|0||0|"); gotoxy(20,10); printf("|1|**|1|"); gotoxy(20,11); printf("|0|****|0|"); gotoxy(20,12); printf("|1|****|1|"); gotoxy(20,13); printf("|0|猜数字游戏|0|"); gotoxy(20,14); printf("|1|__________________________|0|"); gotoxy(20,15); printf("|使|010101001010101010101|用|"); gotoxy(20,16); printf("|____|__________________________|_____|"); gotoxy(20,18); printf("尊敬的用户你好!\n"); gotoxy(20,19); printf("你首先感谢你使用本软件!使用本软件请\n"); gotoxy(20,20); printf("你注意以下事项!避免对你造成不必要的麻烦\n"); gotoxy(20,21); printf("!敬请谅解!\n"); gotoxy(20,22); printf("一、请使用正版软件,如使用盗版造成的后\n"); gotoxy(20,23); printf("果请自负!\n"); gotoxy(20,24); printf("二、本软件是试用版本.如有疑问,请你联系\n"); gotoxy(20,25); printf("作者,为你提供技术服务!\n"); gotoxy(20,26); printf("三、本软件严格遵守国家关于软件相关的隐\n"); gotoxy(20,27); printf("私法律!\n"); gotoxy(20,28); printf("四、本软件完美兼容WIN7、XP!\n"); gotoxy(20,29); printf("更多精彩内容,请关注官网!\n"); gotoxy(20,30); printf("如果你同意以上内容,请进行下一步,"); gotoxy(20,31); printf("否则请你退出游戏!"); gotoxy(20,33); printf("****按任意键进入猜数字游戏主菜单****"); getch(); while(1) { system("color6A");//颜色代码 mainmenu();//调用游戏主菜单 printf("请输入序号:"); choose=getchar(); switch(choose) { case'1': do {intx; playgame();//调用开始新游戏子菜单 printf("请输入序号:"); editch=getchar(); switch(editch) { case'1':game(); loop1:{printf("|****按0键返回两人游戏菜单*****|\n");} scanf("%d",&x); switch(x) { case2:printf("|****按0键返回两人游戏菜单*****|\n");pgame(); gotoloop1; }break; case'2':pgame();loop2:{printf("|******按0返回两人游戏菜单*********|\n");} scanf("%d",&x); switch(x) { case2:printf("|******按0返回两人游戏菜单********|\n");pgame(); gotoloop2; }break; case'0': system("cls");//C++清屏函数 printf("\n\n\n\n\n\n操作结束,返回主菜单!"); getch(); system("cls"); break; } }while(editch!='0'); break; case'2':do { continumenu();//调用继续游戏子菜单 printf("按“0”返回上一级菜单:"); editch=getchar(); switch(editch) { case'0': system("cls");//C++清屏函数 printf("\n\n\n\n\n\n操作结束,返回主菜单!"); getch(); system("cls"); break; } }while(editch!='0'); break; case'3': do { bestmenu();//调用最佳排行子菜单 printf("按“0”返回上一级菜单:"); editch=getchar(); switch(editch) { case'0': system("cls"); printf("\n\n\n\n\n\n操作结束,返回主菜单!"); getch(); system("cls"); break; } }while(editch!='0'); break; case'4': do { operationmenu();//调用操作说明菜单 printf("按“0”返回上一级菜单:"); editch=getchar(); switch(editch) { case'0': system("cls"); printf("\n\n\n\n\n\n操作结束,返回主菜单!"); getch(); system("cls"); break; } }while(editch!='0'); break; case'0'://退出猜数字游戏系统 system("cls"); printf("\n\n\n\n\n\n游戏结束,退出系统!"); getch(); system("cls"); exit(0); } }}voidmainmenu()//猜数字游戏主菜单函数{ system("cls");//C++清屏函数 printf("\n\n\n"); printf("|*****猜数字游戏*****|\n"); printf("||\n"); printf("|请选择菜单序号(0~4)|\n"); printf("||\n"); printf("|1开始游戏|\n"); printf("|2继续游戏|\n"); printf("|3最佳排行|\n"); printf("|4游戏规则|\n"); printf("|0退出系统|\n"); printf("||\n");}voidplaygame()//猜数字游戏开始游戏子菜单函数{system("cls");//C++清屏函数 printf("\n\n\n"); printf("|*****猜数字游戏*****|\n"); printf("||\n"); printf("|请选择菜单序号(0~2)|\n"); printf("||\n"); printf("|1双人游戏|\n");printf("|2单人游戏|\n"); printf("|0退出系统|\n"); printf("||\n");}voidcontinumenu()//猜数字游戏继续游戏子菜单函数{ getchar(); system("cls"); printf("\n\n\n"); printf("|*******继续游戏****|\n"); printf("||\n"); printf("|尊敬的用户你好!首|\n"); printf("|先感谢你使用本游戏,由|\n"); printf("|于此功能处于研发中,如|\n");printf("|对你造成不便,敬请谅解|\n");printf("|感谢你的关注!谢谢!|\n");printf("|祝你游戏愉快!|\n"); printf("||\n");}voidbestmenu()//猜数字游戏最佳排行子菜单函数{system("cls"); printf("\n\n\n"); printf("|*******最佳排行****|\n"); printf("||\n"); printf("|尊敬的用户你好!首|\n"); printf("|先感谢你使用本游戏,由|\n"); printf("|于此功能处于研发中,如|\n");printf("|对你造成不便,敬请谅解|\n");printf("|感谢你的关注!|\n");printf("|祝你游戏愉快!|\n"); printf("||\n");}voidoperationmenu()//猜数字游戏操作说明子菜单函数{system("cls"); printf("\n\n\n"); printf("|*******操作说明******|\n"); printf("||\n"); printf("|尊敬的用户你好!|\n"); printf("|首先感谢你使用本游戏,在|\n"); printf("|户登陆游戏后,请选择“数字”|\n");printf("|并确定,进入新游戏!再更具统|\n");printf("|给出的提示,用户进行数据输入|\n");printf("|,进行猜测!感受猜字游戏的魅|\n"); printf("|力!|\n");printf("|感谢你的关注!|\n");printf("|祝你游戏愉快!|\n");printf("||\n");}voidgame()//双人游戏{ inti,j,m; intn; inta[4];inttar[4];intA;intB; printf("|******请输入4位阿拉伯数字******|\n"); for(i=0;i<4;i++) {tar[i]=getch();//输入任意数字 tar[i]=tar[i]-0x30;//自己输入数字(主玩家输入数字,另一玩家再猜) printf("*");}//保密数字用 printf("|*******主玩家输入完毕**********|"); for(m=0;m<NUM;m++) { if(m==(NUM-1)) { printf("|**你还有最后一次机会哟!加油!**|\n"); } printf("\n|****请输入第%d次猜测的数字:",m+1); for(i=0;i<4;i++){a[i]=getch();a[i]=a[i]-0x30;printf("%d",a[i]);} A=0; B=0; for(i=0;i<N;i++) { if(a[i]==tar[i]) A++; } for(i=0;i<N;i++) { for(j=0;j<N;j++) { if(a[i]==tar[j]&&i!=j) B++; } } printf("\

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论