private string ProcessCommand(Machine machine, SimpleInputOutput io, string text) { io.Output = ""; io.WaitingForInput = false; _output.WriteLine(">{0}", text); machine.processText(text); return(WaitForOutput(machine, io)); }
private string WaitForOutput(Machine machine, SimpleInputOutput io) { while (!io.WaitingForInput && !machine.isFinished()) { machine.processInstruction(); } _output.WriteLine(io.Output.Substring(0, io.Output.Length - 1)); return(io.Output); }
public void PlayZork() { var io = new SimpleInputOutput(); var machine = new Machine(Zork1.GetData(), io); WaitForOutput(machine, io); Assert.True(ProcessCommand(machine, io, "look").Contains("West of House")); Assert.True(ProcessCommand(machine, io, "open mailbox").Contains("leaflet")); Assert.True(ProcessCommand(machine, io, "read leaflet").Contains("(Taken)")); Assert.True(ProcessCommand(machine, io, "inventory").Contains("A leaflet")); }
private static string WaitForOutput(Machine machine, SimpleInputOutput io) { if (machine.isFinished()) { return("Game crashed. Refresh to start over, and don't do that again."); } while (!io.WaitingForInput && !machine.isFinished()) { machine.processInstruction(); } return(io.Output); }
private static string ProcessCommand(Machine machine, SimpleInputOutput io, string text) { io.Output = ""; io.WaitingForInput = false; var p = new Paragraph { Text = string.Format(">{0}", text.Replace("\r\n", "<br/>")) }; _area.AppendChild(p); machine.processText(text); return(WaitForOutput(machine, io)); }
static void Main() { //Start Game var io = new SimpleInputOutput(); var machine = new Machine(Zork1.GetData(), io); _area = new Span(); var frm = new Form(); var textInput = new TextInput(); _area.Text = ""; frm.Submit += (sender, eventArgs) => { DisplayOutput(ProcessCommand(machine, io, textInput.Value)); textInput.Value = ""; //DOESN'T WORK RIGHT //value doesn't change so... var js = string.Format("document.getElementById(\"{0}\").value = \"\";window.scrollTo(0,document.body.scrollHeight);", textInput.Id); Runtime.InvokeJS(js); }; var container = new Paragraph(); var p1 = new Paragraph(); var p2 = new Paragraph(); p1.AppendChild(_area); frm.AppendChild(textInput); p2.AppendChild(frm); container.AppendChild(p1); container.AppendChild(p2); // Publish a root element to be displayed UI.Publish("/", container); DisplayOutput(WaitForOutput(machine, io)); }