1、int Judge();/判断是否猜中,猜中返回0,猜不中返回1或-(death)int ShowDisplay();/显示单词及上吊人形,程序结束返回1int OpenWordFile();/打开单词库,随机取出一个单词赋给Word,成功返回1int SaveWordFile();/向单词库输入新单词,正确返回1(2)程序主体结构的设置该设置基本上全部修改了原程序的结构,在main函数中分别定义人人对抗和人机对抗的对象。在键入对应的菜单选项后,进入操作函数,操作函数的参数即是对应对象的引用。同样,若有下级菜单的函数一样用该对象的引用参数,这样,可保证对象的唯一性。主菜单:1.人人对抗(以人人
2、对抗对象的引用作为参数调用子程序)2.人机对抗(以人机对抗对象的引用作为参数调用子程序)人人对抗菜单1.开始猜单词2.设置系统(即设置显示字符的概率和允许猜错的次数)3.退出人机对抗1开始猜单词2设置系统(即设置显示字符的概率和允许猜错的次数)3向单词库中添加单词4退出(3)人人对抗时输入欲猜单词的隐藏一个玩家给出单词时,单词不显示在屏幕上,字符用“*”号显示。本程序在基础上还要有些限制条件,就是接收的字符必须是字母,当字幕为大写时还要转化为小写。如果输入的不是字母要提示重新输入。(4)C+用于处理字符串变量的新的数据类型字符串类型(string类型)在原程序字符串的操作中用了一种新的数据类型
3、String,该类型是一个字符串类,可以定义对象。它在使用方法上和char,int类型一样,可以用来定义字符串变量,即用一个名字代表一个字符序列。程序设计的特点(1)增设了单词库,并且输入50个单词,以便使用。(2)人人对抗和人机对抗时显示是否有重复字母2课程设计的详细设计:程序主体结构图如下:程序详细结构:1.主菜单程序:void CGuess:GetChoice() coutendlendl; cout 猜单词游戏 endl endl; 制 刘健莹 cout Choice; / 得到用户选择 while (!cin|Choice 3) / 简查是否无效 无效输入 endl / 完成简查,
4、得到有效输入,m_Choice变量的值被修改,清屏 system(cls);2.子菜单程序:int CGuess:InitialSet() int exit=0; if(Choice=1) cout 人人对抗按1开始玩游戏按2修改设置值按3退出* 你的选择:Choice2; else 人机对抗按3向单词库输入单词按4退出 while(!cin|Choice2 4) if(Choice2=1) coutGuessNum if(Choice2=2) 你要几次猜词机会(4 - 10): GuessNum; /输入猜词次数 cin|GuessNum 10) endl 请再输入- 你要几次猜词机会(4
5、- 10): cin Proba 你要百分之几的字母显示出来(10 - 80):Proba; /输入显示字母百分数 cin|Proba 80) 请再输入- 你要百分之几的字母显示出来(10 - 80): if(Choice2=3) if(Choice=1) exit=1; else SaveWordFile(); InitialSet(); if(Choice2=4) exit=1; return exit;3.修改默认设置程序:4.默认的游戏设置程序:Proba=20; /显示单词字母个数百分比 GuessNum=4; /玩家猜词的机会5.将单词输入进单词库中的函数:void GuessGa
6、me:saveWordFile() int n=50,i,j; ofstream out; out.open(words.txt if(!out) 不能打开单词库单词库中有50个单词向单词库中输入多少个单词j;请向单词库中输入j个单词for ( i = 0; i j; i+) string word; / 输入单词getline(cin,word); n=n+1; out word;单词库中有n out.close();6.显示猜对的单词:test(string word, char letter, int& numwrong, string& temp) static int m; int
7、check2 = 0; / 判断输入的字符是否为组成单词的字符,正确为1 if (letter = word.at(m) /若单词中有这一个字符 temp.replace(m, 1, 1, letter); check2 = 1; if (check2 = 0) /若单词中没有这一个字符Wrong letter system(pause numwrong+; if(m(word.length()-1)m+; else m=0;7.输出给定几率的字母:for (i = word.length() * Proba; word.length(); temp.replace(i, 1, 1,*8.游戏
8、程序主体运行:Run() int exit = 0; /主循环是否退出的变量,1时退出 do /主循环 / 执行系统命令清屏 GetChoice(); / 给出说明并得到选择 switch(Choice) case 1: Game(); / 与人对战 break; case 2: / 与电脑对战 case 3: cout 再见 endl=97&stri=65&=90) stri=stri+32; else if(stri=90&=97)|stri=112)* i+; a=j;for(i=0;ia;i+) word.replace(i, 1, 1, stri); Word=word;word=w
9、orD; int wordcheck; do / 检查用户输入单词是否有误 wordcheck = 0; for (int i = 0;Word.length(); i+) if (!isalpha(Word.at(i) /isalpha();word.at(); wordcheck = 1; if (wordcheck = 1) 无效 - 请第二位玩家重新输入: password();Word=word; while (wordcheck = 1); w=ch;UserWord() 人人对战 - 猜词机会: 显示字母:% password(); Length=Word.length(); r
10、eturn 1;10.主体的类的定义class CGuess private: string Word,word,worD; /要猜的单词 string DisplayWord; /用户所见的单词 char *pWord1; char *pWord2; int Proba; int GuessNum; int WrongNum; /玩家猜错的次数 int ChosenCounter;/玩家猜过的字母个数 string LetterChosen; /玩家已经猜过的字母 int Choice; /玩家的选择 int ShowNum; /显示字母个数 int Length; /所猜单词的长度 int
11、 LetterNum; /单词中的字母个数 int i; /循环的记数变量,使每次游戏都不一样 int Check; /用户输入字母是否正确 int Choice2; int w; public: CGuess(); int InitialSet(); int SaveWordFile(); int UserWord(); /玩家出词 int RndWord(); /电脑出词 void ReplaceWord(); void isChosen(char); void Judge(char); int Run(); /运行 void GetChoice(); /得到选择 void Game();
12、 /游戏主要函数 void Set(); /设置 void password();3调试程序的过程:1主函数若出现在前面,应将其他函数先定义,或将主函数后置。2在程序开头须将所用函数的文件包含,否则函数不得使用。3人人对抗时,输入单词未显示*,应先设置显示部分,然后输入单词。4当使用getch()时,应先加头文件conic.h,否则无法使用。5人机对抗程序会出现不出现单词,直接显示猜词正确,随机函数rand()应除50求余。6保密部分无法识别大小写,用ASCII码将大写字母转化为小写字母。7人人对抗过程中输入单词,输出*,但是无论退格还是回车都输出*,在保密函数中没有设置输入回车或空格就跳出函
13、数的部分。8运用保密函数时出现输出无效输入。9人人对抗中输入单词后显示*,但是单词没有返回原程序,造成没有猜单词的过程,只有最后结果“恭喜你,猜对了!”10人机对抗无法找到words.txt文件,需要先将words文档转化为文件格式,才能应用。4输入输出数据:以人人对抗模式输入love为例:1.运行程序,出现主菜单,输入12,.出现人人对抗模式菜单栏,输入23.修改默认设置4.第二个玩家输入单词love5.出现猜单词程序6.输出上吊人形7.出现正确答案附:猜单词过程:正确输入错误输入向单词库中输入单词:5课程设计总结:通过这次课程设计,我懂得了如何将所学的知识运用起来,与实际相结合,也让我能够
14、在以后的学习中能够想有所学,学有所用,多多联系实际,用知识帮助他人。课程设计中,我掌握了类的定义和调用,数组的运用,菜单栏的设置等等,同时,程序设计过程中,懂得了如何将不会的知识学会,如何将会的知识灵活熟练地应用,也懂得了以后的学习也要勤动脑思考,把知识转化为自己的,提高了自己的创新能力,动手能力,思考能力,为我今后的学习打下良好的基础。6. 程序源代码附录#include / 标准输入输出cin;coutstring / 字符串处理string.length();at();cctype / 字符处理和检测fstream / 文件流cstdlib / 使用随机函数用time.h / 得到更好的随机数用conio.h/ draw类定义#ifndef DRAW_H / 检测是否已经包含#define DRAW_Hclass draw draw(); / 构造函数 / 成员函数 void rope(); / 绳子 void head(); / 头 void neck(); / 颈 void leftarm(); / 左臂 void rightarm(); / 右臂 void waisttop(); / 腰 void leftleg(); / 左腿 void rightleg()
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1