没有合适的资源?快使用搜索试试~ 我知道了~
C++猜单词课程设计-猜单词游戏(完整版).doc
1 下载量 137 浏览量
2022-12-01
08:19:10
上传
评论
收藏 2.99MB DOC 举报
温馨提示
试读
34页
C++猜单词课程设计-猜单词游戏(完整版).doc
资源推荐
资源详情
资源评论
C++猜单词课程设计——猜单
词游戏(完整版)
(文档可以直接使用,也可根据实际需要修改使用,可编辑 欢迎下载)
VC++课程设计报告
——猜单词游戏
VC++课程设计报告
1. 功能:
课程设计题目的功能:
一个猜单词游戏。两人游戏时,由一个玩家给出一个单词,在人与计算机游戏时,
由计算机给出一个单词,另一个玩家根据组成单词的字母个数猜出单词,猜的次数可以
指定,若猜不中,显示一个上吊的人形。
(1) 将猜单词的函数与相应的数据封装到类中,并改写主程序,使程序简化。
(2) 根据所猜单词的字母个数,给出指定几率的提示字母,显示于单词中的正
确位置。
(3) 在进入猜单词的过程后,首先显示菜单询问是开始猜单词还是修改设置,
默认的修改次数为 4,默认显示字符的几率为 20%,若要修改这个设置,在
显示菜单中选择设置选项进行修改。
(4) 在人人对抗时,一个玩家给出单词时,单词不显示在屏幕上,字符用“*”
显示。
(5) 猜单词时,输入一个单词,判断函数改为判断输入单词的字符是否与所猜
单词一一对应,将猜中的字符显示出来。
(6) 在人机对抗时,可以随机读取单词,也可以选择向单词库输入单词,同时,
将单词库中单词的个数显示出来,并根据单词库中单词个数的多少决定随
机选取的范围。
程序设计的思想和方法
(1) 类的封装
画上吊人形的类已经封装起来,这部分程序基本不用改了,主要是对人人
对抗和人及对抗操作部分类的封装。可以定义一个类的两个对象,也可以定义
为一个基本类和一个派生类的对象,成员函数可根据对象的不同分别调用,数
据结构如下:
Class CGuess
{
private:
string Word; //欲猜的单词
double Proba; //显示字符的概率 0—1
int GuessNum;//总共可猜的次数
int WrongNum;//猜错的次数
string DisplayWord;//欲显示的单词
string GuessWord;//第二个玩家输入猜想的单词
int nLen;//输入单词的长度
public:
CGuess();//构造函数
void InitialSet();//修改设置值
void InputWord();//输入单词并初始化成员函数
void InputGuess();//接收用户所猜的单词
int Judge();//判断是否猜中,猜中返回 0,猜不中返回 1 或-(death)
int ShowDisplay();//显示单词及上吊人形,程序结束返回 1
int OpenWordFile();//打开单词库,随机取出一个单词赋给 Word,成功返
回 1
int SaveWordFile();//向单词库输入新单词,正确返回 1
(2) 程序主体结构的设置
该设置基本上全部修改了原程序的结构,在 main 函数中分别定义人人对抗
和人机对抗的对象。在键入对应的菜单选项后,进入操作函数,操作函数的参
数即是对应对象的引用。同样,若有下级菜单的函数一样用该对象的引用参数,
这样,可保证对象的唯一性。
主菜单:
1. 人人对抗(以人人对抗对象的引用作为参数调用子程序)
2. 人机对抗(以人机对抗对象的引用作为参数调用子程序)
人人对抗菜单
1. 开始猜单词
2. 设置系统(即设置显示字符的概率和允许猜错的次数)
3. 退出
人机对抗
1.开始猜单词
2.设置系统(即设置显示字符的概率和允许猜错的次数)
3.向单词库中添加单词
4.退出
(3) 人人对抗时输入欲猜单词的隐藏
一个玩家给出单词时,单词不显示在屏幕上,字符用“*”号显示。本程序
在基础上还要有些限制条件,就是接收的字符必须是字母,当字幕为大写时还
要转化为小写。如果输入的不是字母要提示重新输入。
(4) C++用于处理字符串变量的新的数据类型——字符串类型(string 类型)
在原程序字符串的操作中用了一种新的数据类型——String,该类型是一个
字符串类,可以定义对象。它在使用方法上和 char,int 类型一样,可以用来定
义字符串变量,即用一个名字代表一个字符序列。
程序设计的特点
(1) 增设了单词库,并且输入 50 个单词,以便使用。
(2) 人人对抗和人机对抗时显示是否有重复字母
2. 课程设计的详细设计:
程序主体结构图如下:
主菜单
人人对抗
人机对抗
退出
开 始 猜
单词
退出
开 始 猜
单词
设 置 系
统
设 置 系
统
退出
向 单 词
库 中 添
加单词
程序详细结构:
1.主菜单程序:
void CGuess::GetChoice(){
cout<<endl<<endl<<endl;
cout << " 猜单词游戏 " << endl << endl;
cout <<" 制 刘健莹 " << endl << endl;
cout << "***********************************************************" <<
endl;
cout << endl;
cout << " 按 1 人人对抗模式" << endl;
cout << " 按 2 人机对抗模式" << endl;
cout << " 按 3 退出" << endl;
cout << endl;
cout << "***********************************************************" <<
endl << endl;
cout<<" 请您选择: ";
cin>>Choice; // 得到用户选择
while (!cin||Choice <1 || Choice >3) // 简查是否无效
{
cout << " 无效输入" << endl
<< " 请再输入: ";
Flush(cin);
cin>>Choice;
} // 完成简查, 得到有效输入,m_Choice 变量的值被修改,清屏
system("cls");
}
2.子菜单程序:
int CGuess::InitialSet()
{
int exit=0;
if(Choice==1)
{
cout<<" 人人对抗"<<endl;
cout << "***********************************************************"
<< endl;
cout<<"按 1 开始玩游戏"<<endl;
cout<<"按 2 修改设置值"<<endl;
cout<<"按 3 退出"<<endl;
cout<<endl;
cout<<"*************************************************************"<<endl;
cout<<" 你的选择:"<<endl<<endl;
cin>>Choice2; }
剩余33页未读,继续阅读
资源评论
matlab大师
- 粉丝: 2434
- 资源: 9万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功