博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个小代码,欢迎大佬的意见,求指正
阅读量:6306 次
发布时间:2019-06-22

本文共 5835 字,大约阅读时间需要 19 分钟。

我的第一篇博客

开篇语

今天对我来说是一个特殊的日子,首先系统的自学java语言已经有四五个月了,经过自己从各处搜集资料和视频进行自学,也有了自己的一些入门的知识体系,算不上经验吧,总之以后学的还有很多,也不敢懈怠,只求每天能够进步一点。今天是我进入博客的第一天,我就先把这两天学习的一个小项目总结在这里,希望各位博友和大佬指正和批评。

我学的两个小项目

这两天我学习了一个文字游戏的小项目:

这个游戏介绍是这样的:

玩家和NPC进行游戏内的对话,两个人物各有HP:100点,进行相互***,主角也就是玩家带有主角光环,每一回合只扣两点血,而NPC进行随机掉血,最后直至NPC血量为0是游戏结束。

我对该文字游戏的分析是这样的:
构建五个类:玩家类(Player)、NPC类(NPCPlayer)、文字术语类(Constants)、文字描述性的窗口提示类(gameScreenUtil)还有一个测试类,定义玩家类和NPC类的成员变量和构造函数,还有getXxx()方法,然后用字符串数组将各游戏内的术语定义在Constants类中。
然后就是***功能的实现了,在各功能类中定义各功能的实现方法(详细实现步骤见下面代码,嘿嘿,欢迎批评改正,由衷感谢),最后在测试类中也就是程序的main()方法中进行各个方法的调用。
代码如下:(各位大佬求指正,谢谢)

  • package com.itheima.rpg.文字游戏最终版
import java.util.Random;/** * 玩家类 * @author Administrator * */public class Player {    //属性    private String name;    private int blood;    //构造函数    public Player(String name,int blood) {        this.name = name;        this.blood = blood;    }    //getXxx()    public String getName() {        return name;    }    public int getBlood() {        return blood;    }    //行为    /**     * 玩家和NPC对话的功能     * @param npc 玩家和NPC对象进行交谈     */    public void talkToMe(NPCPlayer npc) {        //我和NPC对话        System.out.println(name+":Hi~~");        //NPC和我对话        npc.talkBack();        System.out.println();    }    /**     * 玩家***NPC的功能     * @param npc 玩家***NPC对象     */    public void giveColorSee(NPCPlayer npc) {        if(npc.isAlive()) {            //System.out.println(name+":太猖狂了,要教训一下你,对着"+npc.getName()+"的脸上来了一套组合拳!");            Random random = new Random();            int index = random.nextInt(Constants.attack.length);            String message = Constants.attack[index];            String newStr = message.replace("N",name).replace("X", npc.getName());            System.out.println(newStr);            //调用NPC的掉血功能            npc.inJured(this);        }else {            System.out.println(name+":无敌的我又迷路了!");        }    }    /**     * 玩家掉血的功能     */    public void injured() {        blood -= 2;        //System.out.println(name+"啊的叫了一声,头上冒金星!");        Random random = new Random();        int index = random.nextInt(Constants.result.length);        String message = Constants.result[index].replace("*", name);        System.out.println(message);    }}
  • package com.itheima.rpg.文字游戏最终版 :
import java.util.Random;/** * NPC电脑类 * @author Administrator * */public class NPCPlayer {    //属性    private String name;    private int blood;    //构造函数    public NPCPlayer(String name,int blood) {        this.name = name;        this.blood = blood;    }    //getXxx()    public String getName() {        return name;    }    public int getBlood() {        return blood;    }    //行为    /**     * NPC和玩家交谈的功能     */    public void talkBack() {        //System.out.println(name+":Hi什么Hi,没看到我正在忙吗,一边待着去。");        Random random = new Random();        int index = random.nextInt(Constants.chat.length);        String message = Constants.chat[index];        System.out.println(name+":"+message);    }       /**     * NPC受伤掉血功能     * @param player NPC对象掉血的动作,谁***我,等会要还击     */    public void inJured(Player player) {        Random random = new Random();        int loseBlood = random.nextInt(30);        if(loseBlood == 0) {            System.out.println(name+"使用凌波微步巧妙的躲开了"+player.getName()+"的组合拳,并对你进行的嘲讽!");            figthBack(player);        }else {            blood -= loseBlood;            if(isAlive()) {                //System.out.println(name+"大叫了一声,发现自己脸上多了一个大包");                int index = random.nextInt(Constants.result.length);                String message = Constants.result[index].replace("*", name);                System.out.println(message);                figthBack(player);            }else {                blood = 0;                System.out.println(name+"一阵天旋地转,睁开眼睛发现来到了一个全新的世界!");            }        }    }    /**     * 判断NPC是否还活着     * @return     */    public Boolean isAlive() {        return blood > 0;    }        /**     * NPC还击的功能实现     * @param palyer要还击的玩家对象     */    public void figthBack(Player player) {        //System.out.println(name+"怒去冲冲的向"+player.getName()+"的头上来了一组罗汉拳!");        Random random = new Random();        int index = random.nextInt(Constants.attack.length);        String message = Constants.attack[index].replace("N", name).replace("X", player.getName());        System.out.println(message);        player.injured();    }}
  • package com.itheima.rpg.文字游戏最终版;
/** * 玩家与NPC对话与决斗时的文字性描述 * @author Administrator * */public class Constants {    public static final String[] chat = { "我什么都不知道,打死你我也不知道", "今天是个好天气,哈哈哈", "我正忙着呢,找别人唠嗑去吧", "在看我,我就把你吃掉", };    public static final String[] attack = {"N一招“回身劈山刀”,向X头上削去。","N一招“上步劈山”,刀带劲风由上而下劈向了X。","N一招“抓耳挠腮”,X被抓的遍体鳞伤。"};    public static final String[] result = {"结果一击命中,*痛苦的闷哼了一身","结果“砰”的一声,*倒退了两步","结果*一声惨叫,像一摊软泥一样塌了下去"};}
  • package com.itheima.rpg.文字游戏最终版;

    /*** 玩家与NPC对话与决斗时的文字性描述* @author Administrator**/public class Constants {public static final String[] chat = { "我什么都不知道,打死你我也不知道", "今天是个好天气,哈哈哈", "我正忙着呢,找别人唠嗑去吧", "在看我,我就把你吃掉", };public static final String[] attack = {"N一招“回身劈山刀”,向X头上削去。","N一招“上步劈山”,刀带劲风由上而下劈向了X。","N一招“抓耳挠腮”,X被抓的遍体鳞伤。"};public static final String[] result = {"结果一击命中,*痛苦的闷哼了一身","结果“砰”的一声,*倒退了两步","结果*一声惨叫,像一摊软泥一样塌了下去"};}
  • package com.itheima.rpg.文字游戏最终版;
    /*** 测试类* @author Administrator**/public class Test {    public static void main(String[] args) {        //创建玩家类的对象        Player player = new Player("Sweltering",100);        //创建NPC类的对象        NPCPlayer npc = new NPCPlayer("魔尊",100);        //玩家和NPC进行对话        player.talkToMe(npc);        int num = 1;        while(npc.isAlive()) {            System.out.println("\t\t第"+ num +"回合");            //玩家***NPC的功能实现            player.giveColorSee(npc);            //显示游戏标题            GameScreenUtil.gameScreen(player, npc);            num++;        }        System.out.println("\t\tGame Over!");    }}

转载于:https://blog.51cto.com/13502869/2044896

你可能感兴趣的文章
防恶意注册的思考
查看>>
http2-head compression
查看>>
C# 命名空间
查看>>
订餐系统之同步美团商家订单
查看>>
使用ArrayList时设置初始容量的重要性
查看>>
Java Web-----JSP与Servlet(一)
查看>>
Maven搭建SpringMVC+Mybatis项目详解
查看>>
关于量子理论:最初无意的简化,和一些人有意的强化和放大
查看>>
CentOS 6.9通过RPM安装EPEL源(http://dl.fedoraproject.org)
查看>>
“区块链”并没有什么特别之处
查看>>
没有功能需求设计文档?对不起,拒绝开发!
查看>>
4星|《先发影响力》:影响与反影响相关的有趣的心理学研究综述
查看>>
IE8调用window.open导出EXCEL文件题目
查看>>
python之 列表常用方法
查看>>
vue-cli脚手架的搭建
查看>>
在网页中加入百度搜索框实例代码
查看>>
在Flex中动态设置icon属性
查看>>
采集音频和摄像头视频并实时H264编码及AAC编码
查看>>
3星|《三联生活周刊》2017年39期:英国皇家助产士学会于2017年5月悄悄修改了政策,不再鼓励孕妇自然分娩了...
查看>>
linux查看命令是由哪个软件包提供的
查看>>