C++ 猜数游戏-2(加上血量与攻击机制)

这篇文章介绍了一个结合数字猜测和角色战斗元素的C++控制台游戏。玩家需要猜测1到100之间的数字,猜对后可选择攻击电脑。若未在10次内猜中,电脑将反击。
摘要由CSDN通过智能技术生成
#include <iostream>  
#include <cstdlib>  
#include <ctime>  
  
using namespace std;  
  
class Character {  
public:  
    int health;  
    Character(int h) : health(h) {}  
    void attack(Character& target, int damage) {  
        if (damage > health) {  
            damage = health;  
        }  
        target.health -= damage;  
        cout << "攻击了对方!剩余血量:" << target.health << " HP。" << endl;  
    }  
};  
  
int main() {  
    srand(time(0)); // 初始化随机数种子  
  
    Character player(100);  
    Character computer(100);  
    int secretNumber = rand() % 100 + 1;  
    int guessCount = 0;  
    int guess;  
    do {
    while (guessCount < 10) {  
        cout << "请猜一个1到100之间的数字:";  
        cin >> guess;  
        guessCount++;  
  
        if (guess == secretNumber) {  
            cout << "你猜对了!" << endl;  
            int damage;  
            cout << "请输入你想造成的伤害(不超过你的当前血量):";  
            cin >> damage;  
            player.attack(computer, damage);  
            if (computer.health <= 0) {  
                cout << "你赢了!" << endl;  
                break;  
            }  
        } else if (guess < secretNumber) {  
            cout << "猜小了。" << endl;  
        } else {
        	cout << "猜大了。" << endl;
		}
    }  
  
    if (guessCount == 10) {  
        int damage = rand() % computer.health + 1;  
        computer.attack(player, damage);  
        if (player.health <= 0) {  
            cout << "你输了!" << endl;  
        } else {  
            cout << "你活了下来!但你还是输了游戏。" << endl;  
        }  
    }  
} while (player.health < 0 || computer.health < 0);
    return 0;  
}

这段代码是一个简单的控制台游戏,结合了数字猜测和角色战斗的元素。下面是对代码的详细解析:

1.包含头文件

#include <iostream>    
#include <cstdlib>    
#include <ctime>

<iostream>: 用于输入输出流。
<cstdlib>: 用于rand()和srand()函数,用于生成随机数。
<ctime>: 用于time()函数,用于获取当前时间,通常与srand()一起使用来初始化随机数生成器。
使用命名空间

using namespace std;

这行代码使得在std命名空间中的所有内容都可以直接使用,无需前缀std::

2.Character 类

class Character {    
public:    
    int health;    
    Character(int h) : health(h) {}    
    void attack(Character& target, int damage) {    
        if (damage > health) {    
            damage = health;    
        }    
        target.health -= damage;    
        cout << "攻击了对方!剩余血量:" << target.health << " HP。" << endl;    
    }    
};

Character类有一个公共成员变量health,表示角色的血量。
构造函数Character(int h)用于初始化角色的血量。
attack方法用于攻击另一个Character对象。它接受一个Character引用和一个表示伤害值的整数。如果伤害值超过攻击者的血量,伤害值将被设置为攻击者的血量。然后,从目标角色的血量中减去伤害值,并输出剩余的血量。

3.main 函数

这是程序的主要执行部分。

1.初始化随机数生成器

srand(time(0));

使用当前时间作为种子来初始化随机数生成器。

2. 创建角色

Character player(100);    
Character computer(100);

创建两个Character对象,playercomputer,并初始化它们的血量为100。

3. 数字猜测游戏

  • 生成一个1到100之间的随机数字。
  • 提示玩家猜测数字。
  • 如果玩家猜对了,提示玩家输入想要对computer造成的伤害值。
  • 如果玩家猜错了,给出提示并继续猜测,直到猜测次数达到10次。

4. 角色战斗

  • 如果玩家猜测次数达到10次,computer将攻击player
  • 检查playercomputer的血量,判断游戏的胜负。

5. 循环

  • 如果playercomputer的血量小于0,循环将继续,直到两者的血量都大于或等于0。
    总结
    这是一个结合了数字猜测和简单战斗系统的控制台游戏。玩家需要猜测一个随机数,如果猜对了,可以对电脑角色造成伤害;如果猜错了10次,电脑角色将攻击玩家。游戏将持续进行,直到有一方血量小于0。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值