城堡游戏
来源:互联网 发布: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);}}
阅读全文
0 0
- 城堡游戏
- castle_game_engine 城堡游戏引擎
- 城堡
- 城堡
- 城堡
- Java设计原则2—城堡游戏之封装
- Java设计原则3—城堡游戏之可扩展性
- JAVA学习之路-简单的城堡游戏(一)
- Java设计原则1—城堡游戏之消除代码复制
- 多云城堡
- 积木城堡
- 城堡问题
- 飞行城堡
- 迷宫城堡
- 城堡问题
- 芒卡斯特城堡
- 积木城堡
- 积木城堡
- Thread类中sleep方法
- POJ 3187 Backward Digit Sums(next_permutation()+ 组合数)
- 点亮细胞21-30
- 洛谷10月月赛R2·浴谷八连测R3 T1
- CentOS 7下yum重装 MySQL 5.7 (远程连接成功)
- 城堡游戏
- 重构—改善既有代码的设计
- Jmeter之分布式测试
- wav、mp3和ogg格式浏览器的支持情况
- 枚举用法实例
- 在Eclipse中如何利用在Anaconda中建立的Python虚拟环境进行开发
- iOS11适配-Safe Area
- gdb break 断点设置(一)
- 关于线性表的10个问题