用接口,写一个简单的小游戏
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.因为棋盘可能变大,为了玩家方便确定坐标, ...
最新文章
- Python 自动化运维 pycurl
- element UI el-autocomplete 带输入建议的输入框
- 通过仿真和综合认识JK触发器(Verilog HDL语言描述JK触发器)
- 最小最大定理 java_Java基础50道经典练习题(35)——最大最小交换
- Android开源框架——网络解析GSON
- oracle spa sta 使用,Oracle的SQL Tuning Advisor(STA) 到底做了什么?
- 知识图谱发展的三个时期以及事理图谱概念辨析
- 惠普服务器c盘格式化提示win7系统盘,通过U盘重装系统,已经格式化C盘提示如下...
- 关于Python3的namedtuple问题
- 【作业报告】作业5 四则运算 测试与封装 5.2(已更新)
- NIO server client
- 你不可错过的Java学习资源清单
- eyoucms如何管理栏目
- 问卷:城市名 转换成 城市线:一线、新一线、二三四五线
- 抖音极速版/快手极速版自动浏览
- Mybatis 新增返回ID
- 决策树中的基尼系数、 熵之半和分类误差率
- oracle11g dbf恢复数据库,dbf文件如何恢复数据库
- 方舟手游服务器设置文件翻译,方舟生存进化手游界面中文翻译 语言不通不发愁...
- 【Quartz系列001】Quartz学习总结
热门文章
- ubuntu20.04使用chrome、搜狗输入法删除候选词内容时文本框的内容也会被删除
- spring boot快速集成Apache OpenOffice
- 一篇玩转DOM,顺便上个百度热搜【收藏版】
- 秋风起 肇庆裹蒸香传千里
- 扫地机器人十大排名发布 最火热的扫地机器人哪款好?
- JS中的BOM 详解
- 【Java王者荣耀项目】,在家玩王者不如自己开发王者,仅用一天时间便可完成。
- ViewPager+下拉刷新ListView超强组合(实现360手机助手首页的效果)
- 传说对决亚服服务器未响应,传说对决亚服
- HyperWorks API Programming for Beginners