JAVA面向对象综合训练(文字游戏入门版1.0)第六节

1.文字版格斗游戏

文字游戏入门1.0版

项目内容:

格斗游戏,每个游戏角色的姓名,血量,都不相同,在选定人物的时候(new对象的时候),这些信息就应该被确定下来

如:人物:隔壁老王 血量为250            姓名为:冻鱼战士 血量:360

比方说我们写的是回合制的游戏,你打我一下,我打你一下

隔壁老王举起拳头打了鸠摩智一下,造成了XX点伤害,冻鱼战士还剩下XXX点血。

冻鱼战士举起拳头打了隔壁老师一下,造成了XX点伤害,乔峰还剩下XXX点血

隔壁老王举起拳头打了鸠摩智一下,造成了XX点伤害,冻鱼战士还剩下XXX点血。

冻鱼战士举起拳头打了隔壁老师一下,造成了XX点伤害,乔峰还剩下XXX点血

最后判断谁的血量先为0,那么咱们就要做一个提示 XXX KO XXX

项目思路-功能类

我们按照例子中举例来说首先我们要知道,我们需要一个类,这个类要包含人物的名称,人物的写量,空参加全参还有成员变量的get方法还set方法,我们要知道这个类要实习什么功能呢?当游戏中的人物有攻击别人的行为的时候,我们所定义的血量传尽量,它这个血量是被打的那个人物,再通过修改局部变量实现修改的是传递的参数,从而实现被打一方掉血的功能,代码如下:

package com.itheima.test1;

import java.util.Random;

public class Role {
    //角色姓名
    private String name;
    private int blood;

    //空参
    public Role() {
    }

    //全参
    public Role(String name, int blood) {
        this.name = name;
        this.blood = blood;
    }
    //还有一个私有化的成员变量get和set

    public String getName() {
        return name;
    }

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

    public int getBlood() {
        return blood;
    }

    public void setBlood(int blood) {
        this.blood = blood;
    }
    //在游戏当中的人物是有攻击的行为“打别人”
    //定义一个方法,用于攻击别人
    //思考:谁攻击谁?
    //我们在测试类创建对象的时候,肯定是写一个Role r1 =new Role();
    //我们肯定还要创建第二个角色对象,在攻击的时候我们应该去用r1去攻击r2
    //此时我们就要用r1去调用一个攻击的方法,让后把r2给传递进去,所以说通过这个方法我们从语法
    //中来讲,方法的调用者去攻击参数
    //r1.攻击(r2)
    //方法调用攻击参数,参数里面是挨揍的那个人
    public void attack(Role role){
        //计算造成的伤害1—20
        Random r  = new Random();
        int hurt = r.nextInt(20)+1;

        int remainBlood =role.getBlood()-hurt;//剩余血量
        //对剩余血量做一个判断,如果为负数的情况就修改为0
        remainBlood = remainBlood<0?0:remainBlood;
        //修改一下挨揍人的血量
        role.setBlood(remainBlood);
        //this就是表示方法的调用者
        System.out.println(this.getName()+"举起拳头,打了"+role.getName()+"一下,"+
                "造成了"+hurt+"点伤害,"+role.getName()+"还剩下了"+remainBlood+"点血量");


    }
}
项目思路-测试类

测试类的主要作用还是测试代码功能性能,我们实例化两个对象,因为我们实现的是一个回合制的小游戏,“你打他一下,它打你一下",伤害是随机生成的,我们只是说把”挨打的对象“传递过去后,功能类随机创建一个伤害值,我们用挨打的对象减去这个伤害值后,重新赋值给”挨打的对象“,还是为了修改的是局部变量我们就是普通的赋值,role.setBlood找到的是刚刚传过来的那个值,并不说成员变量,再就是我们要进行一个循环,只要有一方它是不等于0的,换句话说你只有还有一滴血也得继续战斗,只有等于0得情况下,while循环才会停止,我们就是用break跳出这个循环

package com.itheima.test1;

public class GemeTest {
    public static void main(String[] args) {
        //1.创建第一个角色
        Role r1 = new Role("隔壁老王",100);
        //2.创建第二个角色
        Role r2 = new Role("冻鱼战士",100);
        //3.开始格斗 回合制游戏 你打我一下,我打你一下
        while(true){
            //r1开始攻击r2
            r1.attack(r2);
            if(r2.getBlood()==0){
                System.out.println(r1.getName()+"K.O了"+r2.getName());
                break;
            }
            //r2去攻击r1
            r2.attack(r1);
            if(r1.getBlood()==0){
                System.out.println(r2.getName()+"K.O了"+r1.getName());
                break;
            }
        }
    }
}
项目运行结果: 

终究还是败给了隔壁老王啊!

隔壁老王举起拳头,打了冻鱼战士一下,造成了5点伤害,冻鱼战士还剩下了95点血量
冻鱼战士举起拳头,打了隔壁老王一下,造成了8点伤害,隔壁老王还剩下了92点血量
隔壁老王举起拳头,打了冻鱼战士一下,造成了13点伤害,冻鱼战士还剩下了82点血量
冻鱼战士举起拳头,打了隔壁老王一下,造成了7点伤害,隔壁老王还剩下了85点血量
隔壁老王举起拳头,打了冻鱼战士一下,造成了6点伤害,冻鱼战士还剩下了76点血量
冻鱼战士举起拳头,打了隔壁老王一下,造成了8点伤害,隔壁老王还剩下了77点血量
隔壁老王举起拳头,打了冻鱼战士一下,造成了17点伤害,冻鱼战士还剩下了59点血量
冻鱼战士举起拳头,打了隔壁老王一下,造成了13点伤害,隔壁老王还剩下了64点血量
隔壁老王举起拳头,打了冻鱼战士一下,造成了14点伤害,冻鱼战士还剩下了45点血量
冻鱼战士举起拳头,打了隔壁老王一下,造成了5点伤害,隔壁老王还剩下了59点血量
隔壁老王举起拳头,打了冻鱼战士一下,造成了9点伤害,冻鱼战士还剩下了36点血量
冻鱼战士举起拳头,打了隔壁老王一下,造成了14点伤害,隔壁老王还剩下了45点血量
隔壁老王举起拳头,打了冻鱼战士一下,造成了15点伤害,冻鱼战士还剩下了21点血量
冻鱼战士举起拳头,打了隔壁老王一下,造成了5点伤害,隔壁老王还剩下了40点血量
隔壁老王举起拳头,打了冻鱼战士一下,造成了17点伤害,冻鱼战士还剩下了4点血量
冻鱼战士举起拳头,打了隔壁老王一下,造成了11点伤害,隔壁老王还剩下了29点血量
隔壁老王举起拳头,打了冻鱼战士一下,造成了11点伤害,冻鱼战士还剩下了0点血量
隔壁老王K.O了冻鱼战士

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值