java面向对象实现文字格斗游戏细节完善版

为了完善上一篇的文字格斗游戏的细节,所以加了些代码,使得交互更加的具体有趣!

效果

在这里插入图片描述
大家可以多运行几次代码,得到不同的战况!!

代码实现

1.bean类

import java.util.Random;

public class TextGame {
    private String name;
    private int blood;
    private String face;
    private char gender;

    String[] boyface = {"风流俊雅","气字轩品","相毂关俊","五官正","相较平平","一塌糊涂","面目狰狞"};
    String[] girlface = {"美奂绝伦","沉鱼落厂","婷婷玉立","身材娇好","相貌平平","相貌简所","不忍睹"};
    String[] attack_desc = {
            "%s使出了一招【背心钉】,转到对方的身后,一零向%s背心的关台穴拍去。",
            "%s使出了一招【游空探爪】。飞起身形自半空中变章为抓锁向%s。",
            "%s人喝一声,身形下伙,一招【劈雷坠地】,捶向%s双腿。",
            "%s运气于景,一瞬间常心变得血红,一式【京心需】,推向%s。",
            "%s明手翻起阳手跟进,一招【没遮拦】,结结实实的捶向%s。",
            "%s上步抢身,招中套报,一招【劈挂连环】,连环攻向%s。"};
    String[] injured_desc= {
            "结果%s退了半步,毫发无损",
            "结果给%s适成一处察伤",
            "结果一击命中。%s痛得弯下服",
            "结果%s痛苦地闷哼了一声,是然受了点内伤",
            "结果xs摇摇晃晃,一跤摔倒作地",
            "结果%s脸色一下变得惨白,连逖了好几步",
            "结果「轰】的一声,%s口中鲜血狂喷面出",
            "结果%s一声惨叫,像滩软泥般塌了下去"};
    public TextGame() {
    }

    public TextGame(String name, int blood,char gender) {
        this.name = name;
        this.blood = blood;
        this.gender = gender;
        setface(gender);
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return blood
     */
    public int getBlood() {
        return blood;
    }

    /**
     * 设置
     * @param blood
     */
    public void setBlood(int blood) {
        this.blood = blood;
    }

    public String toString() {
        return "TextGame{name = " + name + ", blood = " + blood + "}";
    }

    public void setface(char gender){
        Random random = new Random();

        if(gender == '男'){
            int index = random.nextInt(boyface.length);
            this.face = boyface[index];
        }else if(gender == '女') {
            int index = random.nextInt(girlface.length);
            this.face = girlface[index];
        }else{
            this.face = "面目狰狞";
        }
    }

    public char getGender() {
        return gender;
    }

    public void setGender(char gender) {
        this.gender = gender;
    }

    public String getFace(){
        return this.face;
    }

    public void attack(TextGame role){
        //攻击方的威力
        Random r1 = new Random();
        int index = r1.nextInt(attack_desc.length);
        String kungfu = attack_desc[index];
        //攻击效果
        System.out.printf(kungfu,this.getName(),role.getName());
        System.out.println();
        //被揍的人伤害点
        Random r = new Random() ;
        int hurt = r.nextInt(20) + 1;
        //修改挨揍人的血量
        int remainBlood = Math.max(0 , (role.getBlood() - hurt));
        role.setBlood(remainBlood);
//        System.out.println(this.getName() + "了举起拳头,打了"+ role.getName()  +"一下,造成了"+hurt+"点伤害,"+role.getName()+"还剩下"+remainBlood+"血量");
        if(remainBlood > 90){
            System.out.printf(injured_desc[0],role.getName());
        } else if (remainBlood > 80 && remainBlood <= 90) {
            System.out.printf(injured_desc[1],role.getName());
        } else if (remainBlood >70 && remainBlood <= 80) {
            System.out.printf(injured_desc[2],role.getName());
        }else if (remainBlood >60 && remainBlood <= 70) {
            System.out.printf(injured_desc[3],role.getName());
        }else if (remainBlood >40 && remainBlood <= 60) {
            System.out.printf(injured_desc[4],role.getName());
        }else if (remainBlood >20 && remainBlood <= 40) {
            System.out.printf(injured_desc[5],role.getName());
        }else if (remainBlood >10 && remainBlood <= 20) {
            System.out.printf(injured_desc[6],role.getName());
        }else{
            System.out.printf(injured_desc[7],role.getName());
        }
        System.out.println();

    }

    public void showRoleInfo(){
        System.out.println("姓名为:"+getName());
        System.out.println("血型为:"+getBlood());
        System.out.println("性别为:"+getGender());
        System.out.println("长相为:"+getFace());
    }
}

2.测试类

public class TextGameText {
    public static void main(String[] args) {
        TextGame q1 = new TextGame("乔峰", 100,'男');
        TextGame q2 = new TextGame("鸠摩智", 100,'男');
        q1.showRoleInfo();
        q2.showRoleInfo();
        while (true){
            q1.attack(q2);
            if(q2.getBlood() == 0){
                System.out.println(q1.getName() +"KO." + q2.getName());
                break;
            }
            q2.attack(q1);
            if(q1.getBlood() == 0){
                System.out.println(q2.getName() +"KO." + q1.getName());
                break;
            }
        }
    }
}

这样就丰富了一场格斗大战的游戏细节!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/607288.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ardupilot的固定翼飞行模式

飞行模式 APM所有的飞行模式都在对应的机型的文件夹下的mode.h里面有定义,针对于不同的模型,功能函数在基类中Mode中都是以纯虚函数实现了, 然后在继承的子类中重新实现它,以实现多态。 takeoff模式 参见网址在 ArduPlane 4.0 及更高版本中,自动起飞本身也是一种模式(…

文件操作

前言&#xff1a; 文件内容属性 要向访问文件就要打开文件——>用进程来打开——>要把文件先加载到内存中——> 一个进程可以打开多个文件&#xff0c;OS中也有可能多个进程打开了多个文件 文件以多&#xff0c;就需要进行管理&#xff0c;——先描述再组织 没有被打开…

【图文教程】PyCharm安装配置PyQt5+QtDesigner+PyUic+PyRcc

这里写目录标题 PyQt5、Qt Designer、PyUic、PyRcc简介&#xff08;1&#xff09;下载安装PyQt5&#xff08;2&#xff09;打开designer.exe所在位置&#xff08;3&#xff09;在PyCharm中配置QtDesigner&#xff08;4&#xff09;验证QtDesigner是否配置成功&#xff08;5&…

thinkphp6使用layui分页组件做分页效果

博主用的是layui2.9.8的版本&#xff0c;但这个版本的分页组件是动态效果的&#xff0c;但我需要的是静态分页&#xff0c;所以我自己封装了一个生成layui的分页代码生成代码。代码如下&#xff1a; 1、先创建文件&#xff0c;路径是extent/layui/LayuiPage.php&#xff0c;加…

HashMap前世今生

概述 HashMap是我们常用的一种数据结构&#xff0c;他是一个key-value结构。我们来深入了解一下。 1.8之前用的数组加链表 1.8之后用的数组加链表加红黑树&#xff0c;当链表数量大于8时&#xff0c;将链表转为红黑树。当红黑书节点小于6又会转为链表。 浅析HashMap的put()方…

达梦数据库限制用户登录IP测试

达梦数据库创建用户时可以限制登录ip和时间段。 创建测试测试用户 create user test1 identified by Test_1234 ALLOW_IP "192.168.100.101"; 限定该用户只能通过192.168.100.101地址登录数据库 连接测试 上图可见&#xff0c;192.168.100.101客户端可以连接上19…

纯血鸿蒙APP实战开发——Grid和List内拖拽交换子组件位置

Grid和List内拖拽交换子组件位置 介绍 本示例分别通过onItemDrop()和onDrop()回调&#xff0c;实现子组件在Grid和List中的子组件位置交换。 效果图预览 使用说明&#xff1a; 拖拽Grid中子组件&#xff0c;到目标Grid子组件位置&#xff0c;进行两者位置互换。拖拽List中子…

搭建产品帮助体系指南干货在这里

产品的成功不仅需要它的功能强大&#xff0c;还要让用户对产品有一个良好的体验。一个完善全面的产品帮助体系&#xff0c;能够很大程度地提升用户体验&#xff0c;帮助用户更好地理解和使用产品。如何搭建一个高效、实用的产品帮助体系呢&#xff1f;下面&#xff0c;我将为你…

Tomcat安装与配置(详细教程)

一、安装Tomcat服务器 1.下载地址&#xff08;Tomcat官网&#xff09;http://tomcat.apache.org/ 2.将下载的zip文件解压到指定的目录&#xff08;例如&#xff1a;D盘&#xff0c;目录不要有中文&#xff09; D:\apache-tomcat-9.0.43 二、配置Tomcat环境变量 &#xff08;…

鸿蒙UI复用

鸿蒙UI复用 简介BuilderBuilder的使用方式一Builder的使用方式二Builder的使用方式三 Component使用Component复用UI 简介 在页面开发过程中&#xff0c;会遇到有UI相似的结构&#xff0c;如果每个UI都单独声明一份&#xff0c;会产生大量冗余代码&#xff0c;不利于阅读。遇到…

ai可以做思维导图吗?当然是可以的!

ai可以做思维导图吗&#xff1f;在快节奏的现代生活中&#xff0c;思维导图作为一种高效的信息组织和表达工具&#xff0c;越来越受到人们的青睐。随着人工智能&#xff08;AI&#xff09;技术的不断发展&#xff0c;AI思维导图软件也应运而生&#xff0c;它们不仅能够帮助用户…

软件接口测试规范流程

1、需求分析 1.1 确认测试目的和测试对象&#xff1a; 了解需求并明确测试目的&#xff0c;如测试一个本地 API 还是跨网站的远程 API。 1.2 确认测试的基本条件: 确定测试所需的测试数据&#xff0c;测试环境以及测试团队中的角色和职责。 1.3. 对接口文档进行验证&#xf…

兄弟DCP-7057激光打印机报错误代码EC检修及分析

故障描述&#xff1a; 兄弟DCP-7057激光打印机屏幕显示无法打印EC关闭电源&#xff0c;然后重新打开打印机。 故障检修及分析&#xff1a; 1、定影单元风扇的插线连接不良 检查定影单元风扇的插线连接并重新连接&#xff1b; 2、定影单元风扇故障 更换定影单元风扇&#xff1b…

Segmentation fault (core dumped)排查

先泼盆冷水&#xff0c;这个问题比较棘手&#xff0c;有的能通过重装opencv相关包修复&#xff0c;有的可能还是直接换一个没问题的环境比较快…… 我最后是没有解决的&#xff0c;折腾了几个小时后&#xff0c;还是听同事的话&#xff0c;把docker镜像重启了&#xff0c;幸好…

day04—java基础之方法详解

方法概述 方法是具有特定功能的代码集合&#xff0c;由于我们是把重复的代码写到方法当中&#xff0c;以后要用直接调用方法即可&#xff0c;不需要再写一遍了。代码相当于只写了一遍。所以可以提高代码的复用性。如果要修改代码&#xff0c;我们也只要修改一处即可&#xff0…

JavaSwing技术实现一个电子表程序

使用JavaSwing技术实现一个简单的电子表盘&#xff0c;如下所示。 下载链接 有兴趣的读者可以点击链接下载&#xff0c;博主承诺绝对真实有效。

bert-NER 转化成 onnx 模型

保存模型 加载模型 from transformers import AutoTokenizer, AutoModel, AutoConfigNER_MODEL_PATH ./save_model ner_tokenizer AutoTokenizer.from_pretrained(NER_MODEL_PATH) ner_config AutoConfig.from_pretrained(NER_MODEL_PATH) ner_model AutoModelForTokenCl…

VIsualGDB : 快速入门系列

《VisualGDB &#xff1a; 解决编码导致的编译错误》 《VisualGDB &#xff1a; 在windows上开发和调试Linux代码&#xff08;一&#xff09;》 《VisualGDB&#xff1a;为Linux项目添加系统依赖库》 《VisualGDB&#xff1a;Linux动态库项目创建、编译及库的使用》 《VisualGD…

Web3空投入门:如何增加空投成功的几率

今天分享空投如何避免限制以提高效率&#xff0c;增加成功几率&#xff0c;首先我们来了解什么是空投加密&#xff0c;有哪些空投类型。 一、什么是空投加密&#xff1f; 加密货币空投是一种营销策略&#xff0c;包括向用户的钱包地址发送免费的硬币或代币。 加密货币项目使用…

Linux网络编程(三)IO复用三 epoll系统调用

三、epoll系统调用 epoll是Linux特有的I/O复用函数。它在实现和使用上与select、poll有很大差异。 epoll使用一组函数来完成任务&#xff0c;而不是单个函数epoll把用户关心的文件描述符上的事件放在内核里的一个事件表中&#xff0c;从而无须像select和poll那样每次调用都要…