📄 main.cpp
字号:
#include <iostream>
#include <string>
#include <ctime>
#include <vector>
using namespace std;
void rand_seed()
{
int seed = static_cast<int>(time(0));
srand(seed);
}
int rand_int(int a,int b)
{
return a + rand() % (b-a+1);
}
//Player类
class Player
{
public:
Player();
Player(string player_name,int initial_level);
void increment_score();
int get_score() const;
int get_level() const;
string get_name() const;
void display();
private:
string name;
int score;
int level;
};
Player::Player() //Player类的无参数构造函数
{
name =" ";
score = 0;
level = 1;
}
Player::Player(string player_name,int initial_level) //Player类的带两个参数的构造函数
{
name= player_name;
score=0;
level=initial_level;
}
void Player::increment_score() //加分或加等级
{
score++;
if (score % 5 == 0 && level <4)
level++;
}
int Player::get_level() const //返回等级
{
return level;
}
int Player::get_score() const //返回分数
{
return score;
}
string Player::get_name() const //返回游戏者姓名
{
return name;
}
void Player::display() //显示游戏者信息
{
cout<<"\n\tthe name of player is ;"<<get_name()<<"\tthe level of player is "<<get_level()<<"\n";
}
//Game类
class Game
{
public:
Game();
void Start_play();
void read_player_information();
void play();
int get_guess(int v1,int v2,int answer,string operation);
//private:
Player player; //Game的类游戏者对象作为成员
};
Game::Game() //Game类的无参数构造函数
{
player = Player(); //调用Player类的构造函数
}
void Game::Start_play() //开始游戏
{
read_player_information();
string response;
do
{
play();
cout<<"Do you want to play again? (y/n) ";
cin>>response;
} while (response == "y");
}
void Game::read_player_information() //读取游戏者资料
{
cout<<"What is your name?: ";
string name ;
cin>>name;
int initial_level = 0;
do
{
cout<<"At what level do you want to start? (1-4) ";
cin>>initial_level;
} while (initial_level < 1 || initial_level > 4);
player = Player(name,initial_level); //调用构造函数
}
void Game::play() //游戏过程(在游戏的过程中实现了四个等级)
{
int i1 = 0;
int i2 = 0;
int answer = 0;
if(player.get_level() == 1)//进行两个小于三并且和也小于10 的数字加法
do
{
i1 = rand_int (1,9);
i2 = rand_int (1,9);
answer = i1 + i2;
} while (answer > 9);
else if(player.get_level() == 2)//进行两个任何一位数字加法
{
i1 = rand_int (1,9);
i2 = rand_int (1,9);
answer = i1 + i2;
}
else if(player.get_level() == 3)//进行差为非负的两个一位数字的减法
do
{
i1 = rand_int (1,9);
i2 = rand_int (1,9);
answer = i1 - i2;
} while (answer < 0);
else if(player.get_level() == 4)//进行两个两位数的加法
{
i1 = rand_int (10,99);
i2 = rand_int (10,99);
answer = i1 + i2;
}
int guess;
if (player.get_level() < 3||player.get_level()==4)
guess = get_guess(i1,i2,answer," + ");
else
guess = get_guess(i1,i2,answer," - ");
if (answer == guess)
{
player.increment_score();
cout << "Congratulations, " << player.get_name() << "! That is correct." << "\n";
}
else
{
cout << "Sorry, " << player.get_name() << ". The correct answer is "
<< answer << ".\n";
}
cout << "Your score is " << player.get_score() << "\n";
}
int Game::get_guess(int v1, int v2, int answer, string operation)
{
int guess;
int tries = 2;
do
{
cout << "Please enter the " << operation
<< " of " << v1 << " and " << v2 << "\n";
cin >> guess;
if (answer == guess)
return guess;
else
cout << "Oops. That was not right. Try again.\n";
tries--;
} while (tries > 0);
return guess;
}
//显示处理函数
void printer(Player&s)
{
s.display();
}
//游戏者类向量
vector<Player>vp;
//菜单选择函数
int menu_select()
{
int sn;
cout<<"------------------------------------------\n";
cout<<"-a teaching play of testing - and + \n";
cout<<"-\t1.new game \n";
cout<<"-\t2.display the information of the player\n";
cout<<"-\t3.quit \n";
cout<<"------------------------------------------\n";
cout<<"please select 1-3:";
for(;;)
{
char c[2];
cin>>c;
sn=atoi(c);
if(1<sn<3)
break;
}
return sn;
}
//新游戏函数newgame()
void newgame()
{
Game mathquiz;
rand_seed();
mathquiz.Start_play();
string n=mathquiz.player.get_name(); //将游戏者姓名赋给n
int m=mathquiz.player.get_level(); //将游戏者等级赋给m
//将游戏者的信息赋值给Player类的对象obj,并将obj压入向量存储
for(int i=vp.size();;i++)
{
Player obj(n,m); //调用构造函数
vp.push_back(obj); //存入向量
break;
}
}
//查询函数find()
void find()
{
if(vp.size()!=0)
{
string r;
cout<<"please input the name of the player :";
cin>>r;
for(int i=0;i<vp.size()+1;i++){
if(i<vp.size()){
if(vp[i].get_name()==r){
cout<<"the information of the player is as follows :\n";
printer(vp[i]);
break;
}
}
}
}
}
//菜单函数
void menu(void)
{
for(;;)
{
switch(menu_select())
{
case 1: //开始新游戏
newgame();
break;
case 2: //查询游戏者等级
find();
break;
case 3: //退出
cout<<"\twelcome to play again!!!\n";
return;
}
}
}
//主函数
void main()
{
menu();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -