基础城堡游戏设计——Java

效果展示:

Game.java 

import java.util.Scanner;
import java.util.SplittableRandom;

public class Game {
    private Room currentRoom;

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

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

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

        currentRoom = outside;
    }


    private void printWelcom(){
        creatRooms();
        System.out.println();
        System.out.println("欢迎来到城堡!");
        System.out.println("这是一个超级无聊的游戏!");
        System.out.println("如果需要帮助,请输入‘help’~,我就会来帮你啦!~");
        System.out.println();
        showPrompt();
    }

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

    private 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 static void main(String[] args){
        Scanner in = new Scanner(System.in);
        Game game = new Game();
        game.printWelcom();


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

 Room.java

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 setExits(String dir,Room room){
        exits.put(dir, room);
    }

    @Override
    public String toString(){
        return description;
    }

    // 返回一个用来表达现在有什么房间的一个描述字符串
    public String getExitDesc(){
        StringBuffer sb = new StringBuffer();
//        String ret = ""; //用String 每次做++ 操作, 系统开销会很大
        for( String dir: exits.keySet() ){
            sb.append(dir);
            sb.append(' ');
        }
        return sb.toString();
    }

    public Room getExit(String direction) {
        return exits.get(direction);
    }
}

        分享一个简单的城堡游戏,把上述代码放到一个包里面,直接运行Game.java即可,周五小小娱乐一下!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值