public Board(Field field, Field nextField) { this.IsGameOver = false; this.field = field; this.nextField = nextField; pieceQueue = new Queue<Piece>(); this.rand = new Random(); this.piece = createPiece(field, field.COLS / 2, 0); var nextPiece = createPiece(nextField, nextField.COLS / 2, nextField.ROWS / 2); pieceQueue.Enqueue(nextPiece); nextField.Draw(); }
public void RemovePiece(Piece piece) { foreach (NPoint pt in piece.Shape) { this[piece.X + pt.x, piece.Y + pt.y] = PcColor.None; } }
public void PutPiece(Piece piece) { foreach (NPoint pt in piece.Shape) { this[piece.X + pt.x, piece.Y + pt.y] = piece.Color; } }
public void BeginTestMethod() { field.Reset(); target = new Piece(field, field.COLS / 2, 0, PcType.J0); }
public void Update() { if (piece.Move(Direction.Down)) { this.DeletedRowNum = 0; return; } int deletedRowNum; field.Update(out deletedRowNum); this.DeletedRowNum = deletedRowNum; if (piece.Y <= 0) { this.IsGameOver = true; return; } // Get the next piece var nextPiece = pieceQueue.Dequeue(); nextField.RemovePiece(nextPiece); nextPiece.Field = this.field; nextPiece.X = this.field.COLS / 2; nextPiece.Y = 0; this.piece = nextPiece; nextPiece = createPiece(nextField, nextField.COLS / 2, nextField.ROWS / 2); pieceQueue.Enqueue(nextPiece); nextField.Draw(); }
private Piece createPiece(Field field, int x, int y, PcType type = PcType.Random) { if (type == PcType.Random) { type = (PcType)rand.Next((int)PcType.Leng); } var piece = new Piece(field, x, y, type); field.PutPiece(piece); return piece; }