城堡游戏

来源:互联网 发布:java mysql utf8 乱码 编辑:程序博客网 时间:2024/04/28 06:13

城堡游戏

游戏描述:

1.这个程序的任务是通过玩家的输入的方向(纯文字)在虚构的城堡内移动(以纯文字作为移动后的返回结果)。

2.这个程序接受help、bye、go south、go north、go west、go east六种命令,要求命令单独一行输入并在结束时敲回车,另外如果接受go xxx的不合规信息会输出不存在这样的房间。

3.help提供帮助信息,bye结束游戏,go后面空一格加south、north、west、east表示在虚构的城堡中移动。

4.有四个房子,分别是:大堂,小酒吧,书房,卧室。

城堡东面是大堂西面是小酒吧南面是书房。

书房的东面是卧室。

卧室与大堂不相连。

卧室的上面是次卧。

地图:        

  小酒吧 —城堡 — 大堂                  

                     |              

                 书房 —   卧室

Game类

package 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(this));    handlers.put("bye", new HandlerBye(this));    handlers.put("help", new HandlerHelp(this));        createRooms();    }    private void createRooms()    {        Room outside, lobby, pub, study, bedroom,bedroom1;             //制造房间        outside = new Room("城堡外");        lobby = new Room("大堂");        pub = new Room("小酒吧");        study = new Room("书房");        bedroom = new Room("卧室");        bedroom1 =new Room("次卧");        //初始化房间的出口        outside.setExit("east",lobby);        outside.setExit("south",study);        outside.setExit("west",pub);        lobby.setExit("west", outside);        pub.setExit("east", outside);        study.setExit("north",outside);        study.setExit("east",bedroom);        bedroom.setExit("west", study);        bedroom.setExit("up", bedroom1);        bedroom1.setExit("down", bedroom);        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.print(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;      }      }      }}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类

package 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 dir,Room room)     {        exits.put(dir, room);    }    @Override    public String toString()    {        return description;    }    public String getExitDesc()    {    StringBuffer ret=new StringBuffer();    for(String dir :exits.keySet())    {    ret.append(dir);    ret.append(" ");    }    return ret.toString();    }    public Room getExit(String direction)    {    return exits.get(direction);    }}

Handler父类

package castle;public class Handler {protected Game game;public Handler(Game game){this.game=game;}public void doCmd(String word){}public boolean isBye(){return false;}}

HandlerBye子类

package castle;public class HandlerBye extends Handler {HandlerBye(Game game) {super(game);// TODO Auto-generated constructor stub}@Overridepublic boolean isBye() {// TODO Auto-generated method stubreturn true;}@Overridepublic void doCmd(String word) {// TODO Auto-generated method stubsuper.doCmd(word);}}

HandlerHelp子类

package castle;public class HandlerHelp extends Handler {HandlerHelp(Game game) {super(game);// TODO Auto-generated constructor stub}@Overridepublic void doCmd(String word) {        System.out.println("迷路了吗?你可以做的命令有:go bye help");        System.out.println("如:\tgo east");}}

HandlerGo子类

package castle;public class HandlerGo extends Handler {HandlerGo(Game game) {super(game);// TODO Auto-generated constructor stub}@Overridepublic void doCmd(String word) {// TODO Auto-generated method stubgame.goRoom(word);}}


原创粉丝点击