Exemple #1
0
        public void CodePieceTest_Set()
        {
            CodePiece cp = new CodePiece();

            cp[0, 0] = new BefungeCommand(BefungeCommandType.Add);
            Assert.AreEqual(1, cp.Width);
            Assert.AreEqual(1, cp.Height);

            cp[0, 2] = new BefungeCommand(BefungeCommandType.Add);
            Assert.AreEqual(1, cp.Width);
            Assert.AreEqual(3, cp.Height);

            cp[2, 0] = new BefungeCommand(BefungeCommandType.Add);
            Assert.AreEqual(3, cp.Width);
            Assert.AreEqual(3, cp.Height);

            cp[2, 2] = new BefungeCommand(BefungeCommandType.Add);
            Assert.AreEqual(3, cp.Width);
            Assert.AreEqual(3, cp.Height);

            cp[0, -2] = new BefungeCommand(BefungeCommandType.Add);
            Assert.AreEqual(3, cp.Width);
            Assert.AreEqual(5, cp.Height);

            cp[-2, 0] = new BefungeCommand(BefungeCommandType.Add);
            Assert.AreEqual(5, cp.Width);
            Assert.AreEqual(5, cp.Height);

            cp[-2, -2] = new BefungeCommand(BefungeCommandType.Add);
            Assert.AreEqual(5, cp.Width);
            Assert.AreEqual(5, cp.Height);
        }
Exemple #2
0
 public TagLocation(int px, int py, BefungeCommand cmd)
 {
     Tag     = cmd.Tag;
     X       = px;
     Y       = py;
     Command = cmd;
 }
Exemple #3
0
        private CodePiece GenerateCode_DisplayValue(string dv)
        {
            CodePiece r = new CodePiece();

            int w = dv.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None).Max(s => s.Length);
            int h = dv.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None).Length;

            if (dv == "")
            {
                w = 0;
                h = 0;
            }

            if (w > DisplayWidth || h > DisplayHeight)
            {
                throw new InitialDisplayValueTooBigException(DisplayWidth, DisplayHeight, w, h);
            }

            string[] split = dv.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None);

            BefungeCommand def = BCHelper.Chr(CGO.DefaultDisplayValue);

            if (def.Type == BefungeCommandType.NOP)
            {
                def = BCHelper.Walkway;
            }

            for (int y = 0; y < DisplayHeight; y++)
            {
                for (int x = 0; x < DisplayWidth; x++)
                {
                    r[x, y] = (y < split.Length && x < split[y].Length) ? BCHelper.Chr(split[y][x]) : def;
                }
            }

            return(r);
        }
Exemple #4
0
 public CodePieceReverseException(BefungeCommand p)
     : base("Cannot reverse Command " + p + ".")
 {
 }