public static void RightRotate(MyPoint[,] background, Boxes box) { box.clockwise(); if (!Tools.Compare(background, box)) { box.anticlockwise(); } }
private void 开始ToolStripMenuItem_Click(object sender, EventArgs e) { time = 60; box = new Boxes(); newbox = new Boxes(); DrawpictureBox1(); DrawpictureBox2(); timer1.Enabled = true; timer2.Enabled = true; timer3.Enabled = true; }
public static void MoveDown(MyPoint[,] background, Boxes box) { box.NewY++; if (Tools.Compare(background, box)) { box.Y = box.NewY; } else { box.NewY--; } }
public static void MoveRight(MyPoint[,] background, Boxes box) { box.NewX++; if (Tools.Compare(background, box)) { box.X = box.NewX; } else { box.NewX--; } }
public static void MergeBackground(ref MyPoint[,] background, Boxes box) { for (int i = -2; i < 2; i++) { for (int j = 1; j >= -2; j--) { if (box.points[i + 2, j + 2] == 1) { background[i + box.Y + 2, j + box.X + 2].number = box.points[i + 2, j + 2]; background[i + box.Y + 2, j + box.X + 2].color = box.color; } } } }
public static bool Compare(MyPoint[,] background, Boxes box) { for (int i = -2; i < 2; i++) { for (int j = 1; j >= -2; j--) { if ((background[i + box.NewY + 2, j + box.NewX + 2].number & box.points[i + 2, j + 2]) == 1) { return(false); } } } return(true); }
public static void DrawNewBoxes(Graphics g, Boxes box) { g.Clear(Color.White); Pen p = new Pen(box.color, 1); Brush b = p.Brush; int[,] points = box.points; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { if (points[i, j] == 1) { g.DrawRectangle(p, j * Boxes.R, i * Boxes.R, Boxes.R, Boxes.R); g.FillRectangle(b, j * Boxes.R + 1, i * Boxes.R + 1, Boxes.R - 2, Boxes.R - 2); } } } }
private void timer2_Tick(object sender, EventArgs e) { if (box != null) { box.NewY++; if (Tools.Compare(background, box)) { box.Y = box.NewY; } else { box.NewY--; Tools.MergeBackground(ref background, box); box = newbox; newbox = new Boxes(); DrawpictureBox2(); Tools.RemoveBox(ref background); } } }
public static void DrawBoxes(Graphics g, Boxes box) { Pen p = new Pen(box.color, 1); Brush b = p.Brush; int[,] points = box.points; int x = box.X; int y = box.Y; for (int i = -2; i < 2; i++) { for (int j = -2; j < 2; j++) { if (points[i + 2, j + 2] == 1) { g.DrawRectangle(p, (x + j) * Boxes.R, (y + i) * Boxes.R, Boxes.R, Boxes.R); g.FillRectangle(b, (x + j) * Boxes.R + 1, (y + i) * Boxes.R + 1, Boxes.R - 2, Boxes.R - 2); } } } g.Dispose(); }