コード例 #1
0
        //public override void changeView(TetrisModel model) 多型覆蓋
        public override void changeView(TetrisModel model)
        {
            m_Graphics.Graphics.Clear(Color.SkyBlue);
            drawBackGround();
            mymodel       = model;
            bool[,] board = model.getBoard();
            TetrisBlock current_block = model.getBlock();

            if (current_block.getBlockShape() != TetrisBlock.Blocks.No_shape)
            {
                for (int i = 0; i < 22; i++)
                {
                    for (int j = 0; j < 10; j++)
                    {
                        if (board[i, j])
                        {
                            drawBlock(board_Pen, board_brush, i, j);
                        }
                    }
                }

                for (int i = 0; i < 4; i++)
                {
                    drawBlock(current_Pen, current_brush, current_block.get_CurrentX() + current_block.get_X(i), current_block.get_CurrentY() + current_block.get_Y(i));
                }

                m_Graphics.Render();
                //m_Graphics.Dispose();
                scoreBox.Text = model.getScore().ToString();
            }

            if (mymodel.GameOver())
            {
                Gameover gameover_form = new Gameover();
                gameover_form.Show(this);
            }
        }
コード例 #2
0
ファイル: B10432008.cs プロジェクト: HIITSMETJ/it-s-not-debug
        public override void changeView(TetrisModel model)
        //public void changeView(TetrisModel model)
        {
            if (!model.GameOver())
            {
                m_Graphics.Graphics.Clear(Color.WhiteSmoke);
                drawBackGround();
                bool[,] board = model.getBoard();
                TetrisBlock current_block = model.getBlock();

                //draw bottom blocks
                for (int i = 0; i < (int)constant.BOARD_HEIGHT; i++)
                {
                    for (int j = 0; j < (int)constant.BOARD_WIDTH; j++)
                    {
                        if (board[i, j])
                        {
                            drawBlock(blackPen, i, j);
                        }
                    }
                }


                int shape = (int)current_block.getBlockShape();

                //draw predict blocks
                //find distance from falling block to exist blocks
                SolidBrush blockBrush    = chooseBrushColor(shape);
                int        fallingHeight = -1;
                bool       findHeight    = false;
                while (!findHeight)
                {
                    fallingHeight++;
                    for (int i = 0; i < 4; i++)
                    {
                        if (current_block.get_CurrentX() + current_block.get_X(i) + fallingHeight < (int)constant.BOARD_HEIGHT)
                        {
                            if (board[current_block.get_CurrentX() + current_block.get_X(i) + fallingHeight, current_block.get_CurrentY() + current_block.get_Y(i)])
                            {
                                findHeight = true;
                                if (fallingHeight != 0)
                                {
                                    fallingHeight--;
                                }
                                break;
                            }
                        }
                        else
                        {
                            findHeight = true;
                            if (fallingHeight != 0)
                            {
                                fallingHeight--;
                            }
                            break;
                        }
                    }
                }
                //draw
                for (int i = 0; i < 4; i++)
                {
                    drawPredictBlock(blockBrush, current_block.get_CurrentX() + current_block.get_X(i) + fallingHeight, current_block.get_CurrentY() + current_block.get_Y(i));
                }

                //draw falling blocks
                Pen blockPen = choosePenColor(shape);
                for (int i = 0; i < 4; i++)
                {
                    drawBlock(blockPen, current_block.get_CurrentX() + current_block.get_X(i), current_block.get_CurrentY() + current_block.get_Y(i));
                }
                m_Graphics.Render();
                //m_Graphics.Dispose();
                Score.Text = model.getScore().ToString();
            }
            else
            {
                GameOver();
            }
        }