来签个到,留个痕迹

  • Main.java
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("*******************坦克大战之继承的实现*******************");System.out.print("请输入坦克的名字:");String tankName = sc.nextLine();while(tankName.length() == 0){System.out.print("您的输入有误!请输入坦克的名字:");tankName = sc.nextLine();}System.out.print("请输入坦克的攻击力(INT以内的整数):");String tankPower = sc.nextLine();while(tankPower.matches("^\\d+$") == false || !(tankPower.length() >= 1 && tankPower.length() <= 9)){System.out.print("您的输入有误!请重新输入坦克的攻击力(INT以内的整数):");tankPower = sc.nextLine();}System.out.print("请输入坦克的速度(INT以内的整数):");String tankSpeed = sc.nextLine();while(tankPower.matches("^\\d+$") == false || !(tankSpeed.length() >= 1 && tankSpeed.length() <= 9)){System.out.print("您的输入有误!请重新输入坦克的速度(INT以内的整数):");tankSpeed = sc.nextLine();}System.out.print("请输入坦克的能量(INT以内的整数):");String tankEnergy = sc.nextLine();while(tankPower.matches("^\\d+$") == false || !(tankEnergy.length() >= 1 && tankEnergy.length() <= 9)){System.out.print("您的输入有误!请重新输入坦克的能量(INT以内的整数):");tankEnergy = sc.nextLine();}System.out.print("请输入坦克的方向(1. 上 2. 下 3. 左 4. 右):");String tankDir = sc.nextLine();while(tankPower.matches("^^\\d+$") == false || tankDir.length() != 1){System.out.print("您的输入有误!请重新输入坦克的方向(1. 上 2. 下 3. 左 4. 右):");tankDir = sc.nextLine();}/*创建坦克类实例对象*/Tank tank = new Tank(Integer.valueOf(tankPower),Integer.valueOf(tankSpeed),Integer.valueOf(tankEnergy),tankName,Integer.valueOf(tankDir));String tmp = "";System.out.println("*******************输入任意字符可使坦克进行移动(输入\"quit\"即可停止运动!)*******************");while(sc.hasNext()){tmp = sc.next();System.out.println("*******************坦克正在移动中*******************");if(tmp.compareTo("quit") == 0) break;if(tank.attack() == -1) break;          //坦克能量耗尽!}}
}
  • Weapen.java
/*** 武器类***/
public class Weapen {private String weapenString;private int power;private int speed;private int energy;Weapen(int power, int speed, int energy, String weapenString){setPower(power);setSpeed(speed);setEnergy(energy);setWeapenString(weapenString);}public int getPower() {return power;}public void setPower(int power) {this.power = power;}public int getSpeed() {return speed;}public void setSpeed(int speed) {this.speed = speed;}public int getEnergy() {return energy;}public void setEnergy(int energy) {this.energy = energy;}public String getWeapenString() {return weapenString;}public void setWeapenString(String weapenString) {this.weapenString = weapenString;}
}
  • Tank.java

/**
* 坦克类
*
*
*/public class Tank extends Weapen{private int dir; /*坦克的方向: 1. 上 2. 下 3. 左 4. 右*/private String dirString[] = {"上", "下", "左", "右"};private int reduceEnergy;   //消耗的能量Tank(int power, int speed, int energy, String weapenString, int dir){super(power, speed, energy, weapenString);setDir(dir);setReduceEnergy(0);}public int getDir() {return dir;}public void setDir(int dir) {this.dir = dir;}public int getReduceEnergy() {return reduceEnergy;}public void setReduceEnergy(int reduceEnergy) {this.reduceEnergy = reduceEnergy;}public double getReduceEnergyPercent(){int nowHasReduceEnergy = getReduceEnergy();int startEnergy = getEnergy();double percent = (nowHasReduceEnergy * 1.0) / (startEnergy * 1.0);return (percent >= 1.0 ? 1.0 : percent);}public int toCheckEnergy(){int nowHasReduceEnergy = getReduceEnergy();int startEnergy = getEnergy();double percent = getReduceEnergyPercent();if(percent >= 0.7){System.out.println("报告! 您已消耗超过70%的能量, 不得不为您降速度!以确保您的安全!");return (int)(getSpeed() * percent);}else if(percent >= 0.5){System.out.println("报告! 您已消耗超过50%的能量, 不得不为您降速度!以确保您的安全!");return (int)(getSpeed() * percent);}else if(percent >= 0.3){System.out.println("报告! 您已消耗超过30%的能量, 不得不为您降速度!以确保您的安全!");return (int)(getSpeed() * percent);}//return (int)(getSpeed() * percent);return 0;}public int attack(){setReduceEnergy(getReduceEnergy() + 1);     //能量消耗 + 1if(getReduceEnergyPercent() >= 1.0){System.out.println("抱歉坦克能量已经耗尽,已无法运动!");return -1;}System.out.println("我是坦克: " + getWeapenString() + ", 正在向 " + dirString[getDir() - 1] + " 运动, 速度: " + (getSpeed() - toCheckEnergy()) + ", 攻击力: " + getPower());/*System.out.println("当前已经消耗能量:" + (getReduceEnergyPercent() * 100) + "%");*/System.out.printf("当前已经消耗能量:%.2f%%", (getReduceEnergyPercent() * 100));System.out.println();return 0;}
}

坦克大战之继承的实现相关推荐

  1. 【跟我一起学Unity3D】做一个2D的90坦克大战之AI系统

    对于AI,我的初始想法非常easy,首先他要能动,而且是在地图里面动. 懂得撞墙后转弯,然后懂得射击,其它的没有了,基于这个想法,我首先创建了一个MyTank类,用于管理玩家的坦克的活动,然后创建AI ...

  2. Java课程设计——坦克大战

    坦克大战--坦克类 一. 团队课程设计博客链接 https://www.cnblogs.com/chenhuilin/p/10275664.html 二.个人负责模块和任务说明 模块:坦克类(玩家坦克 ...

  3. c语言课程设计坦克大战,funcodec++课程设计_坦克大战

    <funcodec++课程设计_坦克大战>由会员分享,可在线阅读,更多相关<funcodec++课程设计_坦克大战(24页珍藏版)>请在人人文库网上搜索. 1.课程设计一 坦克 ...

  4. 坦克大战java_清华毕业大佬用一个坦克大战项目讲完了23种设计模式

    先给大家讲述一下坦克大战是怎么进行运行的. 坦克大战第一节: new 出一个窗口: 设定标题栏内容: TankFrame从Frame继承+显示: 认识paint方法,重写: 坦克大战第二节 学习gra ...

  5. python 全解坦克大战 辅助类 附完整代码【雏形】

    我正在博客之星评选,欢迎投票给我 会从投票人中抽奖机械键盘+书,中了会私聊地址 投票连接是:https://bbs.csdn.net/topics/603955346 投票连接是:https://bb ...

  6. eclipse 导入项目_JAVA编程实战:坦克大战系列2-坦克如何在eclipse中编写

    游戏中寻找学习JAVA的乐趣之 坦克大战系列2-坦克如何在Eclipse中编写 前言 本篇主要对Robocode在eclipse中如何配置并编写. Eclipse中的配置 通过本身自带的编辑器去写代码 ...

  7. 手把手教你用Python实现“坦克大战”,附详细代码!

    小时候玩的"坦克大战",你还记得吗? 满满的回忆 ! 今天,我们使用Python以及强大的第三方库来实现一个简单的坦克大战游戏. 整体效果 环境依赖 python3.7 pygam ...

  8. 坦克大战python_Python语言学了没用?那只能说你是真的没有精通了Python语言

    [文末有福利] Python的热度一直高居不下,运维,自动化测试,后端开发,机器学习...Python的用武之地真的太多了! "人生苦短,我用Python",对于普通职场人士来说, ...

  9. 一步一步完成坦克大战:一、游戏关键难点实现

    写在前面 入园这么久以来,一直都是工作中遇到了问题,才在园子里找各位大神的博客看,从来没有自己写过.前段时间为了找工作,做了一些面试准备,看了一些书,才发现一直以来都对.NET的基础知识掌握的不够熟练 ...

  10. C++实现坦克大战(超详细)(文末附源码!!!)

    一.成果展示 二.开发环境及工具 C++开发,使用工具为vs2019的community版本,坦克大战需要借助EasyX库来完成坦克大战的图形绘制. 三.游戏规则设定 (1)玩家移动及发射炮弹: 单人 ...

最新文章

  1. NLP(Natural Language Processing)
  2. 51 nod 机器人走方格
  3. 跟我一起写udev规则
  4. 【视频课】如何掌握好深度学习之视频分类与行为识别?这一门课足矣!
  5. ansys经典界面分析工字钢_ANSYS做一个工字钢的热分析
  6. 工作58:element三级列表的问题
  7. 解决maven打包报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2
  8. 夫学须静也freeeim
  9. OpenCV属性页配置问题~
  10. Starling Feathers:Starling专属UI框架
  11. 数字化转型案例:美的集团
  12. 戴尔R720服务器U盘安装Windows
  13. KchmViewer linux kde下出色一个chm阅读器
  14. Android 上架应用市场整理
  15. rxJava中 Subscriber 与Observer
  16. 异常:The JSP specification requires that an attribute name is preceded by whitespace
  17. 这些年我的不足(不够专注,不善于推迟满足感,阅读量不够……-无网不剩 http://t.cn/zOe1RPz)
  18. word制作招聘启示文档教学
  19. excel表格身份证提取出生年月
  20. 适用于大规模数据排序(归并排序、快速排序)

热门文章

  1. python初探偏微分方程数值解
  2. Anylogic学习—银行排队模型
  3. FMEA软件版本及差异管理(FMEAHunter)
  4. 设置android模拟器的ip地址,安卓模拟器怎么改IP地址和分辨率,怎么改机型
  5. 【JZOJ】【数论】立体井字棋
  6. Flex Builder 3 正版注册码及破解版方法
  7. JAVAweb JSP飞机订票系统航空机票预订销售系统(机票预订系统)
  8. Active Directory的DirectoryEntry与DirectorySearcher初识及Filter语法
  9. 三款IE修复软件横向评测(转)
  10. JS 获得FileUpload1 的完整路径