本文共 5835 字,大约阅读时间需要 19 分钟。
今天对我来说是一个特殊的日子,首先系统的自学java语言已经有四五个月了,经过自己从各处搜集资料和视频进行自学,也有了自己的一些入门的知识体系,算不上经验吧,总之以后学的还有很多,也不敢懈怠,只求每天能够进步一点。今天是我进入博客的第一天,我就先把这两天学习的一个小项目总结在这里,希望各位博友和大佬指正和批评。
这两天我学习了一个文字游戏的小项目:
这个游戏介绍是这样的:玩家和NPC进行游戏内的对话,两个人物各有HP:100点,进行相互***,主角也就是玩家带有主角光环,每一回合只扣两点血,而NPC进行随机掉血,最后直至NPC血量为0是游戏结束。
我对该文字游戏的分析是这样的:构建五个类:玩家类(Player)、NPC类(NPCPlayer)、文字术语类(Constants)、文字描述性的窗口提示类(gameScreenUtil)还有一个测试类,定义玩家类和NPC类的成员变量和构造函数,还有getXxx()方法,然后用字符串数组将各游戏内的术语定义在Constants类中。然后就是***功能的实现了,在各功能类中定义各功能的实现方法(详细实现步骤见下面代码,嘿嘿,欢迎批评改正,由衷感谢),最后在测试类中也就是程序的main()方法中进行各个方法的调用。代码如下:(各位大佬求指正,谢谢)
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); }}
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(); }}
/** * 玩家与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 = {"结果一击命中,*痛苦的闷哼了一身","结果“砰”的一声,*倒退了两步","结果*一声惨叫,像一摊软泥一样塌了下去"};}
/*** 测试类* @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