⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 1.编写一个教学游戏
💻 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 + -