From 9daad10509350a5fc2c738817727230dc236e17d Mon Sep 17 00:00:00 2001 From: Luca Carnegie <41924665+lcarnegie@users.noreply.github.com> Date: Wed, 29 May 2019 14:13:10 -0400 Subject: [PATCH] worked on riddle class --- data/synonyms.dat | 3 ++ data/words.dat | 3 +- src/com/bayviewglen/zork/Command.java | 2 +- src/com/bayviewglen/zork/CommandWords.java | 37 +++++++++++++++++++++- src/com/bayviewglen/zork/Parser.java | 10 +++--- 5 files changed, 48 insertions(+), 7 deletions(-) diff --git a/data/synonyms.dat b/data/synonyms.dat index b94eebc..e0a2eb6 100644 --- a/data/synonyms.dat +++ b/data/synonyms.dat @@ -3,6 +3,9 @@ grab, take destroy, attack kill, attack ?, help +man, riddler +butler, riddler +helper, riddler leave, quit drive, go move, go diff --git a/data/words.dat b/data/words.dat index 6345e32..cc48477 100644 --- a/data/words.dat +++ b/data/words.dat @@ -2,7 +2,8 @@ go, verb quit, verb help, verb jump, verb -read,verb +read, verb +talk, verb north, direction south, direction west, direction diff --git a/src/com/bayviewglen/zork/Command.java b/src/com/bayviewglen/zork/Command.java index 64bf834..c3f883f 100644 --- a/src/com/bayviewglen/zork/Command.java +++ b/src/com/bayviewglen/zork/Command.java @@ -108,7 +108,7 @@ class Command { return enemy; } public boolean hasRiddler() { - + return CommandWords.isRiddler(riddler); } public boolean hasEnemy() { return !enemy.equals(""); diff --git a/src/com/bayviewglen/zork/CommandWords.java b/src/com/bayviewglen/zork/CommandWords.java index de1ff85..a5ade3d 100644 --- a/src/com/bayviewglen/zork/CommandWords.java +++ b/src/com/bayviewglen/zork/CommandWords.java @@ -16,7 +16,8 @@ import java.util.Scanner; */ class CommandWords { // a constant array that holds all valid command words - private static HashMap m_words = new HashMap();; + private static HashMap m_words = new HashMap(); + private static HashMap m_synonyms = new HashMap(); /** * Constructor - initialise the command words. */ @@ -33,6 +34,18 @@ class CommandWords { }catch (Exception e) { e.printStackTrace(); } + + try { + Scanner in = new Scanner(new File("data/synonyms.dat")); + while(in.hasNext()){ + String text = in.nextLine(); + String[] textarr = text.split(","); + m_synonyms.put(textarr[0], textarr[1].substring(1)); + } + in.close(); + }catch (Exception e) { + e.printStackTrace(); + } } /** @@ -71,6 +84,14 @@ class CommandWords { return false; } } + + public static boolean isRiddler(String aString) { + try { + return m_words.get(aString).equals("riddler"); + }catch(Exception e) { + return false; + } + } /* * Print all valid commands to System.out. */ @@ -82,4 +103,18 @@ class CommandWords { } System.out.println(); } + + public static String replaceSynonym(String word) { + try { + String words = m_synonyms.get(word); + if(words == null) + throw new Exception(); + else + return words; + } catch(Exception e) { + return word; + } + } + + } \ No newline at end of file diff --git a/src/com/bayviewglen/zork/Parser.java b/src/com/bayviewglen/zork/Parser.java index 71eedb7..eb80057 100644 --- a/src/com/bayviewglen/zork/Parser.java +++ b/src/com/bayviewglen/zork/Parser.java @@ -36,7 +36,7 @@ class Parser { String direction = ""; String item = ""; String enemy = ""; - String + String riddler = ""; boolean open = false; //String word2; ArrayList words = new ArrayList(); @@ -66,6 +66,8 @@ class Parser { item = words.get(i); }else if(CommandWords.isEnemy(words.get(i))){ enemy = words.get(i); + }else if(CommandWords.isRiddler(words.get(i))) { + riddler = words.get(i); }else{ otherWords.add(words.get(i)); } @@ -73,11 +75,11 @@ class Parser { //System.out.println(verb); if (CommandWords.isCommand(verb)) if(!open) - return new Command(verb, otherWords, direction, item, enemy); + return new Command(verb, otherWords, direction, item, enemy, riddler); else - return new Command("open", otherWords, direction, item, enemy); + return new Command("open", otherWords, direction, item, enemy, riddler); else - return new Command(null, otherWords, direction, item, enemy); + return new Command(null, otherWords, direction, item, enemy, riddler); } /**