「创建一个武器类java」可以创造武器的游戏

博主:adminadmin 2022-12-21 10:42:10 70

今天给各位分享创建一个武器类java的知识,其中也会对可以创造武器的游戏进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java程序怎么在一个文件里,创建多个类。

直接给你源码吧!

/**

 * 测试类

 * @author xjh

 *

 */

public class Test {

public static void main(String[] args) {

//创建“英雄”对象

Hero hero = new Hero("李小侠", 300);

System.out.println(hero);

//创建“武器”对象

Weapon weapon = new Weapon("死神魔刀", 12);

System.out.println(weapon);

//创建“怪物”对象

Monster monster = new Monster("小龟", 300, "潜水型");

System.out.println(monster);

}

}

/**

 * 英雄类

 * @author xjh

 *

 */

class Hero

{

private String name; //姓名

private int life;  //生命值

public Hero(){}

public Hero(String name, int life){

this.name=name;

this.life=life;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getLife() {

return life;

}

public void setLife(int life) {

this.life = life;

}

@Override

public String toString() {

return "我是英雄,我的基本信息如下:\r\n" +"姓名:"+ name +

", 生命值:" + life;

}

}

/**

 * 武器类

 * @author xjh

 *

 */

class Weapon{

private String name; //武器名

private int attack;  //攻击力

public Weapon() {

}

public Weapon(String name, int attack) {

this.name = name;

this.attack = attack;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAttack() {

return attack;

}

public void setAttack(int attack) {

this.attack = attack;

}

@Override

public String toString() {

return "我是武器,我的基本信息如下:\r\n" +"武器名:"+ name +

", 攻击力:" + attack;

}

}

/**

 * 怪物类

 * @author xjh

 *

 */

class Monster

{

private String name; //怪物名

private int life;  //生命值

private String type; //类型

public Monster(){}

public Monster(String name, int life, String type){

this.name=name;

this.life=life;

this.type=type;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getLife() {

return life;

}

public void setLife(int life) {

this.life = life;

}

public String getType() {

return type;

}

public void setType(String type) {

this.type = type;

}

@Override

public String toString() {

return "我是怪物,我的基本信息如下:\r\n" +"姓名:"+ name +

", 生命值:" + life + ", 类型:" + type;

}

}

Java如何创建一个类?

定义一个类,class A={},然后创建这个类对象,A a = new A();有没有参数看你类定义的构造函数; 例代码如下:

class TestInner{

public static void main(String [] args)

{

Outer outer = new Outer();

Outer.Inner inner = outer.new Inner();

}

}

在内部类(Inner Class),可以随意的访问外部类的成员,这可让我们更好地组织管理我们的代码,增强代码的可读性。

Android studio怎么创建一个Java类文件

首先在Android studio导入一个Android的项目,然后进入到项目中一个activity的文件中的文件夹。

选中该文件夹之后,进行右键,弹出下拉的菜单中进行点击“new”的选项。

然后就会弹出下一级菜单中,进行点击菜单中的“file”的选项。

就需要输入框中输入创建的文件名,创建Java的类,所以直接输入test.java即可,因这个需要Android studio第一个版本的。

因这个项目已添加到git的跟踪的状态的,所以会提示这个信息提示信息,直接点击“no”。这样的话Java的类在该文件下创建成功了。

java当中怪物类如何引用武器类打怪兽类

这是个挺有趣的问题,我们可以一起来分析下:

1.这里面只有两个类,武器类和怪兽类;而动作只有一个,打。

2.面向对象的思想是为类分配职责,那么打这个动作到底分配给谁?

很明显应该分配给怪兽类,因为打这个动作涉及的大部分数据都是怪兽类包含的,从常识上来讲分配给武器类感觉怪怪的...

3.从上面可以想象到会出现这样的情况monster.hit(otherMonster),这里monster是打,otherMonster是被打。hit方法里面需要将otherMonster的信息获取出来,然后计算打的过程...这样会把otherMonster的数据封装破坏掉,如果扩展otherMonster,显然你必需要在hit方法里判断otherMonster是哪种类型。但是monster.hit(otherMonster)又是符合对象的思维的。那么问题出在哪里?

问题出在打是一个动词,打这个方法分配给了一个对象,但作用的是另一个对象,因此而破坏了数据封装。如果打分配给一个对象,同时作用的是这个对象,那么问题就解决了。

怎样把打分配给一个对象,同时作用的是这个对象呢?答案是把打转换成被打,于是就成了otherMonster.hit(),在monster需要去打otherMonster时,调用otherMonster.hit()就可以了。

4.武器类还没有被引入进来,明显武器不会自动攻击,他必须装备在monster上,我们可以把weapon作为monster的成员。

5.武器类可以被使用在打这个动作上,于是我们为hit方法增加武器参数,于是就变成otherMonster.hit(weapon),这个方法是在monster内部调用的,weapon也是monster的成员,没有破坏封装性。

6.至此,你提的这个问题就是这样了...

class Monster{

    private Weapon weapon;

    

    public void hit(Weapon weapon){

        //dosometing.

    }

    

    public Weapon getWeapon(){

        return weapon;

    }

    

    public void setWeapon(Weapon weapon){

        this.weapon = weapon;

    }

}

是不是感觉怪怪的...我们可以继续来探讨这个问题:

为什么感觉怪怪的?是因为这个问题太简化了,简化到我们并不知道Monster被打之后到底发生什么。

感觉这个很像个游戏,大部分游戏都是基于hitpoint(血量)的,为了使这个问题带感一些,我们给Monster一个int类型的hitPoint。

同时给武器类赋予一个attackPoint,在Monster被打的时候扣除attackPoint数量的hitPoint。

那么问题来了,hit方法里需要获取Weapon中的attackPoint,这又会把Weapon的数据封装破坏掉...

为此我们需要给Monster一个直接扣除hitPoint的方法damage(int attackPoint),让Weapon能够调用damage方法把自身的attackPoint传递进来。

Weapon本身我们可以分配一个attack(Monster monster)方法来给Monster把自身传递进来,于是程序就变成了:

class Monster{

    private Weapon weapon;

    

    private int hitPoint;

    

    public void hit(Weapon weapon){

        weapon.attack(this);

    }

    

    public void damage(int attackPoint){

        this.hitPoint -= attackPoint;

    }

    

    public Weapon getWeapon(){

        return weapon;

    }

    

    public void setWeapon(Weapon weapon){

        this.weapon = weapon;

    }

}

class Weapon{

    private int attackPoint;

    

    public void attack(Monster monster){

        monster.damage(attackPoint);

    }

}

也许有人会问,hit里面调用weapon.attack,attack里面又调用monster.damage,那还不如在hit里直接获取weapon的attackPoint,然后直接扣除hitPoint。

为什么要这么麻烦呢?实际上这里Weapon是一个策略(Strategy模式),由策略来决定对对象到底采取什么样的作用。这里感觉麻烦也是因为问题太简单了。

再带感一点,我们参考网游的做法,Monster本身有一定的躲避和格挡率,同时某些Weapon可能会有暴击率:

此时我们需要在hit方法里先计算是否躲避或者格挡,如果都不成功,才调用weapon.attack(this).在attack方法里,需要先计算是否暴击,如果暴击,则把attackPoint乘以2。于是又变成了

class Monster{

    private Weapon weapon;

    

    private int hitPoint;

    

    private int dodge;//100%比例

    

    private int block;//100%比例

    

    public void hit(Weapon weapon){

        if (isDodge()){

            return;

        }

        if (isBlock){

            return;

        }

        weapon.attack(this);

    }

    

    public void damage(int attackPoint){

        this.hitPoint -= attackPoint;

    }

    

    public boolean isDodge(){

        //COMPUTE IS DODGE?

    }

    

    public boolean isBlock(){

        //COMPUTE IS BLOCK?

    }

    

    public Weapon getWeapon(){

        return weapon;

    }

    

    public void setWeapon(Weapon weapon){

        this.weapon = weapon;

    }

}

class Weapon{

    private int attackPoint;

    

    private int critical;//100%比例

    

    public void attack(Monster monster){

        int actualAttackPoint = isCritical()?attackPoint*2:attackPoint;

        monster.damage(actualAttackPoint);

    }

    

    public boolean isCritical(){

        //COMPUTE IS CRITICAL

    }

}

这样就不觉得麻烦了...

最后应该把monster抽象成接口,因为可能不只是monster可以被武器打哦

你还可以后面再加入怎么判断Monster挂了,通过观察者模式来通知打人者,还有其他各种各样带感的东西。

祝你好运!

myeclipse 中怎么样新建一个java的类的,详细的步骤是什么?谢谢!

myeclipse中新建Java类步骤如下:

1、点击左上角“File”,鼠标移到“new”,点击“Java Project”

2、在“Project name”处填入文件名称,也就是项目名

3、找到刚才新建的项目,双击打开

4、在“src”右击,选择“new”子菜单里面的“Class”

5、给新建的Java类取名,例如Hello

6、点击下方的Finish

7、可以看到新的Hello类已经建好

8、去本地磁盘检验一下,看“Hello”类是否已建好,下图就说明成功啦

扩展资料:

java类的基本结构

属性:对象数据的描述

方法:对象的行为

构造方法:用于实例化对象

内部类:在类中声明的类(inner class)

块:分静态块与实例块

类的声明:(访问权限修饰符public.default(可忽略不写,为默认))(修饰符final.abstract.synchronized)class  类名{    类体   }

类的作用:类就是一个模板,定义多个对象共同的属性和方法     如:学生类(张三,李四) 手机类(华为.oppo)

创建一个武器类java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于可以创造武器的游戏、创建一个武器类java的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-21,除非注明,否则均为首码项目网原创文章,转载请注明出处。