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. 2018 蓝桥杯省赛 B 组模拟赛(一)-年龄
  2. Android SDK更新下载失败以及Studio首次安装取消自动下载SDK
  3. 【Android 属性动画】属性动画 Property Animation 与 视图动画 View Animation 区别
  4. springmvc框架下Filter过滤器中过滤文件后 后续 controller为空的问题
  5. 【Linux网络编程学习】I/O多路复用——epoll
  6. wms策略文档_内容策略:技术文档的新理念
  7. execjs执行js出现window对象未定义时的解决_JS逆向 | 助力新手 , 两个JS逆向喂饭教程...
  8. 年底各类年会邀请函也要美美的设计
  9. 如何用div隐藏table中的某几行呢?
  10. 博客园文章索引生成器
  11. DSP原理与应用知识点(期末复习)
  12. web前端课程架构梳理
  13. 新媒体运营胡耀文教程:从运营角度,教你4招破解销售推销套路
  14. DTD-文档类型定义(Document Type Definition)
  15. Python 学习笔记 变量 xxx XXX
  16. 2018年UI设计趋势概览
  17. python多进程子进程不运行问题--未解决
  18. 深度学习模型部署学习一
  19. manifest文件解决兼容性助手问题
  20. html5的vidoe标签,HTML5的Video标签的属性,方法和事件

热门文章

  1. MacW资讯:Mac系统怎么查看测试网速
  2. 一次难忘的ubuntu20.04 双系统装机踩坑实录
  3. Mysql备份——mysqldump
  4. linux 解压和压缩命令大全(学无止境)
  5. 距离程序员玩转云上魔方还有多远?
  6. wqs二分中二分条件细节的思考
  7. 《Java数据结构》——优先级队列(小根堆的模拟实现)
  8. oracle查看pdb表空间,管理与使用PDB的表空间
  9. 最近发现几个有意思的 b 站 up 主
  10. 改变您的HTTP服务器的缺省banner