您的位置:首页 > 编程语言 > C语言/C++

C++面向对象课程设计-1

2019-06-04 18:06 253 查看

C++面向对象课程设计一一 之1

教学游戏:

#include <iostream>
#include <string>
#include <ctime>

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);
}

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;

private:
string name;
int score;
int level;
};

Player::Player()
{
name = "";
score = 0;
level = 1;
}

Player::Player(string player_name, int initial_level)
{
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;
}

class Game
{
public:
Game();
void play();
void read_player_information();
void play_round();
int get_guess(int v1, int v2, int answer, string operation);

private:
Player player;
};

Game::Game()
{
player = Player();
}

void Game::play()
{
read_player_information();
string response;
do
{
play_round();
cout << "你想继续挑战吗? 如果继续挑战请输入y,否则输入n退出游戏\n";
cin >> response;
} while (response == "y");
}

void Game::read_player_information()
{
cout << "请输入你的名字:";
string name;
cin >> name;
int initial_level = 0;
do
{
cout << "请选择所需挑战的难度(1-4):";
cin >> initial_level;
} while (initial_level < 1 || initial_level > 4);
player = Player(name, initial_level);
}

void Game::play_round()
{
int i1 = 0;
int i2 = 0;
int answer = 0;

if (player.get_level() == 1)
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)
guess = get_guess(i1, i2, answer, " + ");
else
guess = get_guess(i1, i2, answer, " - ");

if (answer == guess)
{
player.increment_score();
cout << "恭喜!" << player.get_name() << "你答对了!" << "\n";
}
else
{
cout << "抱歉!  " << player.get_name() << "你回答错误!"
<< answer << ".\n";
}
cout << "你的分数为:" << player.get_score() << "\n";
}

int Game::get_guess(int v1, int v2, int answer, string operation)
{
int guess;
int tries = 2;
do
{
cout << "请输入: " << v1 << operation << v2 << " 的答案:  " <<player.get_name()<< "你的挑战等级为:" << player.get_level() << endl;
cin >> guess;
if (answer == guess)
return guess;
else
cout << "抱歉,你答错了,请在尝试一次:\n";
tries--;
} while (tries > 0);
return guess;
}

int main()
{
Game mathquiz;
rand_seed();
mathquiz.play();
return 0;
}

运行测试如下:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: