「创建一个武器类java」可以创造武器的游戏
今天给各位分享创建一个武器类java的知识,其中也会对可以创造武器的游戏进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java程序怎么在一个文件里,创建多个类。
- 2、Java如何创建一个类?
- 3、Android studio怎么创建一个Java类文件
- 4、java当中怪物类如何引用武器类打怪兽类
- 5、myeclipse 中怎么样新建一个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的信息别忘了在本站进行查找喔。
发布于:2022-12-21,除非注明,否则均为
原创文章,转载请注明出处。