Tugas 6 - Game of Zuul

Tugas 6 yang diberikan ialah membuat game berupa program bernama Game of Zuul. Game of Zuul ini merupakan implementasi dari designing class. 

Berikut merupakan dokumentasi dari Game of Zuul.

Source Code

Pada program Game of Zuul ini memiliki 5 class,

1. Class Game

/**
* Class Game merupakan main class dari aplikasi Game of Zuul.
* Class Game ini membuat dan menginisialisasikan hal sebagai berikut,
* membuat semua room, membuat parser dan juga memulai game. Class ini
* juga mengevaluasi dan mengeksekusi perintah ketika mereturn parser.
*
* @author Fidhia Ainun Khofifah
* @version 0.1 18/11/2020
*/
public class Game
{
private Parser parser;
private Room currentRoom;
/**
* Membuat game dan inisialisasi map
*/
public Game()
{
createRooms();
parser = new Parser();
}
/**
* Membuat seluruh ruangan dan menghubungkan pintu keluar room.
*/
private void createRooms()
{
Room outside, theater, pub, lab, office;
//membuat 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 pintu keluar 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; //mulai game outside
}
/**
* fungsi main play. Looping hingga akhir play.
*/
public void play()
{
printWelcome;
//Masuk fungsi perulangan perintah main.
//Berulang membaca perintah dan eksekusi hingga game selesai.
boolean finished = false;
while(!finished)
{
Command command = parser.getCommand();
finished = processCommand(command);
}
System.out.println("Thank you for playing. Good bye^^");
}
/**
* Print pesan pembuka saat akan memulai game untuk player.
*/
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.println("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();
}
/**
* Memberikan sebuah perintah, kemudian eksekusi perintah.
* @param memberikan perintah pada perintahnya untuk di proses.
* @return true jika perintahnya game selesai, false untuk perintah lain.
*/
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;
}
//impelementasu dari perintah user:
/**
* Print informasi untuk perintah help.
*/
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");
}
/**
* Coba untuk pergi ke satu arah saja. Jika ada sebuah exit,
* masuk ke dalam room baru, atau print error.
*/
private void goRoom(Command command)
{
if(!command.hasSecondWord())
{
System.out.println("Go where?");
return;
}
String direction = command.getSecondWord();
//Mencoba keluar ruangan.
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();
}
}
/**
* fungsi untuk benar-benar keluar dari game.
* @return true, jika perintah keluar dari game, false jika tidak.
*/
private boolean quit(Command command)
{
if(command.hasSecondWord())
{
System.out.println("Quit what?");
return false;
}
else
{
return true; //tanda untuk user ketika ingin keluar
}
}
}
view raw Game hosted with ❤ by GitHub

2. Class Parser

import java.util.Scanner;
/**
* Class parser fungsinya untuk membaca input dari pemain dan menerjemahkan
* arahannya sebagai sebuah perintah.
*
* @author Fidhia Ainun Khofifah
* @version 0.2 18/11/2020
*/
public class Parser
{
private CommandWords commands;
private Scanner reader;
/**
* Membuat sebuah parser untuk membaca dari terminal window.
*/
public Parser()
{
commands = new CommandWords();
reader = new Scanner(System.in);
}
/**
* @return Perintah selanjutnya dari user.
*/
public Command getCommand()
{
String inputLine;
String word1 = null;
String word2 = null;
System.out.print("-> ");
inputLine = reader.nextLine();
Scanner tokenizer = new Scanner(inputLine);
if(tokenizer.hasNext())
{
word1 = tokenizer.next();
if(tokenizer.hasNext())
{
word2 = tokenizer.next();
}
}
if(commands.isCommand(word1))
{
return new Command(word1, word2);
}
else
{
return new Command(null, word2);
}
}
}
view raw Parser hosted with ❤ by GitHub

3. Class Room

/**
* Class room. Terhubung ke room lain melalui exit.
*
* @author Fidhia Ainun Khofifah
* @version (a version number or a date)
*/
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;
}
/**
* Deklarasikan exit dari setiap ruangan.
* @param north untuk exit north.
* @param east untuk exit east.
* @param south untuk exit south.
* @param west untuk exit west
*
*/
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;
}
}
/**
* @return Deskripsi dari room
*/
public String getDescription()
{
return description;
}
}
view raw Room hosted with ❤ by GitHub

4. Class Command

/**
* Class ini menyimpan informasi tentang apa yang diperintahkan oleh user.
*
* @author Fidhia Ainun Khofifah
* @version 0.1 18/11/2020
*/
public class Command
{
private String commandWord;
private String secondWord;
/**
* Membuat objek perintah.
* @param firstword Kata pertama perintah.
* Beri null jika perintah tidak terdeteksi.
* @param secondword Kata kedua perintah.
*/
public Command(String firstWord, String secondWord)
{
commandWord = firstWord;
this.secondWord = secondWord;
}
/**
* Return ke perintah (command)
* @return Kata perintah
*/
public String getCommandWord()
{
return commandWord;
}
/**
* @return Second word dari perintah. Return null jika tidak ada second word.
*/
public String getSecondWord()
{
return secondWord;
}
/**
* @return true jika perintah tidak dipahami.
*/
public boolean isUnknown()
{
return (commandWord==null);
}
/**
* @return true jika perintah memiliki kata kedua.
*/
public boolean hasSecondWord()
{
return (secondWord!=null);
}
}
view raw Command hosted with ❤ by GitHub

5. Class CommandWords

/**
* Class CommandWords menyimpan sebuah enum dari semua perintah pada game.
*
* @author Fidhia Ainun Khofifah
* @version 0.1 18/11/2020
*/
public class CommandWords
{
private static final String[] validCommands = {"go", "quit", "help"};
public CommandWords()
{
}
public boolean isCommand(String aString)
{
for(int i=0; i < validCommands.length; i++)
{
if(validCommands[i].equals(aString))
{
return true;
}
}
return false;
}
}
view raw CommanWords hosted with ❤ by GitHub

Run Code

Berikut merupakan hasil run output dari program.

Sekian dari dokumentasi tugas 6.

Comments

Popular posts from this blog

Jawaban ETS Pemrograman Website

Tugas 6 Pemrograman Web - Membuat Form Login dan Message dengan Bootstrap