-
个人简介
你妈周一能不能放过这一次......
#include #include #include #include #include #include #include
using namespace std;
// 卡牌角色结构体 struct Card { string name; int health; int attack; int defense;
// 构造函数 Card(string n, int h, int a, int d) : name(n), health(h), attack(a), defense(d) {}};
// 游戏类 class CardGame { private: vector cardLibrary; // 卡牌库 Card playerCard; Card computerCard; bool playerTurnFirst;
public: CardGame() : playerCard("", 0, 0, 0), computerCard("", 0, 0, 0), playerTurnFirst(true) {
// 初始化随机数种子 srand(time(0)); // 初始化卡牌库 initializeCardLibrary(); // 随机选择玩家和电脑的卡牌 selectRandomCards(); // 随机决定谁先手 playerTurnFirst = (rand() % 2 == 0); } // 初始化卡牌库 void initializeCardLibrary() { cardLibrary.push_back(Card("勇士", 100, 30, 20)); cardLibrary.push_back(Card("法师", 80, 25, 15)); cardLibrary.push_back(Card("骑士", 120, 20, 30)); cardLibrary.push_back(Card("兽人", 90, 35, 15)); cardLibrary.push_back(Card("亡灵", 70, 40, 10)); cardLibrary.push_back(Card("巨人", 150, 15, 25)); cardLibrary.push_back(Card("精灵", 85, 28, 18)); cardLibrary.push_back(Card("刺客", 75, 45, 12)); cardLibrary.push_back(Card("牧师", 95, 22, 25)); cardLibrary.push_back(Card("龙族", 130, 35, 30)); } // 随机选择卡牌 void selectRandomCards() { // 确保玩家和电脑的卡牌不同 int playerIndex = rand() % cardLibrary.size(); int computerIndex; do { computerIndex = rand() % cardLibrary.size(); } while (computerIndex == playerIndex); playerCard = cardLibrary[playerIndex]; computerCard = cardLibrary[computerIndex]; } // 显示卡牌状态 void displayCardStatus(const Card& card, bool isPlayer) { string owner = isPlayer ? "玩家" : "电脑"; cout << owner << "卡牌: " << card.name << " [生命:" << card.health << ", 攻击:" << card.attack << ", 防御:" << card.defense << "]" << endl; } // 显示双方卡牌状态 void displayBothCards() { cout << "\n======= 当前状态 =======" << endl; displayCardStatus(playerCard, true); displayCardStatus(computerCard, false); cout << "========================" << endl; } // 攻击技能 void attackSkill(Card& attacker, Card& defender) { int damage = attacker.attack - defender.defense; if (damage < 0) damage = 0; // 确保伤害不为负数 defender.health -= damage; cout << attacker.name << " 对 " << defender.name << " 造成了 " << damage << " 点伤害!" << endl; } // 防御增加技能 void defenseBoostSkill(Card& card) { int boost = 10 + rand() % 11; // 增加10-20点防御 card.defense += boost; cout << card.name << " 的防御增加了 " << boost << " 点!" << endl; } // 攻击增加技能 void attackBoostSkill(Card& card) { int boost = 10 + rand() % 11; // 增加10-20点攻击 card.attack += boost; cout << card.name << " 的攻击增加了 " << boost << " 点!" << endl; } // 释放魔法技能 void magicSkill(Card& attacker, Card& defender) { int damage = 25 + rand() % 26; // 造成25-50点固定伤害 defender.health -= damage; cout << attacker.name << " 对 " << defender.name << " 释放魔法,造成了 " << damage << " 点伤害!" << endl; } // 玩家回合 void playerTurn() { cout << "\n=== 你的回合 ===" << endl; // 选择技能 cout << "选择技能: 1.攻击 2.防御增加 3.攻击增加 4.释放魔法: "; int skill; cin >> skill; // 清除输入缓冲区 cin.ignore(numeric_limits<streamsize>::max(), '\n'); // 执行技能 switch (skill) { case 1: attackSkill(playerCard, computerCard); break; case 2: defenseBoostSkill(playerCard); break; case 3: attackBoostSkill(playerCard); break; case 4: magicSkill(playerCard, computerCard); break; default: cout << "无效技能选择! 本次回合跳过。" << endl; break; } } // 电脑回合 void computerTurn() { cout << "\n=== 电脑回合 ===" << endl; // 简单AI: 根据情况选择技能 int skill; // 如果电脑血量低,倾向于增加防御或攻击 if (computerCard.health < 50) { if (computerCard.defense < playerCard.attack) { skill = 2; // 增加防御 } else { skill = (rand() % 2 == 0) ? 1 : 4; // 攻击或魔法 } } // 如果玩家血量低,倾向于直接攻击 else if (playerCard.health < 40) { skill = (rand() % 2 == 0) ? 1 : 4; // 攻击或魔法 } // 其他情况随机选择 else { skill = 1 + rand() % 4; } // 执行技能 switch (skill) { case 1: attackSkill(computerCard, playerCard); break; case 2: defenseBoostSkill(computerCard); break; case 3: attackBoostSkill(computerCard); break; case 4: magicSkill(computerCard, playerCard); break; } } // 检查游戏是否结束 bool isGameOver() { return playerCard.health <= 0 || computerCard.health <= 0; } // 显示游戏结果 void displayResult() { cout << "\n======= 游戏结束 =======" << endl; if (playerCard.health <= 0 && computerCard.health <= 0) { cout << "平局! 双方同归于尽!" << endl; } else if (playerCard.health <= 0) { cout << "你输了! " << computerCard.name << "获得了胜利!" << endl; } else { cout << "你赢了! " << playerCard.name << "获得了胜利!" << endl; } cout << "==========================" << endl; } // 运行游戏 void run() { cout << "欢迎来到卡牌对战游戏!" << endl; cout << "系统已随机为你和电脑分配了卡牌" << endl; displayBothCards(); if (playerTurnFirst) { cout << "你先手!" << endl; } else { cout << "电脑先手!" << endl; } // 游戏主循环 while (!isGameOver()) { if (playerTurnFirst) { playerTurn(); if (isGameOver()) break; computerTurn(); } else { computerTurn(); if (isGameOver()) break; playerTurn(); } displayBothCards(); } displayResult(); }};
// 主函数 int main() { CardGame game; game.run();
return 0;}
-
最近活动