role接口:角色攻击跟修炼

  public interface Role {int attack();//表示攻击,返回值表示对敌人的伤害void practise();// 表示练习。练习之后对敌人的伤害会增加
}

MagicStick 接口:法师用的法杖

public interface MagicStick {int fire();
}

Weapon 接口:战士适用的武器

public interface Weapon {void setSoldier(Soldier s);// 该方法表示设置武器的使用者int fire(); //该方法的返回值表示战士使用该武器时,对敌人的伤害值
}

法师所使用的两种法杖类

public class GreenStick implements MagicStick {//获取当前时间Calendar calendar = Calendar.getInstance();//获取当前月份int month = calendar.get(Calendar.MONTH)+1;/***   判断月份是否为夏天*      如果为夏天(6-8)则返回:2;*      正常时间返回:1*/public int fire() {if(month >=6 && month <=8){return 2;}else {return 1;}}
public class BlackStick implements MagicStick {Calendar calendar = Calendar.getInstance();int month = calendar.get(Calendar.MONTH)+1;@Overridepublic int fire() {if(month % 2 == 0){return 2;}else {return 1;}}

法师类:法师的一些基本信息

public class Magicer extends NamedRole {private MagicStick stick;private int level = 0;/*** 返回的伤害量*      伤害量为等级*5*/@Overridepublic int attack() {return level * 5;}@Overridepublic void practise() {//如果法师的stick为空,则法师等级+1//如果不为空,则等级为:原本等级+1+stick属性中fire方法的返回值if(stick == null){level++;}else {level = level + 1 + stick.fire();}}public Magicer(String name, MagicStick stick, int level) {super(name);this.stick = stick;this.level = level;}public Magicer(int age, MagicStick stick, int level) {super(age);this.stick = stick;this.level = level;}public Magicer(String name, int age, int level) {super(name, age);this.level = level;}public Magicer(String name) {super(name);}public Magicer(int age) {super(age);}public Magicer(String name, int age) {super(name, age);}public MagicStick getStick() {return stick;}public void setStick(MagicStick stick) {this.stick = stick;}public int getLevel() {return level;}public void setLevel(int level) {this.level = level;}
}

战士的武器类1

public class Bolo implements Weapon {private Soldier s;private int age;@Overridepublic void setSoldier(Soldier s) {this.s = s;}@Overridepublic int fire() {s = new Soldier(age);if(s.getAge()>=18){return 100;}else {return 50;}}public Soldier getS() {return s;}public void setS(Soldier s) {this.s = s;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

战士的武器类2

public class Pike implements Weapon {private String name;private Soldier s;@Overridepublic void setSoldier(Soldier s) {this.s = s;}@Overridepublic int fire() {s = new Soldier(name);if(s.getName() == name){return 1000;}else{return 25;}}public Pike(String name, Soldier s) {this.name = name;this.s = s;}public Pike(Soldier s) {this.s = s;}public Pike(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Soldier getS() {return s;}public void setS(Soldier s) {this.s = s;}

战士类:用来存放战士的基本信息

public class Soldier extends NamedRole {private int hurt;private Weapon w;@Overridepublic int attack() {return hurt+w.fire();}@Overridepublic void practise() {hurt += 10;}public Weapon getW() {return w;}public void setW(Weapon w) {this.w = w;}public Soldier(String name, Weapon w) {super(name);this.w = w;}public Soldier(int age, Weapon w) {super(age);this.w = w;}public Soldier(String name, int age, Weapon w) {super(name, age);this.w = w;}public Soldier(int age, int hurt, Weapon w) {super(age);this.hurt = hurt;this.w = w;}public Soldier(String name, int age, int hurt, Weapon w) {super(name, age);this.hurt = hurt;this.w = w;}public Soldier(String name, int age, int hurt) {super(name, age);this.hurt = hurt;}public Soldier(String name) {super(name);}public Soldier(int age) {super(age);}public Soldier(String name, int age) {super(name, age);}public int getHurt() {return hurt;}public void setHurt(int hurt) {this.hurt = hurt;}

NamedRole 类:两种角色的父类

public abstract class NamedRole implements Role {private String name;//角色名private int age;//年龄/*** 父类的两个方法* @return*/@Overridepublic int attack() {return 0;}@Overridepublic void practise() {}public NamedRole(String name) {this.name = name;}public NamedRole(int age) {this.age = age;}public NamedRole(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}

测试类;

  public static void main(String[] args) {//实例化法师武器MagicStick magicStick1 = new GreenStick();MagicStick magicStick2 = new BlackStick();//添加法师数据Magicer magicer1 = new Magicer("基拉法师", 21, 10);Magicer magicer2 = new Magicer("光鳞龙", 15, 5);//将法杖给予法师magicer1.setStick(magicStick1);magicer2.setStick(magicStick2);//打印法师初始信息和伤害System.out.println(magicer1.getName() + "\t" + "年龄:" + magicer1.getAge() + "\t" + "初始攻击伤害:" + magicer1.attack());System.out.println(magicer2.getName() + "\t" + "年龄:" + magicer2.getAge() + "\t" + "初始攻击伤害:" + magicer2.attack());//法师修炼,调用Role接口中practise();magicer1.practise();magicer2.practise();//打印修炼后的信息和伤害System.out.println(magicer1.getName() + "\t" + "年龄:" + magicer1.getAge() + "\t" + "修炼后的攻击伤害:" + magicer1.attack());System.out.println(magicer2.getName() + "\t" + "年龄:" + magicer2.getAge() + "\t" + "修炼后的攻击伤害:" + magicer2.attack());System.out.println("-----------------------------------------------------------------");//添加战士信息Soldier soldier1 = new Soldier("Ziph", 21, 200);Soldier soldier2 = new Soldier("狂战士", 30, 150);//实例化武器Weapon weapon1 = new Bolo();Weapon weapon2 = new Pike("Ziph");//将武器给予战士soldier1.setW(weapon1);soldier1.setW(weapon2);soldier2.setW(weapon1);soldier2.setW(weapon2);//展示信息System.out.println(soldier1.getName() + "\t" + "年龄:" + soldier1.getAge() + "\t" + "佩戴了大刀和矛之后的攻击伤害:" + soldier1.attack());System.out.println(soldier2.getName() + "\t" + "年龄:" + soldier2.getAge() + "\t" + "佩戴了大刀和矛之后的攻击伤害:" + soldier2.attack());//修炼soldier1.practise();soldier2.practise();//修炼成果System.out.println(soldier1.getName() + "\t" + "年龄:" + soldier1.getAge() + "\t" + "佩戴了大刀和矛,加以修炼后的攻击伤害:" + soldier1.attack());System.out.println(soldier2.getName() + "\t" + "年龄:" + soldier2.getAge() + "\t" + "佩戴了大刀和矛,加以修炼后的攻击伤害:" + soldier2.attack());}

用接口,写一个简单的小游戏相关推荐

  1. c语言写一个简单的小游戏-推箱子

    在学习C语言之后,写了一个简单的小游戏来锻炼自己的代码以及C语言知识的掌握能力. 推箱子作为手机上最常见的简单游戏,其代码也相对简单,想法也比较简单,下面为其代码和运行图. /************ ...

  2. 一个简单的c 游戏编程语言,编程达人 c语言写一个简单的小游戏-推箱子

    在学习C语言之后,写了一个简单的小游戏来锻炼自己的代码以及C语言知识的掌握能力. 推箱子作为手机上最常见的简单游戏,其代码也相对简单,想法也比较简单,下面为其代码和运行图. /************ ...

  3. 用C语言写一个简单的小游戏——猜数字

    我们该如何设计这个程序? 1.首先应该打印一个菜单,让玩家选择玩游戏或者退出游戏 2.当玩家选择玩游戏,我们让电脑生成一个1~100的随机数,让玩家去猜 3.如果玩家猜的数比电脑生成的数大,我们提示猜 ...

  4. unity编写一个简单的小游戏

    unity编写一个简单的小游戏 简易fly bird的制作 关于flybird 场景的搭建和素材的导入 使用素材搭建game和scene 制作柱体 bird的script column的sprite ...

  5. 【牛客刷题】上手用C语言写一个三子棋小游戏超详解哦(电脑优化)

    作者:[南航科院小张 南航科院小张的博客 专栏:从c语言的入门到进阶 学习知识不只是要懂,还要会用:想要找到好的工作,这里给大家介绍一件可以斩获诸多大厂offer的利器–牛客网 点击免费注册和我一起开 ...

  6. 你写一个web网页小游戏

    写一个 web 网页小游戏需要以下几个步骤: 选择一种编程语言,常用的有 HTML.CSS.JavaScript 和 Python. 使用编辑器创建一个 HTML 文件,这个文件将是你的网页的基础. ...

  7. 用c++帮我写一个闯关小游戏

    很高兴为您写一个闯关小游戏!这个游戏将分为3个关卡,每个关卡都有不同的挑战.第一关的挑战是收集3个物品,这些物品分别在不同的位置,你必须找到它们才能过关.第二关的挑战是找到一个宝藏,你必须通过解决难题 ...

  8. 使用手机陀螺仪 完成一个简单的小游戏

    原文链接: 使用手机陀螺仪 完成一个简单的小游戏 上一篇: vue-codemirror 代码编辑器 下一篇: js setTimeout setInterval 通过旋转手机,控制小球的移动 eve ...

  9. vs2010c语言小游戏,用C语言写一个三子棋小游戏(用VS2010实现,加强版)

    前几天写了一个三子棋小游戏,但是比较简单,因为以前写的游戏棋盘只能是3x3那么大.今天对那个程序做了两点改进: 1.现在可以实现在任意大小的棋盘上下棋了. 2.因为棋盘可能变大,为了玩家方便确定坐标, ...

最新文章

  1. Python 自动化运维 pycurl
  2. element UI el-autocomplete 带输入建议的输入框
  3. 通过仿真和综合认识JK触发器(Verilog HDL语言描述JK触发器)
  4. 最小最大定理 java_Java基础50道经典练习题(35)——最大最小交换
  5. Android开源框架——网络解析GSON
  6. oracle spa sta 使用,Oracle的SQL Tuning Advisor(STA) 到底做了什么?
  7. 知识图谱发展的三个时期以及事理图谱概念辨析
  8. 惠普服务器c盘格式化提示win7系统盘,通过U盘重装系统,已经格式化C盘提示如下...
  9. 关于Python3的namedtuple问题
  10. 【作业报告】作业5 四则运算 测试与封装 5.2(已更新)
  11. NIO server client
  12. 你不可错过的Java学习资源清单
  13. eyoucms如何管理栏目
  14. 问卷:城市名 转换成 城市线:一线、新一线、二三四五线
  15. 抖音极速版/快手极速版自动浏览
  16. Mybatis 新增返回ID
  17. 决策树中的基尼系数、 熵之半和分类误差率
  18. oracle11g dbf恢复数据库,dbf文件如何恢复数据库
  19. 方舟手游服务器设置文件翻译,方舟生存进化手游界面中文翻译 语言不通不发愁...
  20. 【Quartz系列001】Quartz学习总结

热门文章

  1. ubuntu20.04使用chrome、搜狗输入法删除候选词内容时文本框的内容也会被删除
  2. spring boot快速集成Apache OpenOffice
  3. 一篇玩转DOM,顺便上个百度热搜【收藏版】
  4. 秋风起 肇庆裹蒸香传千里
  5. 扫地机器人十大排名发布 最火热的扫地机器人哪款好?
  6. JS中的BOM 详解
  7. 【Java王者荣耀项目】,在家玩王者不如自己开发王者,仅用一天时间便可完成。
  8. ViewPager+下拉刷新ListView超强组合(实现360手机助手首页的效果)
  9. 传说对决亚服服务器未响应,传说对决亚服
  10. HyperWorks API Programming for Beginners