用接口,写一个简单的小游戏
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());}
用接口,写一个简单的小游戏相关推荐
- c语言写一个简单的小游戏-推箱子
在学习C语言之后,写了一个简单的小游戏来锻炼自己的代码以及C语言知识的掌握能力. 推箱子作为手机上最常见的简单游戏,其代码也相对简单,想法也比较简单,下面为其代码和运行图. /************ ...
- 一个简单的c 游戏编程语言,编程达人 c语言写一个简单的小游戏-推箱子
在学习C语言之后,写了一个简单的小游戏来锻炼自己的代码以及C语言知识的掌握能力. 推箱子作为手机上最常见的简单游戏,其代码也相对简单,想法也比较简单,下面为其代码和运行图. /************ ...
- 用C语言写一个简单的小游戏——猜数字
我们该如何设计这个程序? 1.首先应该打印一个菜单,让玩家选择玩游戏或者退出游戏 2.当玩家选择玩游戏,我们让电脑生成一个1~100的随机数,让玩家去猜 3.如果玩家猜的数比电脑生成的数大,我们提示猜 ...
- unity编写一个简单的小游戏
unity编写一个简单的小游戏 简易fly bird的制作 关于flybird 场景的搭建和素材的导入 使用素材搭建game和scene 制作柱体 bird的script column的sprite ...
- 【牛客刷题】上手用C语言写一个三子棋小游戏超详解哦(电脑优化)
作者:[南航科院小张 南航科院小张的博客 专栏:从c语言的入门到进阶 学习知识不只是要懂,还要会用:想要找到好的工作,这里给大家介绍一件可以斩获诸多大厂offer的利器–牛客网 点击免费注册和我一起开 ...
- 你写一个web网页小游戏
写一个 web 网页小游戏需要以下几个步骤: 选择一种编程语言,常用的有 HTML.CSS.JavaScript 和 Python. 使用编辑器创建一个 HTML 文件,这个文件将是你的网页的基础. ...
- 用c++帮我写一个闯关小游戏
很高兴为您写一个闯关小游戏!这个游戏将分为3个关卡,每个关卡都有不同的挑战.第一关的挑战是收集3个物品,这些物品分别在不同的位置,你必须找到它们才能过关.第二关的挑战是找到一个宝藏,你必须通过解决难题 ...
- 使用手机陀螺仪 完成一个简单的小游戏
原文链接: 使用手机陀螺仪 完成一个简单的小游戏 上一篇: vue-codemirror 代码编辑器 下一篇: js setTimeout setInterval 通过旋转手机,控制小球的移动 eve ...
- vs2010c语言小游戏,用C语言写一个三子棋小游戏(用VS2010实现,加强版)
前几天写了一个三子棋小游戏,但是比较简单,因为以前写的游戏棋盘只能是3x3那么大.今天对那个程序做了两点改进: 1.现在可以实现在任意大小的棋盘上下棋了. 2.因为棋盘可能变大,为了玩家方便确定坐标, ...
最新文章
- 2018 蓝桥杯省赛 B 组模拟赛(一)-年龄
- Android SDK更新下载失败以及Studio首次安装取消自动下载SDK
- 【Android 属性动画】属性动画 Property Animation 与 视图动画 View Animation 区别
- springmvc框架下Filter过滤器中过滤文件后 后续 controller为空的问题
- 【Linux网络编程学习】I/O多路复用——epoll
- wms策略文档_内容策略:技术文档的新理念
- execjs执行js出现window对象未定义时的解决_JS逆向 | 助力新手 , 两个JS逆向喂饭教程...
- 年底各类年会邀请函也要美美的设计
- 如何用div隐藏table中的某几行呢?
- 博客园文章索引生成器
- DSP原理与应用知识点(期末复习)
- web前端课程架构梳理
- 新媒体运营胡耀文教程:从运营角度,教你4招破解销售推销套路
- DTD-文档类型定义(Document Type Definition)
- Python 学习笔记 变量 xxx XXX
- 2018年UI设计趋势概览
- python多进程子进程不运行问题--未解决
- 深度学习模型部署学习一
- manifest文件解决兼容性助手问题
- html5的vidoe标签,HTML5的Video标签的属性,方法和事件