题目来源:

https://www.bilibili.com/video/BV17F411T7Ao?p=91&vd_source=45bbb703a417550ebf434e539410a703https://www.bilibili.com/video/BV17F411T7Ao?p=91&vd_source=45bbb703a417550ebf434e539410a703 最终效果实现

Javabean类:

私有属性,数组参数

public class Role {private String name;//姓名private int blood;//血量private char gender;//性别private String face;//长相//男角色长相数组String[] boyfaces={"风流俊雅","器宇轩昂","相貌英俊","五官端正","风神俊朗"};//女角色长相数组String[] girlfaces={"沉鱼落雁","亭亭玉立","身材姣好","美奂绝伦","相貌平平"};//攻击招式数组String[] attacks_desc={"%s使出了一招【大悲赋第一式:天绝地灭大搜魂手】,转到对方的身后,一掌向%s背心的灵台穴拍去。","%s使出了一招【沧海六合】,飞起身形自半空中变掌为抓锁向%s。","%s大喝一声,身形下伏,一招【大悲赋第二式:天阴地阳大紫炎气】,捶向%s双腿。","%s运气于掌,一瞬间掌心变得血红,一式【大悲赋第三式:诛神杀圣弑仙指】,推向%s。","%s阴手翻起阳手跟进,一招【红尘九天破剑道】,结结实实的捶向%s。","%s上步抢身,招中套招,一招【独孤九剑:破剑式】,连环攻向%s。"};//人物状态数组String[] injureds_desc={"结果%s退了半步,毫发无损","结果给%s造成一处瘀伤","结果一击命中,%s痛得弯下腰","结果%s痛苦地闷哼了一声,显然受了点内伤","结果%s摇摇晃晃,一跤摔倒在地","结果%s脸色一下变得惨白,连退了好几步","结果『轰』的一声,%s口中鲜血狂喷而出","结果%s一声惨叫,像滩软泥般塌了下去"};

构造方法,Getter/setter方法

public Role(String name, int blood,char gender) {this.name = name;this.blood = blood;this.gender=gender;//随机长相,把性别传入setFace中进行判断setFace(gender);}public Role() {this.name = name;}public char getGender() {return gender;}public void setGender(char gender) {this.gender = gender;}public String getFace() {return face;}public void setFace(char gender) {this.face = face;//判断性别if (gender=='男'){//从数组中随机下标int index = new Random().nextInt(boyfaces.length);//根据下标随机数组的值,达到随机长相的目的this.face = boyfaces[index];}else if (gender=='女'){int index = new Random().nextInt(girlfaces.length);this.face=girlfaces[index];}else{this.face="相貌平平";}}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getBlood() {return blood;}public void setBlood(int blood) {this.blood = blood;}

战斗方法及输出人物信息

public void fight(Role role){//随机招式int index = new Random().nextInt(attacks_desc.length);String kongfu = attacks_desc[index];//输出攻击的效果System.out.printf(kongfu,this.getName(),role.getName());//换行System.out.println();//定义随机伤害Random r = new Random();int hurt = r.nextInt(20)+1;//剩余血量int remainBoold = role.getBlood()-hurt;//如果剩余血量<0则重置为0if (remainBoold<0){remainBoold=0;}//角色的血量设置为剩余血量role.setBlood(remainBoold);if (remainBoold>90){System.out.printf(injureds_desc[0],role.getName());}else if (remainBoold>80){System.out.printf(injureds_desc[1],role.getName());}else if (remainBoold>70){System.out.printf(injureds_desc[2],role.getName());}else if (remainBoold>60){System.out.printf(injureds_desc[3],role.getName());}else if (remainBoold>40){System.out.printf(injureds_desc[4],role.getName());}else if (remainBoold>20){System.out.printf(injureds_desc[5],role.getName());}else if (remainBoold>10){System.out.printf(injureds_desc[6],role.getName());}else{System.out.printf(injureds_desc[7],role.getName());}System.out.println();//        System.out.println(this.getName()+"举起拳头打了"+role.getName()+"一下,造成了"+hurt+"点伤害,"+role.getName()+"还剩下"+role.getBlood()+"血" +
//                "");}//输出人物的信息public void showRoleInfo(){System.out.println("姓名为"+getName());System.out.println("性别为"+getGender());System.out.println("长相为"+getFace());System.out.println("血量为"+getBlood());}
}

测试类:

public class MainApp {public static void main(String[] args) {//对象实例化Role r1 = new Role("沈孤鸿",100,'男');Role r2 = new Role("沈孤雁",100,'男');//调用对象的信息属性,输出信息r1.showRoleInfo();r2.showRoleInfo();System.out.println("世间最强的武器,是大悲赋和孔雀翎。世上最悲哀的对决,是赴死之时,早已失去一切");System.out.println("------鸿雁之决-----");//循环次数不定使用while(true)while(true){r1.fight(r2);if (r2.getBlood()==0){System.out.println(r1.getName()+"ko了"+r2.getName());break;}r2.fight(r1);if (r1.getBlood()==0){System.out.println(r2.getName()+"ko了"+r1.getName());break;}}}
}

注:

1.idea自动生成构造/getter and setter方法:

2.

System.out.printf

第一部分参数:输出的的内容%s(占位)

第二部分参数:填充的数据

例:

面向对象练习-简易版文字格斗游戏相关推荐

  1. Java书写文字格斗游戏

    Java学习 - 书写文字格斗游戏 效果截图: package com.itheima.test2;public class GameTest {public static void main(Str ...

  2. 文字格斗游戏2.0(随机数值)

    ps:小白分享学习java的第五天 之前发的一个文字格斗游戏,姓名和血量都是固定的,而且都是谁打了谁一下,太无聊了. 经过我日复一夜不停的学习,终于学会了,然后给他优化了: 1.加上了功夫招式: 2. ...

  3. html5 canvas简易版捕鱼达人游戏源码

    插件描述:html5利用canvas写的一个js版本的捕鱼,有积分统计,鱼可以全方位移动,炮会跟着鼠标移动,第一次打开需要鼠标移出背景图,再移入的时候就可以控制炮的转动,因为是用的mouseover触 ...

  4. Java#9(文字格斗游戏和对象数组练习)

    目录 一.文字格斗游戏 二.对象数组 三.键盘录入练习 四.复杂对象数组练习 题目要求: 一.文字格斗游戏 Role类的代码 package Game;import java.util.Random; ...

  5. C/C++制作简易版贪吃蛇游戏

    文章目录 C/C++制作简易版贪吃蛇游戏 一.开发环境 二.设计逻辑 三.代码块 3.1 使用initgraph()函数 3.2定义蛇和食物的结构体 3.3随机产生食物的坐标以及定义初始化的蛇的数据 ...

  6. c语言小游戏 精简_C语言开发简易版扫雷小游戏

    C 语言开发简易版扫雷小游戏 本文给大家分享的是一个使用 C 语言开发的命令行下的简易版扫雷小游戏, 本身没有什么太 多的技术含量, 只不过是笔者的处女作, 所以还是推荐给大家, 希望对大家学习 C ...

  7. python挖矿_python简易版挖矿小游戏

    大家好,今天我们来说一说怎么制作一个简易版的挖矿小游戏. 先写初始设置的代码:import pygame, sys, random, time pygame.init() screen = pygam ...

  8. 解决闲人的简单JS别踩白块(简易版)小游戏啦!

    别踩白块这个游戏相信很多人都在手机上玩过,今天我们就来做一个网页版的. 制作要点: HTML/CSS JavaScript 元素节点增删 属性节点操作 编程原理 在开始编程之前,让我们先来分析下整个游 ...

  9. c语言程序设计中三子棋游戏,C语言实现简易版三子棋游戏

    本文实例为大家共享了C语言实现三子棋游戏的详细代码,供大家参考,详细内容如下 什么是多文件? 多数大型的工程的头文件和源文件非常多,我们也不可能把所有的代码都写在同一个文件里,这样也不方便代码的阅读与 ...

最新文章

  1. BSP 二叉树再次讨论
  2. 宿主机windows Xp部署virtualBox虚拟机并在其上安装linux Centos(Red Hat)操作系统
  3. php +号在传输参数的过程中被变为空格了_编程难学?web相关知识,跟着淼哥学php全栈之路6...
  4. HDU - 1024 Max Sum Plus Plus 最大m段子段和+滚动数组优化
  5. PHP 正则表达式分割 preg_split 与 split 函数
  6. linux qt应用程序全屏,QT中MDI应用程序中更改子窗口大小或是全屏显示子窗口的方法...
  7. django 配置mysql_Django配置MySQL数据库方法
  8. html动态网站维护页面
  9. 王者荣耀故事站小程序源码/含vue后台
  10. 程序员加班一周休病假,犯了小错误遭开除,老板怒斥程序员不中用
  11. python队列实现_Python 数据结构之队列的实现
  12. DNS解析超时排查/etc/resolv.conf single-request-reopen参数说明
  13. spring源码:九大后置处理器
  14. 论“蹭热点”,我只服“杜蕾斯”,盘点“杜蕾斯官方”曾蹭过的十大热点!
  15. Google AdSense广告赚钱之技巧篇!
  16. SQL中附加的基本运算
  17. Linux jar包在screen开机自启
  18. 地方门户+html+模板,帝国CMS地方门户网站模板(含分类信息,WAP手机模板)
  19. 在python中浮点数怎样转整数_python 浮点数 转 整数python函数每日一讲 - all()
  20. 组织架构图实现——jOrgChart的使用

热门文章

  1. STM32开源代码——YS-V0.7语音识别模块程序
  2. 追踪app崩溃率、事件响应链、Run Loop、线程和进程、数据表的优化、动画库、Restful架构、SDWebImage的原理...
  3. 制作A4纸打印的网页像素大小设置(转)
  4. 空间说说html,经典个性qq空间说说
  5. IT男性结扎手术全程记实录
  6. 解决:com.fasterxml.jackson.databind.exc.InvalidDefinitionException
  7. shell 脚本符号介绍
  8. python爬取网文存入txt文件
  9. Apache ab(压力测试工具) 的下载和使用
  10. 数据库的增删改查——自定义权限