//Events when changing figure for the next //Події при необхідності змінити фігуру на наступну public void NextTetromino() { currentTetromino = nextTetromino; currentTetromino.columns = columns; if (gameStarted) { //Check if there is space on the screen to put a new figure //перевірка, чи нова фігура поміститься на поле if (!currentTetromino.CanItFit()) { GameOver(); } } if (gameStarted) { //Stop the timer //зупинка таймера DropTimer.Stop(); comboLines = 0; //Clear filled lines //Очищення повних ліній for (int row = 0; row < rows; ++row) { if (CheckLine(row)) { ClearLine(row); ++comboLines; ++lines; } } //Refresh score //Оновлення рахунку UpdateScore(); //Refresh level //оновлення рівня UpdateLevel(); //Show score //показ тексту про рахунок DisplayInfoText(); //Draw figure //малювання фігури currentTetromino.DrawTetromino(true); //Chose next figure //вибір наступної фігури nextTetromino = GenerateTetromino(); //Clear 'next figure' window //очищення вікна наступної фігури MakeNextGlass(); //Draw next figure //малювання наступної фігури nextTetromino.DrawNext(); //Redraw screen //оновлення екрану ReDraw(); //Start timer //відновлення таймера DropTimer.Start(); } }
//Menu 'Start game' //Пункт меню "Початок гри" private void startToolStripMenuItem_Click(object sender, EventArgs e) { //Load settings //завантаження налаштування LoadSettings(); //Initialize settings //ініціалізація налаштувань ApplySize(); score = 0; lines = 0; level = startingLevel; //Set the falling speed //встановлення швидкості падіння UpdateSpeed(); //Show score, number of cleared lines and game level //показ очків, кількості знищених ліній та рівня DisplayInfoText(); //Create main screen //створення ігрового поля MakeGlass(); //Create screen to show next figure //створення поля для показу наступної фігури MakeNextGlass(); //Select current figure //вибір поточної фігури currentTetromino = GenerateTetromino(); //Draw current figure //малювання поточної фігури currentTetromino.DrawTetromino(true); //Helper figure counter //помічник гравця pentoCounter = pentoHelper - 1; //Choose next figure //вибір наступної фігури nextTetromino = GenerateTetromino(); //Draw next figure //малювання наступної фігури nextTetromino.DrawNext(); //Screen refresh //оновлення поля ReDraw(); //Game started flag //прапорець початку гри gameStarted = true; //Game paused flag //Прапорець паузи gamePaused = false; //Drop timer start //запуск таймера падіння фігур DropTimer.Enabled = true; //Show score //показ тексту про рахунок DisplayInfoText(); }
//Chose next figure //Вибір наступної фігури private Tetromino GenerateTetromino() { int rng; Tetromino generatedTetromino = new Tetromino(this); //'Tetromino' mode figures //Фігури для режиму "Тетроміно" if (tetroMenu.Checked) { rng = random.Next(0, 7); switch (rng) { case 0: generatedTetromino = new I(this); nextTetrominoColor = IColor; break; case 1: generatedTetromino = new O(this); nextTetrominoColor = OColor; break; case 2: generatedTetromino = new T(this); nextTetrominoColor = TColor; break; case 3: generatedTetromino = new J(this); nextTetrominoColor = JColor; break; case 4: generatedTetromino = new L(this); nextTetrominoColor = LColor; break; case 5: generatedTetromino = new S(this); nextTetrominoColor = SColor; break; case 6: generatedTetromino = new Z(this); nextTetrominoColor = ZColor; break; } } //'Pentomino' mode figures //Фігури для режиму "Пентоміно" if (pentoMenu.Checked) { rng = random.Next(0, 18); pentoCounter -= 1; if (pentoCounter == 0) { pentoCounter = pentoHelper; generatedTetromino = new pHelper(this); nextTetrominoColor = pHelperColor; } else { switch (rng) { case 0: generatedTetromino = new pF(this); nextTetrominoColor = pFColor; break; case 1: generatedTetromino = new pFm(this); nextTetrominoColor = pFmColor; break; case 2: generatedTetromino = new pI(this); nextTetrominoColor = pIColor; break; case 3: generatedTetromino = new pL(this); nextTetrominoColor = pLColor; break; case 4: generatedTetromino = new pLm(this); nextTetrominoColor = pLmColor; break; case 5: generatedTetromino = new pN(this); nextTetrominoColor = pNColor; break; case 6: generatedTetromino = new pNm(this); nextTetrominoColor = pNmColor; break; case 7: generatedTetromino = new pP(this); nextTetrominoColor = pPColor; break; case 8: generatedTetromino = new pPm(this); nextTetrominoColor = pPmColor; break; case 9: generatedTetromino = new pT(this); nextTetrominoColor = pTColor; break; case 10: generatedTetromino = new pU(this); nextTetrominoColor = pUColor; break; case 11: generatedTetromino = new pV(this); nextTetrominoColor = pVColor; break; case 12: generatedTetromino = new pW(this); nextTetrominoColor = pWColor; break; case 13: generatedTetromino = new pX(this); nextTetrominoColor = pXColor; break; case 14: generatedTetromino = new pY(this); nextTetrominoColor = pYColor; break; case 15: generatedTetromino = new pYm(this); nextTetrominoColor = pYmColor; break; case 16: generatedTetromino = new pZ(this); nextTetrominoColor = pZColor; break; case 17: generatedTetromino = new pZm(this); nextTetrominoColor = pZmColor; break; } } } return(generatedTetromino); }