static private MinoKind GetNextMino(List <MinoKind> left) { if (left.Count == 0) { left.AddRange(Mino7Bag); } Random random = new Random(); int index = random.Next(0, left.Count); MinoKind returnValue = left[index]; left.RemoveAt(index); return(returnValue); }
public Mino(Vector2[] positions, Rotate rotation, MinoKind kind) { this.positions = positions; this.rotation = rotation; this.kind = kind; }
/// <summary> /// ミノを生成する /// </summary> /// <param name="kind">ミノの種類</param> /// <returns>Minoオブジェクト</returns> static public Mino CreateMino(MinoKind kind) { Mino mino = new Mino(); mino.kind = kind; mino.rotation = Rotate.Zero; mino.positions = new Vector2[4]; switch (kind) { case MinoKind.I: mino.positions[0] = new Vector2(3, 19); mino.positions[1] = new Vector2(4, 19); mino.positions[2] = new Vector2(5, 19); mino.positions[3] = new Vector2(6, 19); break; case MinoKind.O: mino.positions[0] = new Vector2(4, 19); mino.positions[1] = new Vector2(5, 19); mino.positions[2] = new Vector2(4, 20); mino.positions[3] = new Vector2(5, 20); break; case MinoKind.T: mino.positions[0] = new Vector2(4, 20); mino.positions[1] = new Vector2(3, 19); mino.positions[2] = new Vector2(4, 19); mino.positions[3] = new Vector2(5, 19); break; case MinoKind.S: mino.positions[0] = new Vector2(4, 20); mino.positions[1] = new Vector2(5, 20); mino.positions[2] = new Vector2(3, 19); mino.positions[3] = new Vector2(4, 19); break; case MinoKind.Z: mino.positions[0] = new Vector2(3, 20); mino.positions[1] = new Vector2(4, 20); mino.positions[2] = new Vector2(4, 19); mino.positions[3] = new Vector2(5, 19); break; case MinoKind.L: mino.positions[0] = new Vector2(5, 20); mino.positions[1] = new Vector2(3, 19); mino.positions[2] = new Vector2(4, 19); mino.positions[3] = new Vector2(5, 19); break; case MinoKind.J: mino.positions[0] = new Vector2(3, 20); mino.positions[1] = new Vector2(3, 19); mino.positions[2] = new Vector2(4, 19); mino.positions[3] = new Vector2(5, 19); break; case MinoKind.Empty: throw new Exception(); } return(mino); }