私はクラス用のテキストベースのゲームに取り組んでおり、少しの試行錯誤でほとんどのゲームを動作させることができました。しかし、ユーザー入力の解析で障害に遭遇しました。これは、すでに好き以上に単純化する必要がありました。アイデアは、入力として文字列を受け取り、別のクラスでインスタンス化されたオブジェクトのメソッドを呼び出すメソッドを持つことです。これがコードです。はい、複雑な混乱であることはわかっています。
この質問の言い方が少し悪かったようです。自分がやりたいことをする方法がわからないだけで、実際に問題に遭遇したことはありません。ただし、Gilbert La Blanc が提案したアプローチは非常に優れており、私の問題を解決しました。多分私は実際にこの決勝に合格するでしょう!ご協力ありがとうございました。
import java.util.Scanner;
public class Parser{
static String[] Prepositions = {"on", "in", "under"};
static String Word;
public static void Parse(String Raw){
Raw.toLowerCase(); //Make input lower case
Scanner Splitter = new Scanner(Raw).useDelimiter(" "); //Split into seperate words
Word = Splitter.next(); //Get first word
Splitter.close();
CheckFirst(Word);
}
public static void CheckFirst(String Word){
switch(Word){
case "north":
case "n":
case "south":
case "s":
case "east":
case "e":
case "west":
case "w":
Player.Location.LeaveRoom(Word);
break;
case "take": TakeWhat(); break;
default: System.out.print("That was absolute gibberish!"); break;
}
}
public static void TakeWhat(){
System.out.println("Take what?");
System.out.print("> ");
String ToTake = Game.Input.next();
ToTake.toLowerCase();
switch(ToTake){
case "key": break;
default: TakeWhat();
}
}
}