JAVA项目 ----宠物小精灵12.1
pokemon 下面的 Pokemon
----------------------------------------------------------------------------------------------------------------------------
public abstract class Pokemon extends Item {/*** 攻击力*/protected int attack;/*** 防御力*/protected int defense;/*** 生命值*/protected int health;/*** 星级*/private int star = 1;//小精灵要自带装备private Equipment[] equipments = new Equipment[8];public void merge(Pokemon other){this.attack +=(other.attack >> 1); // >>除以2 <<乘以2this.defense += (other.defense >> 1);this.health += (other.health >> 1);star += 1;System.out.println("融合成功");System.out.println(getItemInformation());}@Overridepublic String getItemInformation() {return name + ":攻击=" + attack + " 防御=" + defense + " 生命值=" + health;}public Equipment changeEquipment(Equipment newEquipment){// 确定装备的位置int index;if(newEquipment instanceof Helmet){//头盔index = 0;} else if(newEquipment instanceof Armor){//铠甲index = 1;} else if(newEquipment instanceof Leggings){//护腿index = 2;} else if(newEquipment instanceof Shoe){//鞋子index = 3;} else if(newEquipment instanceof Weapon){//武器index = 4;} else if(newEquipment instanceof Necklace){//项链index = 5;} else if(newEquipment instanceof Ring){//戒指index = 6;} else {//手镯index = 7;}//旧装备 ---》 即即将要穿的装备Equipment old = equipments[index];if(old == null) {equipments[index] = newEquipment;}else { //和原来的装行比较。如果比原来的装备好的话就替换 否则就放到背包中来}return old;}//宠物小精灵和关卡没关系public Pokemon(String name) {super(name);}
}
定义Pokemon这一个abstract类 , 因为后面的小精灵类得继承这个Pokemon抽象类(其实说到底Pokemon也是继承的Item类,同样有构造方法)这里注意,融合的具体方法(融合之后属性提升百分之五十),还有小精灵自带装备。
>>除以2 <<乘以2 左移x2 右移/2
融合之后打印融合之后的信息--->
System.out.println(getItemInformation());
特别注意changeEquipment方法是怎么用的
1.这个方法的数据类型是自己定义的Equipment类型 又叫引用数据类型类似于C语言的指针
2.instanceof关键字的用法使用于自定义数据类型
3.确定装备的位置,然后再确定具体换的方法
4.JAVA中数组的定义 数据类型 [ ] 数组名 = new 数据类型[数组的长度];
Equipment[] equipments = new Equipment[8];
数组的用法(old数组怎么出来的)
Equipment old = equipments[index];
------------------------------------------------------------------------------------------------------------
package com.cyx.pokemon.item.pokemon;/*** 妙蛙种子*/
public class Bulbasaur extends Pokemon{public Bulbasaur() {super("妙蛙种子");this.attack = 60;this.defense = 40;this.health = 600;}
}package com.cyx.pokemon.item.pokemon;/*** 小火龙*/
public class Charmander extends Pokemon{public Charmander() {super("小火龙");this.attack = 100;this.defense = 80;this.health = 1000;}
}package com.cyx.pokemon.item.pokemon;/*** 比卡丘*/
public class Bikachu extends Pokemon{public Bikachu() {super("比卡丘");this.attack = 150;this.defense = 100;this.health = 2000;}
}package com.cyx.pokemon.item.pokemon;/*** 雷精灵*/
public class Jolteon extends Pokemon{public Jolteon() {super("雷精灵");this.attack = 80;this.defense = 60;this.health = 800;}
}
精灵属性
------------------------------------------------------------------------------------------------------------------
补充一下新老装备的比较办法 在Equipment抽象类中
在Pokemon抽象类中,既然是多个装备,是数组表示的就应该想到是
--------------------------------------------------------------------------------------------------------------------------
在Equipment抽象类中提供get方法,方便返回装备的属性 后面总的攻击是返回宠物的攻击+武器的攻击
public int getAttack() {return attack;}public int getDefense() {return defense;}public int getHealth() {return health;}
--------------------------------------------------------------------------------------------------------------------------
重新书写Pokemon抽象类的get方法,增强for循环和普通for循环
public int getAttack() {int totalAttack = attack;// for(int i=0;i<equipments.length;i++){
// Equipment equipment = equipments[i];
// }//增强for循环for(Equipment equipment : equipments) {totalAttack += equipment.getAttack();}return totalAttack;}public int getDefense() {int totalDefense = defense;for(Equipment equipment: equipments){if(equipment != null)totalDefense += equipment.getDefense();}return totalDefense;}public int getHealth() {int totalHealth = health;for(Equipment equipment: equipments){if(equipment != null)totalHealth += equipment.getHealth();}return totalHealth;} public int getAttack() {int totalAttack = attack;// for(int i=0;i<equipments.length;i++){
// Equipment equipment = equipments[i];
// }//增强for循环for(Equipment equipment : equipments) {totalAttack += equipment.getAttack();}return totalAttack;}public int getDefense() {int totalDefense = defense;for(Equipment equipment: equipments){if(equipment != null)totalDefense += equipment.getDefense();}return totalDefense;}public int getHealth() {int totalHealth = health;for(Equipment equipment: equipments){if(equipment != null)totalHealth += equipment.getHealth();}return totalHealth;} public int getAttack() {int totalAttack = attack;// for(int i=0;i<equipments.length;i++){
// Equipment equipment = equipments[i];
// }//增强for循环for(Equipment equipment : equipments) {totalAttack += equipment.getAttack();}return totalAttack;}public int getDefense() {int totalDefense = defense;for(Equipment equipment: equipments){if(equipment != null)totalDefense += equipment.getDefense();}return totalDefense;}public int getHealth() {int totalHealth = health;for(Equipment equipment: equipments){if(equipment != null)totalHealth += equipment.getHealth();}return totalHealth;}
这里的for循环也是使用了 创建数组的方法
---------------------------------------------------------------------------------------------------------------------------
public Item open(){ //引用数据类型 这个open方法操作是基于Item类// Random r = new Random();//[0,10);//int number = r.nextInt(10);int number = Tools.getRandomNumber(10); //引入包import com.cyx.pokemon.util.Tools; 才能Tools 类if(number == 0){ //比例 初级:中级:高级:究级 = 80:15:4:1int rate = Tools.getRandomNumber(100);if(rate == 0){return new Bikachu(); //Bikachu() 的 构造方法}else if(rate <= 4){//高级宠物小精灵 => 小火龙return new Charmander();} else if(rate <= 20){//中级宠物小精灵 => 雷精灵return new Jolteon();} else {//初级宠物小精灵return new Bulbasaur();}//宠物小精灵} else if (number <= 3){//获得装备 注意 随着关卡的升级,装备也会跟着升级 所以呢在new装备的时候要传入levelNumber// 比例 武器:项链:戒指:手镯:头盔:铠甲:护腿:鞋子 = 3:5:8:8:19:19:19:19int rate = Tools.getRandomNumber(100);if(rate < 3){//武器return new Weapon(levelNumber);} else if(rate < 8){//项链return new Necklace(levelNumber);} else if(rate < 16){//戒指return new Ring(levelNumber);} else if(rate < 24){//手镯return new Bracelet(levelNumber);} else if(rate < 43){//头盔return new Helmet(levelNumber);} else if(rate < 62){//铠甲return new Armor(levelNumber);} else if(rate < 81){//护腿return new Leggings(levelNumber);} else {//鞋子return new Shoe(levelNumber);}} else {//获得药品return new HP(levelNumber, 10);}}
1.首先是比例问题,这个提前要设计好,每个宝箱里面东西的比例
2.例:返回的 Bikachu( ); 是Bikachu类里面的构造方法,说到底返回的还是一个方法,但是要注意的是返回值方法是根据你的”方法“的数据类型决定的
我需要返回什么东西再决定我的数据类型是什么
比如我的Equipment方法的返回值最终返回的也是”old“
3.返回的同时也要注意返回的时候返回值的构造方法里面的参数列表
if(rate == 0){return new Bikachu(); //Bikachu() 的 构造方法
if(rate < 3){//武器return new Weapon(levelNumber);
JAVA项目 ----宠物小精灵12.1相关推荐
- centos服务器 java 项目new Date()相差12小时
环境:centos 7.x 项目语言:java 项目中使用 new Date()方法发现取值时间与当前时间相差12个小时左右,第一反应是服务器的时间不正确.在服务器调用命令 date [root@lo ...
- GitHub上最牛逼的10个Java项目,号称Star收割机,Dubbo只能排 12
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「阿飞的博客」 1. CS-Notes ...
- 立足GitHub学编程:13个不容错过的Java项目
今天我们将整理一大波干货满满的优秀Java项目. GitHub可谓一座程序开发的大宝库,有些项目值得fork,有些则能帮助我们改进自有代码或者学习编程技能.无论如何,开发工作当中我们几乎不可能绕得开G ...
- Intellij Idea创建一个简单的java项目
2016年11月12日 我即将要离开象牙塔(校园),踏入社会,想想未来我是某个公司的一个程序员,再对比一下小时的梦想,好像出入挺大的.今天我不得不为即将的工作准备,一个java开发工程师,但是我现在是 ...
- Java 项目JDBC 链接数据库中会出现的错误
1.出现的地方 1 package com.jdbc; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 impor ...
- Java长存!12个Java长久占居主要地位的原因
我们很容易就会遗忘那些曾经在猿群中大热而又被各种新技术掩盖直至堙灭的技术的价值.就拿COBOL这个老猿们当年所用的神器来说,就跟条死鱼一样被现代猿基本这么形容:没价值,腥臭,过时了,对你没好处.Jav ...
- Java 项目权威排名:Spring生态抢镜,Gradle战胜Maven排第2,点击查看更多...
作者 | 爱科学的卫斯理关注 来源 | https://www.toutiao.com/i6908912198412681732/ Spring生态 Java项目权威Top200排名-结果出乎你意料 ...
- java程序能转变为javafx_如何将intellij中的普通Java项目转换为JavaFx项目
小编典典 没有什么可以转换的. 我认为"正常" Java项目和JavaFX项目之间在Idea中没有任何区别. 当然,在Idea 12.x +中,可以使用向导创建新的JavaFX项目 ...
- maven3常用命令、java项目搭建、web项目搭建
------------------------------maven3常用命令--------------------------- 1.常用命令 1)创建一个Project mvn archety ...
最新文章
- jquery总结06-动画事件03-淡入淡出效果
- 深度学习核心技术精讲100篇(五十九)-多业务融合推荐策略实战应用
- JavaScript.The.Good.Parts阅读笔记(一)假值与===运算符
- RabbitMQ应对不同阶段丢失消息的处理方案
- 宿舍管理系统设计分析图
- vscode新建html中文乱码,vscode中html中文乱码 怎么办
- 用C#+Selenium+ChromeDriver 爬取网页,完美模拟真实的用户浏览行为
- extjs 日期不显示
- 计算机txt公式,完整word版本积分公式
- 数据分类分级指南分级方法
- 常用Excel函数使用示例(分列、VLOOKUP、COUNTIF、AND、绝对引用等)
- 如何快速切换各种pip源
- 变频无线发射机系统电路设计详解
- 帐套文件(*.mdf)无法复制,拷贝出现数据错误(循环冗余检查)帐套文件(*.mdf)无法复制,拷贝出现数据错误(循环冗余检查),sql附加823错误
- nanopi 2 fire s5p4418 初次体验 (1)uboot,linux kernel编译
- SpringBoot中Redis报错:NOAUTH Authentication required.; nested exception is redis.clients.jedis.exceptio
- 微信小程序weui的使用
- Sass文件的导入import和Partials
- 一文看懂半监督学习(Semi-supervised Learning)和自监督学习(Self-Supervised Learning)
- 量子计算机能用在手机上吗,中国“量子芯片”技术再次突破!或用于手机生产,网友:人才辈出...
热门文章
- Win7,CentOS 6.4双系统 硬盘安装
- JAVA六大设计原则 和 23种设计模式
- STM32F411RE Nucleo笔记-按键控制PWM占空比
- 【数模系列】02_三大相关系数+Python代码
- 铁大部分风景图片及文字描述。。。。
- photoshop使用笔记-制作古代印章
- EasyExcel报错空指针异常
- 学习:浏览器设置Burpsuite代理后打不开网页
- 里面可以写名字的爱心代码(html)
- hotmail服务器密码已修改密码,修改过密码的hotmail无法在mac和iphone上登陆和收取邮件...