C++猜单词课程设计--——猜单词游戏

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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<

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<<" 人人对抗"<

cout << "***********************************************************" << endl;

cout<<"按1开始玩游戏"<

cout<<"按2修改设置值"<

cout<<"按3退出"<

cout<

cout<<"*************************************************************"<

cout<<" 你的选择:"<

cin>>Choice2; }

相关文档
最新文档