游戏暴击(随机数和if判断)

Player
package co.hp.wanjialei;

import java.util.Random;

/*
* 玩家类
* 属性:名字,类型,生命值,防御力,攻击力
* 方法:自我介绍,pk
* */
public class Player {
    //封装;把属性设为private,提供公共的get和set方法间接访问,提高安全性
    private String name;
    private String type;
    private int hp;
    private int fy;
    private int gjl;
    /*
    * 描述自己的信息
    * */
    public void say(){
        System.out.println("我是"+name+"一个"+type+"生命值"+hp+"防御力"+fy+"攻击力"+gjl);
    }
    /*
    * pk
    * 我方开启的战斗
    * @param P 敌对玩家
    * */
    public void pk(Player p){
        //定义一个标记,0我方攻击1敌方攻击
        int flag = 0;
        //回合制,直到一方死
        while (true){
            //显示当前战斗人员信息
            this.say();
            p.say();
            Random a = new Random();
            int bj = a.nextInt(100);
            if(flag==0){
                if(bj<=50){
                    int harm = this.gjl*2-p.fy;//伤害值
                    System.out.println("我方回合,暴击了"+this.gjl*2);
                    System.out.println(p.name+"掉血"+harm);
                    p.hp-=harm;//生命值-伤害值
                }else{
                    int harm = this.gjl-p.fy;//伤害值
                    System.out.println(p.name+"掉血"+harm);
                    p.hp-=harm;//生命值-伤害值
                }
                flag =1;
            }else {
                if (bj<=50){
                    int harm = p.gjl*2-this.fy;//伤害值,掉血量
                    System.out.println("敌方回合,暴击了"+this.gjl*2);
                    System.out.println(this.name+"掉血"+harm);
                    this.hp-=harm;
                }else{
                    int harm = p.gjl-this.fy;//伤害值,掉血量
                    System.out.println(this.name+"掉血"+harm);
                    this.hp-=hp;
                }

                flag = 0;
            }
            Random b = new Random();
            int dl = b.nextInt(10);
            //有血量<=0,战斗结束
            if(this.hp<=0){
                System.out.println(p.name+"战胜"+this.name);
                if (dl == 0){
                    System.out.println("无掉落");
                }
                if (dl == 1){
                    System.out.println("皮肤碎片*2");
                }
                if (dl == 2){
                    System.out.println("英雄碎片*2");
                }
                if (dl == 3){
                    System.out.println("钻石*300");
                }
                if (dl == 4){
                    System.out.println("铭文碎片*200");
                }
                if (dl == 5){
                    System.out.println("铭文碎片*400");
                }
                if (dl == 6){
                    System.out.println("铭文碎片*250");
                }
                if (dl == 7){
                    System.out.println("铭文碎片*300");
                }
                if (dl == 8){
                    System.out.println("铭文碎片*350");
                }
                if (dl == 9){
                    System.out.println("荣耀积分*60");
                }
                if (dl == 10){
                    System.out.println("荣耀积分*40");
                }
                break;//结束
            }
            if(p.hp<=0) {
                System.out.println(this.name+"战胜"+p.name);
                if (dl == 0){
                    System.out.println("无掉落");
                }
                if (dl == 1){
                    System.out.println("皮肤碎片*2");
                }
                if (dl == 2){
                    System.out.println("英雄碎片*2");
                }
                if (dl == 3){
                    System.out.println("钻石*300");
                }
                if (dl == 4){
                    System.out.println("铭文碎片*200");
                }
                if (dl == 5){
                    System.out.println("铭文碎片*400");
                }
                if (dl == 6){
                    System.out.println("铭文碎片*250");
                }
                if (dl == 7){
                    System.out.println("铭文碎片*300");
                }
                if (dl == 8){
                    System.out.println("铭文碎片*350");
                }
                if (dl == 9){
                    System.out.println("荣耀积分*60");
                }
                if (dl == 10){
                    System.out.println("荣耀积分*40");
                }
                break;//结束
            }
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    //构造器(建议如果定义了有参的构造器,一定定义一个无参构造器)


    public Player(String name, String type, int hp, int fy, int gjl) {
        this.name = name;
        this.type = type;
        this.hp = hp;
        this.fy = fy;
        this.gjl = gjl;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public int getHp() {
        return hp;
    }

    public void setHp(int hp) {
        this.hp = hp;
    }

    public int getFy() {
        return fy;
    }

    public void setFy(int fy) {
        this.fy = fy;
    }

    public int getGjl() {
        return gjl;
    }

    public void setGjl(int gjl) {
        this.gjl = gjl;
    }
}
PlayerTest
package co.hp.wanjialei;

/**
 * 测试玩家类
 * 船舰玩家对象PK
 */
public class PlayerTest {
    public static void main(String[] args) {

        Player p1= new Player("1号", "ll", 60000, 1600, 2200);
        Player p2= new Player("2号", "hh", 60000, 1460, 2500);
        p1.pk(p2);
    }
}

好的,以下是一个简单的RPG游戏的类设计: ```cpp #include <iostream> #include <string> #include <cstdlib> // 用于随机数生成 using namespace std; class Role { public: Role(string name, int attack, int defense, double criticalRate, double dodgeRate, double dropRate, int maxHp) { this->name = name; this->attack = attack; this->defense = defense; this->criticalRate = criticalRate; this->dodgeRate = dodgeRate; this->dropRate = dropRate; this->maxHp = maxHp; this->hp = maxHp; } virtual ~Role() {} string getName() { return name; } int getAttack() { return attack; } int getDefense() { return defense; } double getCriticalRate() { return criticalRate; } double getDodgeRate() { return dodgeRate; } double getDropRate() { return dropRate; } int getHp() { return hp; } int getMaxHp() { return maxHp; } bool isDead() { return hp <= 0; } void attackRole(Role* target) { if (rand() % 100 < criticalRate * 100) { cout << name << "发动了暴击!" << endl; target->takeDamage(attack * 2); } else { cout << name << "攻击了" << target->getName() << "!" << endl; target->takeDamage(attack); } } void takeDamage(int damage) { int realDamage = damage - defense; if (realDamage < 0) { realDamage = 0; } if (rand() % 100 < dodgeRate * 100) { cout << name << "闪避了攻击!" << endl; } else { hp -= realDamage; if (hp < 0) { hp = 0; } cout << name << "受到了" << realDamage << "点伤害!" << endl; } } void addHp(int hp) { this->hp += hp; if (this->hp > maxHp) { this->hp = maxHp; } cout << name << "恢复了" << hp << "点生命值!" << endl; } bool dropItem() { return rand() % 100 < dropRate * 100; } private: string name; int attack; int defense; double criticalRate; double dodgeRate; double dropRate; int maxHp; int hp; }; class Player : public Role { public: Player(string name, int attack, int defense, double criticalRate, double dodgeRate, double dropRate, int maxHp, int level) : Role(name, attack, defense, criticalRate, dodgeRate, dropRate, maxHp) { this->level = level; } void levelUp() { level++; attack += 5; defense += 5; maxHp += 10; hp = maxHp; cout << getName() << "升到了" << level << "级!" << endl; } private: int level; }; class Monster : public Role { public: Monster(string name, int attack, int defense, double criticalRate, double dodgeRate, double dropRate, int maxHp, int exp) : Role(name, attack, defense, criticalRate, dodgeRate, dropRate, maxHp) { this->exp = exp; } int getExp() { return exp; } private: int exp; }; int main() { // 创建玩家和怪物 Player* player = new Player("玩家", 20, 10, 0.1, 0.1, 0.1, 100, 1); Monster* monster = new Monster("史莱姆", 10, 5, 0.05, 0.05, 0.3, 50, 10); // 玩家攻击怪物直到怪物死亡 while (!monster->isDead()) { player->attackRole(monster); if (monster->isDead()) { break; } monster->attackRole(player); } // 如果怪物死亡,掉落物品 if (monster->isDead()) { if (monster->dropItem()) { cout << monster->getName() << "掉落了一件物品!" << endl; } else { cout << monster->getName() << "没有掉落任何物品。" << endl; } // 增加经验值 player->addHp(10); int exp = monster->getExp(); cout << player->getName() << "获得了" << exp << "点经验值!" << endl; // 判断是否升级 while (true) { int levelUpExp = player->getMaxHp() * 2; if (exp >= levelUpExp) { exp -= levelUpExp; player->levelUp(); } else { break; } } } else { cout << player->getName() << "被" << monster->getName() << "打败了。" << endl; } delete player; delete monster; return 0; } ``` 在这个RPG游戏,有两个角色类:`Player`和`Monster`,它们都继承自`Role`类。`Role`类包含了各种角色共有的属性和方法,如攻击力、防御力、暴击率、闪避率、掉落率、血量等。`Player`类还有一个`level`属性,表示玩家的等级,以及一个`levelUp`方法,用于将玩家升级。`Monster`类有一个`exp`属性,表示杀死这个怪物可以获得的经验值。 在`main`函数,我们创建了一个玩家和一个怪物,然后进行了一系列交战操作,直到其一个角色死亡。如果怪物死亡,我们会判断是否掉落物品、增加经验值、升级等操作。最后,我们需要手动释放动态内存,因为我们在堆上创建了`Player`和`Monster`对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值