- 内容简介
- 一、游戏规则
- 二、具体代码实现
- 1.调试环境
- 2.代码实现
- 3.运行演示
- 小结
内容简介
本文介绍了一个作者原创的角色对战小游戏qwq
b站视频传送门戳我~
以下是本篇文章正文内容
一、游戏规则选择一个模式,一个英雄,然后开始战斗吧!投掷你的骰子,提升英雄属性,击败对手!
本游戏内容精简,画风简洁(
而且非常容易上手!
二、具体代码实现 1.调试环境环境为Dev-C++ 5.4.0
2.代码实现完整代码如下:
#include#include #define int long long #define ll long long #define cer(x) cerr<<(#x)<<" = "<<(x)<<'n' using namespace std; const int N=210; // 最多200个分身,稍微开大一点 class Character{ // 角色类 public: string name=""; int HP=100; int HP0=100; // 初始生命 int HPup=100; // 血量上限 int speed=30; int attack=20; int mAttack=0; // 魔攻 int defend=0; double mDefend=0; // 魔抗率,超过1表示100%魔抗 double hitRate=0; // 暴击率 void show(){ cout< return (ll)rand()*rand()%n; } Character me[N],enemy[N]; int characterNum=1; // 我方角色数为1(0个分身) int enemyNum=1; // 敌方角色数为1(0个分身) int gameMode,op,op2; void start(){ srand((unsigned)time(0)); cout<<"请输入数字选择游戏模式"< >gameMode; cout<<"请输入数字选择角色"< >op; // 你选择第op个角色 if(op==1){ me[1].name="曹操"; me[1].HP=me[1].HP0=me[1].HPup=1500; // 实时血量,初始血量,血量上限 me[1].speed=30; me[1].attack=20; me[1].mAttack=0; // 魔攻 } else if(op==2){ me[1].name="刘备"; me[1].HP=me[1].HP0=me[1].HPup=1500; // 实时血量,初始血量,血量上限 me[1].speed=20; me[1].attack=25; me[1].mAttack=0; // 魔攻 } else if(op==3){ me[1].name="王昭君"; me[1].HP=me[1].HP0=me[1].HPup=1000; // 实时血量,初始血量,血量上限 me[1].speed=15; me[1].attack=10; me[1].mAttack=25; // 魔攻 } cout<<"你选择了"< op2=random(3)+1; // 对手随机选择1-3中的角色之一 if(op2==1){ enemy[1].name="曹操"; enemy[1].HP=enemy[1].HP0=enemy[1].HPup=1500; // 实时血量,初始血量,血量上限 enemy[1].speed=30; enemy[1].attack=20; enemy[1].mAttack=0; // 魔攻 } else if(op2==2){ enemy[1].name="刘备"; enemy[1].HP=enemy[1].HP0=enemy[1].HPup=1500; // 实时血量,初始血量,血量上限 enemy[1].speed=20; enemy[1].attack=25; enemy[1].mAttack=0; // 魔攻 } else if(op2==3){ enemy[1].name="王昭君"; enemy[1].HP=enemy[1].HP0=enemy[1].HPup=1000; // 实时血量,初始血量,血量上限 enemy[1].speed=15; enemy[1].attack=10; enemy[1].mAttack=25; // 魔攻 } } else if(gameMode==3){ // op2=random(2)+4; // 选择角色4或者角色5 cout<<"请输入数字选择你要挑战的Boss"< >op2; if(op2==1){ enemy[1].name="神·曹操"; enemy[1].HP=enemy[1].HP0=enemy[1].HPup=20000; // 实时血量,初始血量,血量上限 enemy[1].speed=300; enemy[1].attack=200; enemy[1].mAttack=100; // 魔攻 } else if(op2==2){ enemy[1].name="神·吕布"; enemy[1].HP=enemy[1].HP0=enemy[1].HPup=500000; // 实时血量,初始血量,血量上限 enemy[1].speed=8000; enemy[1].attack=1000; enemy[1].mAttack=400; // 魔攻 } } cout<<"你的对手选择了"< cout<<"你的属性:"< cout<<"第 "< cout<<"对手的属性:"< cout<<"第 "< start(); cout<<"战斗开始!"< // system("cls"); // 清屏 cout<<"-------------------------"< p1=random(6)+1; // 自己随机获得一个1-6的点数 } else if(gameMode==2 || gameMode==3){ cout<<"请输入你选择的点数:"< >p1; } cout<<"你投出了 "< cout<<"获得生命+1"< me[j].HP+=me[j].HP0; me[j].HPup+=me[j].HP0; } } else if(p1==2){ cout<<"获得分身+1"< cout<<"获得治疗"< me[j].HP+=2000; if(me[j].HP>me[j].HPup)me[j].HP=me[j].HPup; } } else if(p1==4){ cout<<"获得速度、防御、魔抗上升"< me[j].speed*=2; me[j].defend+=5; me[j].mDefend+=0.2; } } else if(p1==5){ cout<<"获得双攻上升"< me[j].attack*=2; me[j].mAttack*=2; } } else if(p1==6){ cout<<"获得强力buff,收回分身并叠加分身属性"< me[1].HP+=me[j].HP; me[1].HPup+=me[j].HPup; } characterNum=1; // 收回分身 } showMe(); p1=random(6)+1; // 对手随机获得一个1-6的点数 cout<<"对手投出了 "< cout<<"获得生命+1"< enemy[j].HP+=enemy[j].HP0; enemy[j].HPup+=enemy[j].HP0; } } else if(p1==2){ cout<<"获得分身+1"< cout<<"获得治疗"< enemy[j].HP+=2000; if(enemy[j].HP>enemy[j].HPup)enemy[j].HP=enemy[j].HPup; } } else if(p1==4){ cout<<"获得速度、防御、魔抗上升"< enemy[j].speed*=2; enemy[j].defend+=5; enemy[j].mDefend+=0.2; } } else if(p1==5){ cout<<"获得双攻上升"< enemy[j].attack*=2; enemy[j].mAttack*=2; } } else if(p1==6){ cout<<"获得强力buff,收回分身并叠加分身属性"< enemy[1].HP+=enemy[j].HP; enemy[1].HPup+=enemy[j].HPup; } enemyNum=1; // 收回分身 } showEnemy(); // 按照速度快慢互相攻击 cout<<"互相攻击!"< =enemy[1].speed){ // 我方先手 // 我方发动攻击 damage=0; if(me[1].hitRate>=1.0){ // 必定暴击 att1*=2; } if(att1>d2){ // 物攻可以击穿护甲 damage+=att1-d2; } if(md2<1.0){ // 魔攻有效 damage+=(int)(mAtt1*(1.0-md2)); } enemy[1].HP-=damage; if(enemy[1].HP<=0){ cout<<"你击败了对手,游戏胜利!!!"< =1.0){ // 必定暴击 att2*=2; } if(att2>d1){ // 物攻可以击穿护甲 damage+=att2-d1; } if(md1<1.0){ // 魔攻有效 damage+=(int)(mAtt2*(1.0-md1)); } me[1].HP-=damage; if(me[1].HP<=0){ cout<<"你被击败了,游戏结束!"< // 敌方先手 // 敌方发动攻击 damage=0; if(enemy[1].hitRate>=1.0){ // 必定暴击 att2*=2; } if(att2>d1){ // 物攻可以击穿护甲 damage+=att2-d1; } if(md1<1.0){ // 魔攻有效 damage+=(int)(mAtt2*(1.0-md1)); } me[1].HP-=damage; if(me[1].HP<=0){ cout<<"你被击败了,游戏结束!"< =1.0){ // 必定暴击 att1*=2; } if(att1>d2){ // 物攻可以击穿护甲 damage+=att1-d2; } if(md2<1.0){ // 魔攻有效 damage+=(int)(mAtt1*(1.0-md2)); } enemy[1].HP-=damage; if(enemy[1].HP<=0){ cout<<"你击败了对手,游戏胜利!!!"< // 游戏已结束 return 0; } if(i>h){ cout<<"超过回合上限,游戏结束,平局!"<
3.运行演示
开始界面,以选择投掷模式,我方曹操为例。
游戏进行界面
击败对手,获得游戏胜利!可以重新进入游戏,选择Boss模式进行游玩!
小结以上就是今天要讲的内容啦,看到这里不点个赞或者一键三连支持一下这个刚刚开始写博客的萌新博主嘛qwq你的关注和支持就是我进步的动力呐~
后续我会继续分享一些有趣的小游戏给大家哦~~
c++小游戏专栏保持不定期更新~~qwq好啦,朋友们下期再见啦!!!



