public void Draw(ScreenCanvas screenCanvas, int iPictX, int iPictY) { const int iWriteTop = 100; const int iLetterWidth = 200; const int iLetterHeight = iLetterWidth * 2; String strScore; // Draw Score + Ships left justified strScore = iScore.ToString("000000") + " "; if (iShips > 10) { strScore += "^x" + (iShips - 1); } else { for (int i = 0; i < iShips - 1; i++) { strScore += "^"; } } TextDraw.DrawText(screenCanvas, strScore, TextDraw.Justify.LEFT, iWriteTop, iLetterWidth, iLetterHeight, iPictX, iPictY); // Draw HiScore Centered strScore = iHiScore.ToString("000000"); TextDraw.DrawText(screenCanvas, strScore, TextDraw.Justify.CENTER, iWriteTop, iLetterWidth, iLetterHeight, iPictX, iPictY); }
public void DrawScreen(ScreenCanvas screenCanvas, int iPictX, int iPictY) { // Flip back and forth between "Game Over" and "Asteroids" if ((iLetterSize > 1000) || (iLetterSize < 40)) { iIncrement = -iIncrement; if (iLetterSize < 40) { if (strTitle == "GAME OVER") { strTitle = "ASTEROIDS"; } else { strTitle = "GAME OVER"; } } } iLetterSize += iIncrement; TextDraw.DrawText(screenCanvas, strTitle, TextDraw.Justify.CENTER, iMaxY / 2 - iLetterSize, iLetterSize, iLetterSize * 2, iPictX, iPictY); // Draw copyright notice const int iTitleWidth = 200; const int iTitleHeight = iTitleWidth * 2; TextDraw.DrawText(screenCanvas, strCopyright, TextDraw.Justify.CENTER, iMaxY - iTitleWidth * 3, iTitleWidth, iTitleHeight, iPictX, iPictY); // Draw the asteroid belt asteroids.Move(); asteroids.Draw(screenCanvas, iPictX, iPictY); }
public void DrawScreen(ScreenCanvas sc, int iPictX, int iPictY, ref Score score) { Point ptCheck = new Point(0); if (paused) { // Pause flashes on and off if (iPauseTimer > PAUSE_INTERVAL / 2) { TextDraw.DrawText(sc, "PAUSE", TextDraw.Justify.CENTER, iMaxY / 3, 200, 400, iPictX, iPictY); } if (--iPauseTimer < 0) { iPauseTimer = PAUSE_INTERVAL; } } else // Do all game processing if game is not paused { // If no ship displaying, after explosions are done // get a new one - or end the game if (!ship.IsAlive() && (explosions.Count() == 0)) { if (!score.HasReserveShips()) { // Game over inProcess = false; } else { if (asteroids.IsCenterSafe()) { score.GetNewShip(); ship = new Ship(true); } } } // Create a new asteroid belt if // no explosions and no asteroids if ((explosions.Count() == 0) && (asteroids.Count() == 0)) { asteroids = new AsteroidBelt(++iLevel); } // Move all objects ship.Move(); foreach (Bullet bullet in shipBullets) { bullet.Move(); } asteroids.Move(); explosions.Move(); // Check bullets for collisions foreach (Bullet bullet in shipBullets) { if (bullet.AcquireLoc(ref ptCheck) && CheckPointInAsteroid(ptCheck, ref score)) { explosions.AddExplosion(ptCheck); bullet.Disable(); } } // Check ship for collisions if (ship.IsAlive()) { foreach (Point ptInShip in ship.pointsTransformed) { ptCheck.X = ptInShip.X + ship.GetCurrLoc().X; ptCheck.Y = ptInShip.Y + ship.GetCurrLoc().Y; if (CheckPointInAsteroid(ptCheck, ref score)) { ExplodeShip(); break; } } } } // Draw all objects ship.Draw(sc, iPictX, iPictY); foreach (Bullet bullet in shipBullets) { bullet.Draw(sc, iPictX, iPictY); } asteroids.Draw(sc, iPictX, iPictY); explosions.Draw(sc, iPictX, iPictY); // Draw the score score.Draw(sc, iPictX, iPictY); }