day 07 Castle

castle

package com.wengkai.castle;

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

public class Game
{
    private Room currentRoom;
    private HashMap<String, Handler> handlers = new HashMap<String, Handler>();

    public Game()
    {
        //        handlers.put("go", new HandlerGo());
        handlers.put("bye", new HandlerBye(this));
        handlers.put("help", new HandlerHelp(this));
        handlers.put("go", new HandlerGo(this));
        createRooms();
    }

    private void createRooms()
    {
        Room outside, lobby, pub, study, bedroom;

        //	制造房间
        outside = new Room("城堡外");
        lobby = new Room("大堂");
        pub = new Room("小酒吧");
        study = new Room("书房");
        bedroom = new Room("卧室");

        //	初始化房间的出口
        outside.setExit("east", lobby);
        outside.setExit("south", study);
        outside.setExit("weat", pub);
        lobby.setExit("west", outside);
        pub.setExit("east", outside);
        study.setExit("north", outside);
        study.setExit("east", bedroom);
        bedroom.setExit("west", study);
        lobby.setExit("up", pub);
        pub.setExit("down", lobby);

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

    private void printWelcome()
    {
        System.out.println();
        System.out.println("欢迎来到城堡!");
        System.out.println("这是一个超级无聊的游戏。");
        System.out.println("如果需要帮助,请输入 'help' 。");
        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 showPrompt()
    {
        System.out.println("你在" + currentRoom);
        System.out.print("出口有: ");
        System.out.println(currentRoom.getExitDesc());
        System.out.println();
    }

    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 (words[0].equals("help"))
            //            {
            //                printHelp();
            //            }
            //            else if (words[0].equals("go"))
            //            {
            //                goRoom(words[1]);
            //            }
            //            else if (words[0].equals("bye"))
            //            {
            //                break;
            //            }

        }
        in.close();
    }

    public static void main(String[] args)
    {

        Game game = new Game();
        game.printWelcome();
        game.play();
        System.out.println("感谢您的光临。再见!");

    }

}


package com.wengkai.castle;

import java.util.HashMap;

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


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

    //初始化房间的出口
    public void setExit(String direction, Room room)
    {
        exits.put(direction, room);//key value
    }

    @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)
    {
        Room ret = exits.get(direction);
        return ret;
    }
}

package com.wengkai.castle;

public class Handler
{
    protected Game game;

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

    public void doCmd(String word)
    {
    }

    public boolean isBye()
    {
        return false;
    }
}

package com.wengkai.castle;

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

    @Override
    public void doCmd(String word)
    {
        game.goRoom(word);
    }
}

package com.wengkai.castle;

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");
    }
}

package com.wengkai.castle;

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

    @Override
    public boolean isBye()
    {
        return true;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追寻远方的人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值