Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Ini main Class "World of Zuul"
- * "World of Zuul" sangat simpel, game adventure berbasis text. User
- * bisa berjalan di sekitar pemandangan. Itu saja. Ini benar-benar harus
- * diperpanjang agar lebih menarik!
- *
- * Untuk bermain, buat instance dari class ini dan panggil method "play"
- *
- * Main class ini membuat dan menginisialisasi all the others: Class ini
- * membuat semua rooms, membuat parser dan memulai game.
- * Ini juga mengevaluasi dan menjalankan perintah yang dikembalikan
- * dari parser.
- *
- * @author thomasdwi.a
- * @version 20201115
- */
- public class Game
- {
- private Parser parser;
- private Room currentRoom;
- /**
- * Membuat game dan menginisialisasi map internal.
- */
- public Game()
- {
- createRooms();
- parser = new Parser();
- }
- /**
- * Membuat semua room dan menghubungkan pintu keluar mereka.
- */
- private void createRooms()
- {
- Room outside, theater, pub, lab, office;
- // Membuat semua room
- outside = new Room("outside the main entrance of the university");
- theater = new Room("in a lecture theater");
- pub = new Room("in the campus pub");
- lab = new Room("in a computing lab");
- office = new Room("in the computing admin office");
- // inisialisasi jalan keluar dari room
- outside.setExits(null, theater, lab, pub);
- theater.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; // memulai game dari luar(outside)
- }
- /**
- * Main play routine. Berulang hingga selesai permainan.
- */
- public void play()
- {
- printWelcome();
- // masuk ke main command loop. Disini kita berulang kali membaca perintah dan
- // menjalankannya sampai permainan selesai.
- boolean finished = false;
- while (! finished) {
- Command command = parser.getCommand();
- finished = processCommand(command);
- }
- System.out.println("Thank you for playing. Good bye.");
- }
- /**
- * Mencetak pesan selamat datang untuk pemain.
- */
- private void printWelcome()
- {
- System.out.println();
- System.out.println("Welcome to the World of Zuul!");
- System.out.println("World of Zuul 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();
- }
- /**
- * Diberikan perintah, proses (yaitu: menjalankan) perintah.
- * @param command sebagai Perintah yang akan diproses.
- * @return true Jika perintah menyelesaikan game, false jika tidak.
- */
- private boolean processCommand(Command command)
- {
- boolean wantToQuit = false;
- if(command.isUnknown()) {
- System.out.println("I don't know what you mean...");
- 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;
- }
- // Implementasi dari perintah pemain:
- /**
- * mencetak informasi help.
- * Di sini kami mencetak beberapa pesan bodoh dan tersembunyi serta
- * daftar kata command
- */
- private void printHelp()
- {
- System.out.println("You are lost. You are alone. You wander");
- System.out.println("around at the university.");
- System.out.println();
- System.out.println("Your command words are:");
- System.out.println(" go quit help");
- }
- /**
- * Cobalah untuk pergi ke satu arah. Jika ada jalan keluar,
- * masuk ke room baru, jika tidak cetak pesan error.
- */
- private void goRoom(Command command)
- {
- if(!command.hasSecondWord()) {
- // jika tidak ada second word, kita tidak kemana-mana...
- System.out.println("Go where?");
- return;
- }
- String direction = command.getSecondWord();
- // Coba meninggalkan room sekarang.
- Room nextRoom = null;
- if(direction.equals("north")) {
- nextRoom = currentRoom.northExit;
- }
- if(direction.equals("east")) {
- nextRoom = currentRoom.eastExit;
- }
- if(direction.equals("south")) {
- nextRoom = currentRoom.southExit;
- }
- if(direction.equals("west")) {
- nextRoom = currentRoom.westExit;
- }
- if (nextRoom == null) {
- System.out.println("There is no door!");
- }
- 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();
- }
- }
- /**
- * "Quit" dimasukkan. Cek sisa command untuk melihat
- * apakah kita benar-benar keluar dari permainan.
- * @return true, jika perintah ini untuk keluar dari game, false jika tidak.
- */
- private boolean quit(Command command)
- {
- if(command.hasSecondWord()) {
- System.out.println("Quit what?");
- return false;
- }
- else {
- return true; // sinyal bahwa kita mau quit
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement