栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java编写回合制pk

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java编写回合制pk

两个小人pk

暴击:伤害随机翻倍

赢得一方会获得装备

首先创建一个类,编写人物属性、pk的方法

随机数的使用:

Random rand = new Random;

int a=rand.nextInt(10);

用rand调用nextInt方法  10是从0~9中随机出一个数字赋值给a

package com.d0708;

import java.util.Random;


public class Player {
    //封装:把属性设为private,提供公共的get和set方法间接访问,提高安全性
    private String name;
    private String type;
    private int life;
    private  int defense;
    private int attack;
    
    public void say(){
        System.out.print("我叫"+name+",是一个"+type);
        System.out.println(",生命值高达"+life+",防御值"+defense+",攻击力"+attack);
    }
    
    public void pk(Player p){
        int flag =0;//0默认我防攻击
        //暴击倍数  通过随机数组下标获取暴击倍数
        int[] critchance=new int[]{1,1,1,1,2,2,3,4,5,4};//暴击倍数
        //掉落物品
        String[] article=new String[]{"魔剑","魔盔","魔戒","魔靴","魔甲","魔腕"};//掉落物品
        Random ran=new Random();
        //回合制
        while (true){
            //显示当前战斗人信息
            this.say();
            p.say();
            //定义一个标记,0我方攻击 1敌方攻击
            if(flag==0){
                //new Random 对象
                Random random = new Random();
                //通过随机获得暴击倍数
                int crit = critchance[random.nextInt(critchance.length)];
                //战斗 我方攻击力*暴击倍数-敌方防御力=伤害
                int harm=this.attack*crit-p.defense;
                //当暴击倍数为1则不暴击
                if(crit!=1){
                    System.out.println(this.name+"对"+p.name+"造成"+(this.attack*crit)+"伤害"+"t"+p.name+"掉血"+harm+"t"+"暴击倍数:"+crit);
                }else {
                    System.out.println(this.name+"对"+p.name+"造成"+(this.attack*crit)+"伤害"+"t"+p.name+"掉血"+harm);
                }
                System.out.println();
                p.life-=harm;
                flag=1;//改变标记,转换攻击角色
            }else {
                Random random = new Random();
                //暴击
                int pcrit = critchance[random.nextInt(critchance.length)];
                //战斗 敌方攻击力*暴击倍数-我方防御力=伤害
                int harm=p.attack*pcrit-this.defense;
                if(pcrit!=1){
                    System.out.println(p.name+"对"+this.name+"造成"+(p.attack*pcrit)+"伤害"+"t"+this.name+"掉血"+harm+"t"+"暴击倍数:"+pcrit);
                }else {
                    System.out.println(p.name+"对"+this.name+"造成"+(p.attack*pcrit)+"伤害"+"t"+this.name+"掉血"+harm);
                }

                System.out.println();
                this.life-=harm;
                flag=0;//改变标记,转换攻击角色
            }
            //有血量<=0,结束战斗
            if(this.life<=0){
                System.out.println(p.name+"打败了"+this.name);
                System.out.println("爆出装备:"+article[ran.nextInt(article.length)]);
                break;
            }
            if(p.life<=0){
                System.out.println(this.name+"打败了"+p.name);
                System.out.println("爆出装备:"+article[ran.nextInt(article.length)]);
                break;
            }
            //线程睡眠
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

    }
    //构造器(建议如果创建有参构造器,一定创建一个无参构造器)
    //有参构造
    public Player(String name, String type, int life, int defense, int attack) {
        this.name = name;
        this.type = type;
        this.life = life;
        this.defense = defense;
        this.attack = attack;
    }

    //无参构造器
    public Player() {
    }
    //get、set方法
    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 getLife() {
        return life;
    }

    public void setLife(int life) {
        this.life = life;
    }

    public int getDefense() {
        return defense;
    }

    public void setDefense(int defense) {
        this.defense = defense;
    }

    public int getAttack() {
        return attack;
    }

    public void setAttack(int attack) {
        this.attack = attack;
    }
}

然后再创建一个测试类,new两个小人

package com.d0708;

public class PlayerTest {
    public static void main(String[] args) {
        //创建两个玩家
        Player p1 =new Player("龙傲天","战士",1000,20,30);
        Player p2 =new Player("张三","法师",700,15,40);
        Player p3 =new Player();
        //战斗  调用pk方法
        p1.pk(p2);
    }

}

运行结果:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1010579.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号