2018.6.8 城堡游戏 Java project

Game.java:

import java.util.Scanner;
import java.util.HashMap;

public class Game {
    private Room currentRoom;
    protected int isAnswer = 0;
    private Room outside, lobby, pub, study, bedroom, diningroom, bathroom, loft;
    private HashMap<String, Handler> handlers = new HashMap<String, Handler>();
    
    public Game() 
    {
        handlers.put("bye", new HandlerBye(this));
        handlers.put("help", new HandlerHelp(this));
        handlers.put("go", new HandlerGo(this));
    createRooms();
    }

private void createRooms()
    {
//    制造房间
        outside = new Room("城堡外",this);
        lobby = new RoomLobby("大堂",this);
        pub = new RoomPub("酒吧",this);
        study = new RoomStudy("书房",this);
        bedroom = new RoomBedroom("卧室",this);
        diningroom = new RoomDiningroom("餐厅",this);
        bathroom = new RoomBathroom("厕所",this);
        loft = new RoomLoft("阁楼",this);
           
        // 初始化房间的出口
        outside.setExit("east", lobby);
        lobby.setExit("north", diningroom);
        lobby.setExit("south", pub);
        lobby.setExit("west", outside);
        lobby.setExit("up", study);
        pub.setExit("north", lobby);
        diningroom.setExit("south", lobby);
        study.setExit("north", bathroom);
        study.setExit("south", bedroom);
        study.setExit("down", lobby);
        bedroom.setExit("north", study);
        bathroom.setExit("south", study);

currentRoom = outside;  // 从城堡门外开始
    }

private void printWelcome() {
        System.out.println();
        System.out.println("这个城堡由国王建造,放着他的心爱之物");
        System.out.println("里面有七个房间,藏着七个谜题,解开他们就能得到国王的宝贝");
        System.out.println("如果需要帮助,请输入 'help' 。");
        System.out.println("赶快进去吧!!!");
        System.out.println();
        showPrompt();
    }

// 以下为用户命令

public void goRoom(String direction) 
    {
        Room nextRoom = currentRoom.getExit(direction);
        
        if (nextRoom == null) {
            System.out.println("那里没有门!");
        }
        else {
            currentRoom = nextRoom;
            showPrompt();
        }
    }
    
    public void play() {
    Scanner in = new Scanner(System.in);
    while ( true ) {
    String line = in.nextLine();
    String[] words = line.split(" ");
    Handler handler = handlers.get(words[0]);
    String value = "";
    if (words.length > 1) {
    value = words[1];
    }
    if (handler != null) {
    handler.doCmd(value);
    if (handler.isBye()) {
    break;
    }
    }
    if (isAnswer == 6) {
    break;
    }
    }
    System.out.println(",已回到书房,离开城堡?(Y/N)");
    String value = in.nextLine();
    if (value.equals("Y")) {
    System.out.println("GAME OVER");
    }
    else {
    loft.ending();
    }
    in.close();
   
    }
    public void showPrompt() {
    System.out.println("你在" + currentRoom);
    if (currentRoom.getAnswer()) {
    isAnswer++; 
    //System.out.println(isAnswer);
    }
         System.out.print("出口有: ");
         System.out.print(currentRoom.getExitDesc());
         System.out.println();
    }

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Game game = new Game();
game.printWelcome();
game.play();
        System.out.println("感谢您的光临。再见!");
        in.close();
}

}

Room.java:

import java.util.HashMap;

public class Room {
    private String description;
    protected Game game;
    private HashMap<String, Room> exits = new HashMap<String, Room>();

public Room(String description, Game game) 
    {
        this.description = description;
        this.game = game;
    }

public void setExit(String dir, Room room) {
    exits.put(dir, room);
    }
   
    @Override
    public String toString()
    {
        return description;
    }
   
    public String getExitDesc() {
    StringBuffer sb = new StringBuffer();
    for (String dir : exits.keySet()) {
    sb.append(dir);
    sb.append(' ');
    }
   
    return sb.toString();
    }
    
    public Room getExit(String direction) {
    return exits.get(direction);
    }
    
    public void NPC() {}
    
    public boolean getAnswer() {
    return false; 
    }
 
    public void ending() {}

}

Handler.java:

public class Handler {
protected Game game;

public Handler(Game game) {
this.game = game;
}

public void doCmd(String word) {}

public boolean isBye() {return false; }

}

HandlerGo.java:

public class HandlerGo extends Handler{
public HandlerGo(Game game) {
super(game);
}

@Override
public void doCmd(String word) {
// TODO Auto-generated method stub
game.goRoom(word);
}

}

HandlerHelp.java:

public class HandlerHelp extends Handler {

public HandlerHelp(Game game) {
super(game);
}

@Override
public void doCmd(String word) {
System.out.println("迷路了吗?你可以做的命令有:go bye help");
     System.out.println("如:\tgo east");
}

}

HandlerBye.java:

public class HandlerBye extends Handler {
public HandlerBye(Game game) {
super(game);
}

@Override
public boolean isBye() {
// TODO Auto-generated method stub
return true;
}

}

RoomBathroom.java:

import java.util.Scanner;

public class RoomBathroom extends Room {
private String answer;

public RoomBathroom(String description, Game game) 
    {
        super(description, game);
    }
    
    public boolean getAnswer() {
    boolean a = false;
    if (game.isAnswer == 5) {
    System.out.println("最后一题是:");
        System.out.println("厕所——打一地名");
    Scanner in = new Scanner(System.in);
    while(true) {
    answer = in.next();
    if (answer.equals("伦敦")) {
    System.out.println("******当当当******");
    System.out.println("***恭喜你获得了皇冠***");
    System.out.println("***快去继承王位吧!***");
    a = true;
    break;
    }else {
    System.out.println("错啦!有没有好好关心我们的翁恺男神!!!");
    System.out.println("再答一次:");
    }
    }
    }
    return a;
    }

}

RoomBedroom.java:

import java.util.Scanner;

public class RoomBedroom extends Room{
private String answer;

public RoomBedroom(String description,Game game) 
    {
        super(description,game);
    }

public boolean getAnswer() {
    boolean a = false;
    if (game.isAnswer == 4) {
    System.out.println("第五个谜题就是:");
    System.out.println("翁恺老师在JAVA课程里3.2课上穿的衣服颜色是:");
    Scanner in = new Scanner(System.in);
    while(true) {
    answer = in.next();
    if (answer.equals("黄色") || answer.equals("黄") || answer.equals("yellow")) {
    System.out.println("骚年你很厉害哦!最后一题在厕所");
    System.out.println("玩了这么久,去释放一下吧!");
    a= true;
    break;
    }else {
    System.out.println("错啦!有没有好好关心我们的翁恺男神!!!");
    System.out.println("再答一次:");
    }
    }
    }
    return a;
    }

}

RoomDiningroom.java:

import java.util.Scanner;

public class RoomDiningroom extends Room {
private String answer;

public RoomDiningroom(String description, Game game) 
    {
        super(description,game);
    }

public boolean getAnswer() {
boolean a = false;
    if (game.isAnswer == 1) {
    System.out.println("大厨:欢迎来到餐厅!");
      System.out.println("恭喜你解开第一题");
      System.out.println("第二个谜题是:");
      System.out.println("翁恺老师4月14日06:38转发的微博里出现的食物是:");
    Scanner in = new Scanner(System.in);
    while(true) {
    answer = in.next();
    if (answer.equals("包子") || answer.equals("小包子")) {
    System.out.println("恭喜你又答对了!第三个谜题在酒吧。");
    a = true;
    break;
    }else {
    System.out.println("错啦!有没有好好关心我们的翁恺男神!!!");
    System.out.println("再答一次:");
    }
    }
    }
    return a;

}

}

RoomLobby.java:

import java.util.Scanner;

public class RoomLobby extends Room {
private String answer;

public RoomLobby(String description, Game game) 
    {
        super(description,game);
    }
    
    public boolean getAnswer() {
    boolean a = false;
    if (game.isAnswer == 0) {
    System.out.println("管家:欢迎来到城堡!");
        System.out.println("你是来解谜的吧!");
        System.out.println("第一个谜题就是:");
        System.out.println("翁恺老师初一那年买的电脑型号是:");  
        Scanner in = new Scanner(System.in);
    while(true) {
    answer = in.next();
    if (answer.equals("LASER310")) {
    System.out.println("恭喜你答对了!第二个谜题在餐厅。");
    a = true;
    break;
    }else {
    System.out.println("错啦!有没有好好关心我们的翁恺男神!!!");
    System.out.println("再答一次:");
    }
    }
    }
    return a;
    }

}

RoomLoft.java:

import java.util.Scanner;

public class RoomLoft extends Room {
public RoomLoft(String description, Game game) 
    {
        super(description,game);
    }

public void ending(){
System.out.println("有王位了还不走?这么贪心?");
System.out.println("》。。。。。。。。。。。。");
System.out.println("。。。。。。。。。。。。。");
System.out.println("其实第七个房间你还没有去!");
System.out.println("。。。。。。。。。。。。。");
System.out.println("。。。。。。。。。。。。。");
System.out.println("它就在书房的楼上,请输入:go up");
Scanner in = new Scanner (System.in);
String line = in.nextLine();
if (line.equals("go up")) {
System.out.println("你在阁楼");
System.out.println("管家:王位算什么,其实这里住着美丽的公主——翁恺男神!!!");
System.out.println("啥?你不要?");
System.out.println("翁恺男神扣光他学分,打入地牢!!!");
System.out.println("----GAME OVER----");
}
in.close();
}
}

RoomPub.java:

import java.util.Scanner;

public class RoomPub extends Room {
private String answer;

public RoomPub(String description, Game game) 
    {
        super(description,game);
    }

public boolean getAnswer() {
boolean a = false;
    if (game.isAnswer == 2) {
    System.out.println("酒保:欢迎来到酒吧!");
        System.out.println("你已经解开两个谜题啦!");
        System.out.println("这是第三个:");
        System.out.println("浙江绍兴最有名的酒是:");
    Scanner in = new Scanner(System.in);
    while(true) {
    answer = in.next();
    if (answer.equals("黄酒")) {
    System.out.println("你怎么这么棒!第四个谜题在书房。");
    a = true;
    break;
    }else {
    System.out.println("错啦!答案只有两个字哦!");
    System.out.println("再答一次:");
    }
    }
    }
    return a;
       }

}

RoomStudy.java:

import java.util.Scanner;

public class RoomStudy extends Room {
private String answer;

public RoomStudy(String description,Game game) 
    {
        super(description,game);
    }

public boolean getAnswer() {
boolean a = false;
    if (game.isAnswer == 3) {
    System.out.println("管家:这里就是书房,有没有很想学习呢?");
        System.out.println("第四个谜题是");
        System.out.println("翁恺老师背后书架上的ANTENNA BOOK旁边蓝色的书的名字是:");
    Scanner in = new Scanner(System.in);
    while(true) {
    answer = in.next();
    if (answer.equals("HANDBOOK")) {
    System.out.println("一看就好好看视频了,这是第四题啦!");
    System.out.println("第五题就在卧室哦!");
    a = true;
    break;
    }else {
    System.out.println("错啦!有没有好好关心我们的翁恺男神!!!");
    System.out.println("再答一次:");
    }
    }
    }
    return a;
    }
}

城堡游戏 java相关推荐

  1. JAVA学习笔记(四)城堡游戏

    城堡游戏 我们在尝试了之前的简单媒体库构造之后,试着整合一下之前学到的关于类,继承,多态等知识,制作一个简单的城堡游戏,城堡游戏是一个简单的文字游戏,通过输入命令可以在地图上不同的房间进行移动. 目录 ...

  2. Java之城堡游戏设计

    一.城堡游戏介绍: 1.这个程序的任务是通过玩家的输入的方向(纯文字)在虚构的城堡内移动(以纯文字作为移动后的返回结果). 2.这个程序接受help.bye.go south.go north.go ...

  3. Java设计原则3—城堡游戏之可扩展性

    什么叫可扩展性? 可扩展性的意思就是代码的某些部分不需要经过修改就能适应将来可能的变化. 比如:现在要给城堡游戏中添加up和down两个方向,该怎么做呢? 这就要基于设计的城堡游戏中,在Java设计原 ...

  4. JAVA学习之路-简单的城堡游戏(一)

    简单的文字城堡游戏(一) 最近在学习后台的一些功能,发现自己的基础不是很牢固,所以想写点小程序,巩固一下以前学的知识,融合一下. 之前在慕课上学的课程中就有一个这样的小程序,写一个简单的文字城堡游戏. ...

  5. [翁恺老师 城堡游戏(无bug

    @[翁恺老师 城堡游戏(无bug) ]( Game.java类 package Castle; /***注意,这里的package 你们自己记得修改import java.util.*;public ...

  6. 18.3.7 第5周 设计原则 5.1城堡游戏+5.2消除代码赋值+5.3封装

    首先贴出未修改的代码 Game.java package castle;import java.util.Scanner;public class Game {private Room current ...

  7. 《LeetCode力扣练习》第55题 跳跃游戏 Java

    <LeetCode力扣练习>第55题 跳跃游戏 Java 一.资源 题目: 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 . 数组中的每个元素代表你在该位置可以跳跃的最大 ...

  8. 翁恺老师 | 城堡游戏解读

    这是我自己对城堡游戏的解读,解读后自己才不会囫囵吞枣地假装自己懂了. 城堡游戏是一个根据目前所处的房间与方向,来指明下一步所处位置与出口的小游戏. 翁恺老师讲课的精妙之处在于,从最简单也最缺乏设计感的 ...

  9. leetcode-292-Nim游戏(java|python)

    title: leetcode-292-Nim游戏(java|python) date: 2019-10-12 21:18:57 categories: leetcode tags: leetcode ...

最新文章

  1. 教程是php手工注入
  2. C#编程语言之byte[]数组和string的互相转化
  3. 【分解质因数】【树状数组】【快速幂】codeforces 2014 ACM-ICPC Vietnam National Second Round E. ACM...
  4. Linux vim开启/关闭代码着色(高亮显示)
  5. 服务器里怎么维修装备,教你在服务器加自己的装备
  6. xmta温度控制仪说明书_XMT系列数显温度控制器使用说明书
  7. 解决: Intellij IDEA 运行报错 Command line is too long
  8. 期刊缩写查询_干活分享——SCI期刊名英文缩写查询
  9. “老年”程序员带你用Python玩街霸,你的童年用编程实现也很简单
  10. C# 实现在线软件自动升级自动下载更新文件
  11. 为当前会话的所有作用域中的任何表最后生成的标识值。
  12. mysql 5.7 升级 8.0_MySQL5.7升级到8.0过程详解
  13. 2018-11-06 VSAN常见故障
  14. [转][C#]Environment 类
  15. a = a + 1, a++, ++a ,a+=1区别在哪
  16. Flash Builder4.7安装破解
  17. 3.从尾到头打印链表
  18. python3安装pymysql_ubuntu16.04 python3安装pymysql错误
  19. Python向数据库表格里插入万级数据
  20. PISCES P4-vSwitch 安装以及一次失败的测试

热门文章

  1. 网络游戏中的游戏模式如MMOPRG,PRG,NPRG等是什么意思?
  2. 惠普服务器u盘系统安装win7系统,惠普电脑怎么用U盘安装win7系统
  3. 抽烟行为监测识别系统 yolov5
  4. android并发命令,Android开发实践:基于命令模式的异步任务线程
  5. vue + vtkJs + itkJs进行dcom影像预览
  6. 结合工作详解PDCA实践
  7. bugku——抓住一只苍蝇
  8. 美国硅谷地图_在哪里找到顶尖人才:硅谷的系统地图
  9. 7-1 Maximum Subsequence Sum
  10. @@TRANCOUNT (Transact-SQL)