示例#1
0
 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));
 }
示例#2
0
 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);
 }
示例#3
0
        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"));
        }
示例#4
0
 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);
 }
示例#5
0
        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));
        }
示例#6
0
        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));
        }