随笔 - 95,  文章 - 0,  评论 - 0,  阅读 - 14253

LOL有很多英雄,比如盲僧,团战可以输,提莫必须死,盖伦,琴女

所有这些英雄,都有一些共同的状态
比如,他们都有名字,hp,护甲,移动速度等等
这样我们就可以设计一种东西,叫做类,代表英雄这样一种事物
类: 英雄(Hero)
状态: 名字, 血量,护甲,移动速度

英雄

血量

护甲

移动速度

 

public class Hero {
     
    String name; //姓名
     
    float hp; //血量
     
    float armor; //护甲
     
    int moveSpeed; //移动速度
}
 
 


 
类就像一个模板,根据这样一个模板,可以创建一个个的具体的英雄
一个个具体的英雄,就叫一个个的对象
new Hero() 就是java中创建一个英雄对象的意思

 

 

 

 

 

 
public class Hero {
     
    String name; //姓名
     
    float hp; //血量
     
    float armor; //护甲
     
    int moveSpeed; //移动速度
     
    public static void main(String[] args) {
        Hero garen =  new Hero();
        garen.name = "盖伦";
        garen.hp = 616.28f;
        garen.armor = 27.536f;
        garen.moveSpeed = 350;
         
        Hero teemo =  new Hero();
        teemo.name = "提莫";
        teemo.hp = 383f;
        teemo.armor = 14f;
        teemo.moveSpeed = 330;
    }  
     
}
 
设计出物品这种类
类名:Item
物品有如下属性:
名字 name 类型是字符串String
价格 price 类型是整型 int

创建(实例化)3件具体物品
名称 价格
血瓶 50
草鞋 300
长剑 350
 

public class Item {
String name;// 名字
int price;// 价格

public static void main(String[] args) {
Item healthStone = new Item();
healthStone.name="小血瓶";
healthStone.price=50;
Item yataghan = new Item();
yataghan .name="长剑";
yataghan .price=300;
Item strawSandals = new Item();
strawSandals.name="草鞋";
strawSandals.price=350;
}
}

 

 

 

一个英雄有姓名,血量,护甲等等状态
这些状态就叫做一个类的属性

属性的类型可以是基本类型,比如int整数,float 浮点数
也可以是类类型,比如String 字符串

属性名称一般来说,都是小写
比如name
如果有多个单词组成,后面的单词的第一个字母大写
比如 moveSpeed
属性也是变量,所以需要满足 变量的命名规则

一个英雄可以有名称,血量,护甲,移动速度,还有 其他你想到的,作为新的属性,加入到英雄上面

比如
送了多少次
杀人次数
助攻次数
金钱
补刀数
攻击速度
杀人后说的话
被杀后说的话
。。。

 

        String name;
        float blood;
        float moveSpeed;
        float armor; //护甲
        int kill;//击杀
        int dead;
        int support;
        int mendacity;
        float attackSpeed;
        String killOthers;
        String killedByOthers;

 

 

在LOL中,一个英雄可以做很多事情,比如超神,超鬼,坑队友
能做什么在类里面就叫做方法

 

比如队友残血正在逃跑,你过去把路给别人挡住了,导致他被杀掉。 这就是坑队友
每个英雄。。。。都可以
所以为Hero这个类,设计一个方法: keng

 

 

public class Hero {
    String name; //姓名
      
    float hp; //血量
      
    float armor; //护甲
      
    int moveSpeed; //移动速度
 
    //坑队友
    void keng(){
        System.out.println("坑队友!");
    }
 
有的方法是有返回类型的
比如方法:
 
float getArmor(){
return armor;
}
这个方法是用来获取一个英雄有多少护甲的,返回类型是float
有的方法不需要返回值,这个时候就把返回类型设置为void,表示该方法不返回任何值
比如方法 "坑队友"
void keng(){
System.out.println("坑队友!");
}

public class Hero {
String name; //姓名

float hp; //血量

float armor; //护甲

int moveSpeed; //移动速度

//获取护甲值
float getArmor(){
return armor;
}

//坑队友
void keng(){
System.out.println("坑队友!");
}

}

 

英雄在一些特定情况下,可以增加移动速度
这样我们就通过addSpeed这个方法增加移动速度

 
void addSpeed(int speed){
//在原来的基础上增加移动速度
moveSpeed = moveSpeed + speed;
}
int speed 叫做方法的参数
给盖伦增加100的移动速度:
 
Hero garen = new Hero();
garen.name = "盖伦";
garen.moveSpeed = 350;
garen.addSpeed(100);

public class Hero {
String name; //姓名

float hp; //血量

float armor; //护甲

int moveSpeed; //移动速度

//坑队友
void keng(){
System.out.println("坑队友!");
}

//获取护甲值
float getArmor(){
return armor;
}

//增加移动速度
void addSpeed(int speed){
//在原来的基础上增加移动速度
moveSpeed = moveSpeed + speed;
}

public static void main(String[] args) {
Hero garen = new Hero();
garen.name = "盖伦";
garen.moveSpeed = 350;
garen.addSpeed(100);

}

}方法是一个类的动作行为,所以一般都是以动词开头的,比如 keng ...
如果有多个单词,后面的每个单词的第一个字母使用大写
比如 addSpeed

为英雄类Hero设计几个新的方法:
1. 超神 legendary(),无参数,无返回类型
2. 获取当前的血量 getHp(), 无参数,有float类型的返回值
3. 回血 recovery(float blood), 有参数 float类型参数 blood表示本次恢复的血量,无返回类型

 

import com.sun.xml.internal.bind.v2.runtime.output.StAXExStreamWriterOutput;

/*
类和对象
类是对象的模板;对象是类的实例
*/
public class Hero {
String name;//姓名
String title;//英雄的称号或者头衔 如盖伦的称号是德玛西亚之力
float hp;//血量
float armor;//护甲
int moveSpeed;//移动速度
int killed;//死亡数
int kill;//击杀数
int support;//助攻
int money;//金币
int lastHit;//补刀数
int attackSpeed;//攻速
String wordAfterKill;//杀人后说的话
String getWordAfterKill;//被杀后说的话

void dance(){
System.out.println(name + "在跳舞.......");
}

//获取护甲
float getArmor(){
return armor;
}

//增加移速
void addSpeed(int speed){
moveSpeed = moveSpeed + speed;
}

//超神
void legendary(){
System.out.println(title+"已经超神!!!");
}
//获取血量
float getHp(){
System.out.println(title+"("+name+"):生命值"+hp);
return hp;
}
//回血
void recovery(float blood){
hp = hp + blood;
System.out.println(name + "回血:"+ blood);
}
//信号:发出问号
void noctieMissing(){
System.out.println(title+"("+name+"):示意敌人已经不见踪影。");
}
//信号:正在路上
void noctieIsComming(){
System.out.println(title+"("+name+"):正在路上。");
}


public static void main(String[] args) {
//new一个类的实例,即new一个对象
Hero garen = new Hero();
garen.name = "盖伦";
garen.title = "德玛西亚之力";
garen.hp = 616;
garen.armor = 27;
garen.moveSpeed = 350;
garen.addSpeed(100);
garen.legendary();
garen.getHp();
garen.recovery(4396);
garen.noctieIsComming();
garen.noctieMissing();

Hero temo = new Hero();
temo.name = "提莫";
temo.hp = 383;
temo.armor = 14;
temo.moveSpeed = 330;
}
}

posted on   天涯何  阅读(105)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示