PBO - Tugas 6 - Aplikasi World of Zuul
- Dapatkan link
- X
- Aplikasi Lainnya
TUGAS 6 - PBO - World of Zuul
Nama : Kevin Ashil Faadilah
NRP : 05111740000178
NRP : 05111740000178
Kelas : PBO - B
Tugas kali ini menduplikasi gim bertajuk World of Zuul yang merupakan implementasi dari desain class (cohesion dan coupling) dan disadur dari link berikut milik Bapak Fajar Baskoro. Gim ini adalah gim yang sangat sederhana bertemakan adventure di mana pengguna dapat berkeliling banyak tempat, dalam hal ini universitas.
Ada 5 class yang digunakan dalam pembuatan gim ini:
- Class Command.java, sebagai class tempat penyimpanan perintah-perintah yang diinputkan pengguna.
- Class CommandWords.java, sebagai pendefinisian perintah valid dalam gim (go, help, quit) dan disimpan dalam array object string.
- Class Game.java, sebagai class utama untuk menjalankan class-class lain, seperti parsing, membuat room, dan juga sebagai tampilan utama gim.
- Class Parse.java, sebagai class untuk menerjemahkan perintah yang diinputkan pengguna dan mengubahnya menjadi perintah "Adventure".
- Class Room.java, sebagai class yang menampilkan lokasi ruangan di dalam gim.
Source Code
1. Command.java
- /**
- * Class ini menyimpan informasi perintah yang akan diinginkan user.
- * Perintah berisi dua string : "Command Word" dan "Second Word".
- *
- * @author Kevin Ashil
- * @version 24 November 2020
- */
- public class Command
- {
- private String commandWord;
- private String secondWord;
- public Command(String firstWord, String secondWord)
- {
- commandWord = firstWord;
- this.secondWord = secondWord;
- }
- public String getCommandWord()
- {
- return commandWord;
- }
- public String getSecondWord()
- {
- return secondWord;
- }
- public boolean isUnknown()
- {
- return (commandWord == null);
- }
- public boolean hasSecondWord()
- {
- return (secondWord != null);
- }
- }
2. CommandWords.java
- /**
- * Class ini menyimpan daftar perintah yang digunakan dalam game.
- *
- * @author Kevin Ashil
- * @version 24 November 2020
- */
- public class CommandWords
- {
- private static final String validCommands[] = {
- "go", "quit", "help", "look"
- };
- public CommandWords()
- {
- }
- public boolean isCommand(String aString)
- {
- for (int i = 0; i < validCommands.length; i++)
- {
- if (validCommands[i].equals(aString))
- {
- return true;
- }
- }
- return false;
- }
- }
3. Game.java
- /**
- * Class utama "World of Zuul".
- * Class ini menginisialisasi semua class, termasuk membuat room, parsing dan
- * memulai game, dan eksekusi perintah yang telah di-parsing.
- *
- * @author Kevin Ashil
- * @version 24 November 2020
- */
- public class Game
- {
- private Parser parser;
- private Room currentRoom;
- public Game()
- {
- createRooms();
- parser = new Parser();
- }
- private void createRooms()
- {
- Room outside, theatre, pub, lab, office;
- outside = new Room("outside the main entrance of the university");
- theatre = new Room("in a lecture theatre");
- pub = new Room("in the campus pub");
- lab = new Room("in a computing lab");
- office = new Room("in the computing admin office");
- outside.setExits(null, theatre, lab, pub);
- theatre.setExits(null, null, null, outside);
- pub.setExits(null, outside, null, null);
- lab.setExits(outside, office, null, null);
- office.setExits(null, null, null, lab);
- currentRoom = outside;
- }
- public void play()
- {
- printWelcome();
- boolean finished = false;
- while (! finished)
- {
- Command command = parser.getCommand();
- finished = processCommand(command);
- }
- System.out.println("Thank you for playing. Good bye.");
- }
- private void printWelcome()
- {
- System.out.println();
- System.out.println("Welcome to Adventure!");
- System.out.println("Adventure is a new, incredibly boring adventure game.");
- System.out.println("Type 'help' if you need help.");
- System.out.println();
- System.out.println("You are " + currentRoom.getDescription());
- System.out.print("Exits: ");
- if (currentRoom.northExit != null)
- {
- System.out.print("north ");
- }
- if (currentRoom.eastExit != null)
- {
- System.out.print("east ");
- }
- if (currentRoom.southExit != null)
- {
- System.out.print("south ");
- }
- if (currentRoom.westExit != null)
- {
- System.out.print("west ");
- }
- System.out.println();
- System.out.println();
- }
- private boolean processCommand(Command command)
- {
- boolean wantToQuit = false;
- if (command.isUnknown())
- {
- System.out.println("I don't know what you mean...");
- System.out.println();
- return false;
- }
- String commandWord = command.getCommandWord();
- if (commandWord.equals("help"))
- {
- printHelp();
- }
- else if (commandWord.equals("go"))
- {
- goRoom(command);
- }
- else if (commandWord.equals("quit"))
- {
- wantToQuit = quit(command);
- }
- return wantToQuit;
- }
- private void printHelp()
- {
- System.out.println("You are lost. You are alone. You are wander");
- System.out.println("around at the university.");
- System.out.println();
- System.out.println("Your command words are:");
- System.out.println(" go quit help");
- System.out.println();
- }
- private void goRoom(Command command)
- {
- if (! command.hasSecondWord())
- {
- System.out.println("Go where?");
- System.out.println();
- return;
- }
- String direction = command.getSecondWord();
- Room nextRoom = null;
- if (direction.equals("north"))
- {
- nextRoom = currentRoom.northExit;
- }
- if (direction.equals("east"))
- {
- nextRoom = currentRoom.eastExit;
- }
- if (direction.equals("west"))
- {
- nextRoom = currentRoom.westExit;
- }
- if (direction.equals("south"))
- {
- nextRoom = currentRoom.southExit;
- }
- if (nextRoom == null)
- {
- System.out.println("There is no door!");
- System.out.println();
- }
- else
- {
- currentRoom = nextRoom;
- System.out.println("You are " + currentRoom.getDescription());
- System.out.print("Exits: ");
- if (currentRoom.northExit != null)
- {
- System.out.print("north ");
- }
- if (currentRoom.eastExit != null)
- {
- System.out.print("east ");
- }
- if (currentRoom.southExit != null)
- {
- System.out.print("south ");
- }
- if (currentRoom.westExit != null)
- {
- System.out.print("west ");
- }
- System.out.println();
- System.out.println();
- }
- }
- private boolean quit(Command command)
- {
- if (command.hasSecondWord())
- {
- System.out.println("Quit what?");
- System.out.println();
- return false;
- }
- else
- {
- return true;
- }
- }
- }
4. Parse.java
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.util.StringTokenizer;
- /**
- * Class ini untuk parsing input user dan menginterpretasikan menjadi perintah
- * "Adventure".
- * Tiap kali dipanggil, class akan membaca line terminal dan interpretasi
- * menjadi 2 kata perintah.
- *
- * @author Kevin Ashil
- * @version 24 November 2020
- */
- public class Parser
- {
- private CommandWords commands;
- public Parser()
- {
- commands = new CommandWords();
- }
- public Command getCommand()
- {
- String inputLine = "";
- String word1;
- String word2;
- System.out.print("> ");
- BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
- try
- {
- inputLine = reader.readLine();
- }
- catch (java.io.IOException exc)
- {
- System.out.println("There was an error during reading: " + exc.getMessage());
- }
- StringTokenizer tokenizer = new StringTokenizer(inputLine);
- if (tokenizer.hasMoreTokens())
- {
- word1 = tokenizer.nextToken();
- }
- else
- {
- word1 = null;
- }
- if (tokenizer.hasMoreTokens())
- {
- word2 = tokenizer.nextToken();
- }
- else
- {
- word2 = null;
- }
- if (commands.isCommand(word1))
- {
- return new Command(word1, word2);
- }
- else
- {
- return new Command(null, word2);
- }
- }
- }
5. Room.java
- /**
- * Class ini menampilkan lokasi game yang menghubungkan satu room dengan room
- * lain dengan pintu keluar.
- * Ada pintu keluar north, east, south, dan west.
- * @author Kevin Ashil
- * @version 24 November 2020
- */
- public class Room
- {
- public String description;
- public Room northExit;
- public Room southExit;
- public Room eastExit;
- public Room westExit;
- public Room(String description)
- {
- this.description = description;
- }
- public void setExits(Room north, Room east, Room south, Room west)
- {
- if (north != null)
- {
- northExit = north;
- }
- if (east != null)
- {
- eastExit = east;
- }
- if (south != null)
- {
- southExit = south;
- }
- if (west != null)
- {
- westExit = west;
- }
- }
- public String getDescription()
- {
- return description;
- }
- }
Output
- Dapatkan link
- X
- Aplikasi Lainnya
Komentar
Posting Komentar