Instructions
Requirements and Specifications
Source Code
APP
public class App {
public static void main(String[] args) throws Exception {
Game game = new Game();
game.loadData("locations.txt", "items.txt", "characters.txt");
game.start();
}
}
CHARACTER
import java.util.List;
public class Character {
private int id;
private String name;
private String description;
private int sex; // 1 for male and 0 for female
private String dialog;
private int requiresAnswer;
private int requiredItemId;
private int rewardItemId;
private boolean rewardDelivered;
// Default constructor
public Character()
{
dialog = "";
name = "";
description = "";
id = -1;
requiredItemId = -1;
rewardItemId = -1;
rewardDelivered = false;
}
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return this.description;
}
public void setDescription(String description) {
this.description = description;
}
public int getSex() {
return this.sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public String getDialog() {
return this.dialog;
}
public void setDialog(String dialog) {
this.dialog = dialog;
}
public int getRequiredItemId() {
return this.requiredItemId;
}
public void setRequiredItemId(int requiredItemId) {
this.requiredItemId = requiredItemId;
}
public int getRewardItemId() {
return this.rewardItemId;
}
public void setRewardItemId(int rewardItemId) {
this.rewardItemId = rewardItemId;
}
// static method to parse data
public static Character parseData(String data) {
String row[] = data.split(",");
Character character = new Character();
character.setId(Integer.valueOf(row[0]));
character.setName(row[1]);
character.setDescription(row[2]);
character.setSex(Integer.valueOf(row[3]));
character.setDialog(row[4]);
character.requiresAnswer = Integer.valueOf(row[5]);
character.setRequiredItemId(Integer.valueOf(row[6]));
character.setRewardItemId(Integer.valueOf(row[7]));
return character;
}
// method
public boolean startDialog(Control control, Player player, List- items)
{
if(requiresAnswer == 1) {
System.out.print(getName() + ": " + getDialog());
int input = control.getYesNo();
if(input == 1) {
// check if player has item
Item item = null;
for(Item it: items) {
if(it.getId() == requiredItemId) {
item = it;
break;
}
}
if(player.hasItem(item)) {
System.out.print(getName() + ": Thank you Alice");
player.removeItem(item);
if(rewardItemId != -1) {
Item reward = null;
for(Item it: items) {
if(it.getId() == rewardItemId) {
reward = it;
break;
}
}
System.out.print("!, please take this reward with you!\n");
System.out.println("You received: " + reward.toString());
player.getInventory().addItem(reward);
requiresAnswer = 0;
}
else {
System.out.print("!\n");
}
return true;
}
else {
System.out.println(getName() + ": Do not lie to me Alice, you do not have it!");
return false;
}
}
else{
System.out.println(getName() + ": Then, go back and find it.");
return false;
}
}
else
{
System.out.print(getName() + ": Hello Alice, good to see you!");
return true;
}
}
}
CONTROL
import java.util.Scanner;
public class Control {
private Scanner sc;
public Control()
{
sc = new Scanner(System.in);
}
public int getMovement(){
String input;
while(true)
{
// ask user for movement (north, south, etc)
input = sc.nextLine().toLowerCase();
if(input.compareTo("north") == 0)
return 0;
else if(input.compareTo("south") == 0)
return 1;
else if(input.compareTo("east") == 0)
return 2;
else if(input.compareTo("west") == 0)
return 3;
else
System.out.println("Please enter a valid movement.");
}
}
public int getTakeOrIgnore()
{
String input;
while(true)
{
// ask user for action (take or ignore)
input = sc.nextLine().toLowerCase();
String[] input_lst = input.split(" ");
if(input_lst[0].compareTo("take") == 0)
return Integer.valueOf(input_lst[1]);
else if(input.compareTo("ignore") == 0)
return 0;
else
System.out.println("Please enter a valid action.");
}
}
public int getYesNo() {
String input;
while(true)
{
// ask user for action (take or ignore)
input = sc.nextLine().toLowerCase();
if(input.compareTo("yes") == 0)
return 1;
else if(input.compareTo("no") == 0)
return 0;
else
return -1;
}
}
}