6.城堡游戏

2018-11-13  本文已影响6人  Joypang
ackage castle;
 
import java.util.HashMap;
public class Room {
    
    private String description;
    HashMap<String,Room> exits = new HashMap<String,Room>();
    public Room(String description) {    
        this.description = description;
    }
    
    public void setExit(String dir,Room room) {
        exits.put(dir, room);
    }
    
    public String getExitdesc() {
        StringBuffer sb = new StringBuffer();
        for(String dir :exits.keySet()) {
            sb.append(dir);
            sb.append(" ");
        }
        return sb.toString();
    }
    public Room getExit(String dir) {
        return exits.get(dir);
    }
    public String toString() {
        return ""+description;
    }
}
package castle;
 
import java.util.Scanner;
 
public class Game {
    private Room currentRoom;
        
    public Game() 
    {
        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("west",pub);
        lobby.setExit("east", outside);
        study.setExit("north",outside);
        study.setExit("south",bedroom);
        bedroom.setExit("west",study);
        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();
        System.out.println("现在你在" + currentRoom);
        System.out.print("出口有:");
        System.out.print(currentRoom.getExitdesc());
    }
 
    // 以下为用户命令
 
    private void printHelp() 
    {
        System.out.print("迷路了吗?你可以做的命令有:go bye help");
        System.out.println("如:\tgo east");
    }
 
    private void goRoom(String direction) 
    {
        Room nextRoom = null;
        if(direction.equals("north")) {
            nextRoom = currentRoom.getExit("north");
        }
        if(direction.equals("east")) {
            nextRoom = currentRoom.getExit("east");
        }
        if(direction.equals("south")) {
            nextRoom = currentRoom.getExit("south");
        }
        if(direction.equals("west")) {
            nextRoom = currentRoom.getExit("west");
        }
 
        if (nextRoom == null) {
            System.out.println("那里没有门!");
        }
        else {
            currentRoom = nextRoom;
            System.out.println("你在" + currentRoom);
            System.out.print("出口有: ");
            System.out.print(currentRoom.getExitdesc());
            System.out.println();
        }
    }
    //public void showPrompt(){
//
//
//
//
//
//

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Game game = new Game();
        game.printWelcome();
 
        while ( true ) {
                String line = in.nextLine();
                String[] words = line.split(" ");
                if ( words[0].equals("help") ) {
                    game.printHelp();
                } else if (words[0].equals("go") ) {
                    game.goRoom(words[1]);
                } else if ( words[0].equals("bye") ) {
                    break;
                }
        }
        
        System.out.println("感谢您的光临。再见!");
        in.close();
    }
 
}
消除代码复制
封装

适用于将来的需要(可以在将来使用)

用封装来降低耦合

可扩展性

用借口来实现聚合

框架加数据

以框架+数据来提高可扩展性

上一篇 下一篇

猜你喜欢

热点阅读