public Manager() { try { mVideo = Video.SetVideoMode(1300,600); achtergrond = new Surface("Background.jpg");// achtergrond muziek = new Music("Commander Keen 4.mp3"); } catch (Exception error) { Console.WriteLine(error); } held = new Hero(); //vijand = new Enemy(200, 500,true,false); //vijand2 = new Enemy(300, 500, false, true); //vijand3 = new Enemy(600, 500, false, true); //vijand4 = new Enemy(700, 500, true, false); level1 = new Level(); AantalLevens = new NumberOfLives(); Gameobjecten = new List<GameObject>(); Gameobjecten.Add(held); //Gameobjecten.Add(vijand); //Gameobjecten.Add(vijand2); //Gameobjecten.Add(vijand3); //Gameobjecten.Add(vijand4); Vijanden = new List<Enemy>(); //Vijanden.Add(vijand); //Vijanden.Add(vijand2); //Vijanden.Add(vijand3); //Vijanden.Add(vijand4); MusicPlayer.Volume = 30; MusicPlayer.Load(muziek); muziek.Play(); Events.Tick += Events_Tick; //Events.Fps = 5; Events.KeyboardUp += Events_KeyboardUp; Events.Quit += Events_Quit; Events.Run(); }
public Manager() { //De afbeeldingen worden ingeladen en de sdl app wordt gecreeërd try { _mVideo = Video.SetVideoMode(1300, 600); _achtergrond = new Surface("Background.jpg"); // achtergrond _achtergrond2 = new Surface("Background2.jpg"); // achtergrond _start = new Surface("Commander_Keen_StartScreen.jpg"); _gameOver = new Surface("Commander_Keen_GameOverScreen.jpg"); _scoreimage = new Surface("Item.png"); _endscreen = new Surface("Commander_Keen_Endscreen.jpg"); } catch (Exception error) { Console.WriteLine(error); } //De tekst voor het startscherm wordt gecreeërd _fontStart = _font.Render("Press s to start", Color.Red); _fontGameOver = _font.Render("Press r to restart\n Press esc to quit", Color.Red); //Polymorfisme wort toe gepast. //Hierdoor krijgt het level object alle eigenschappen van de level1 klasse. //Dit laat ons toe om gemakkelijk tussen de level te wisselen zonder dubbele code te schrijven. _level = new Level1(); _aantalLevens = new HeroLives(); SaveVijanden = new List<Enemy>(); //Een timer wordt aangemaakt. //Deze timer loopt om de seconde af. _timer = new Timer(1000); //Indien de timer afloopt wordt de callback functie aan geroepen. _timer.Elapsed += timer_Elapsed; Video.WindowCaption = "Commander Keen"; Events.Tick += Events_Tick; Events.KeyboardUp += Events_KeyboardUp; //Dit is het hart van de applicatie. Indien dit niet gebruikt wordt, zal de applicatie niet starten. Events.Run(); }
//Alle lijsten worden gecleard en de variabelen worden terug op hun oorspronkelijke instellingen gezet public void ReInitialize() { _level.GameObjects.Clear(); _level.Vijanden.Clear(); _level.LifeObjects.Clear(); _level.NextLevelObjects.Clear(); _level.MetalObjects.Clear(); _level.EmptyBlocks.Clear(); _level.Held.NumberOflives = 1; _level.Held.IamDead = false; _level = new Level1(); _tijd = 60; }
private void Events_Tick(object sender, TickEventArgs e) { //Indien de held niet dood, er op s geduwt is en de held de finish niet bereikt heeft zal het spel gestart worden. if (_level.Held.IamDead == false) { _pressedR = false; if (_pressedS) { if (_level.Held.Finish) { //Indien de held de finish bereikt heeft, wordt de eindafbeelding en de score op het scherm geblit + nog wat extra informatie. _endscore = _font.Render("Je totale score is : " + (_level1Score + _level.Held.Score), Color.Red); _endfont = _font.Render("Press r to restart. Press q to become invincible. Press esc to close.",Color.Red); _mVideo.Blit(_endscreen); _mVideo.Blit(_endscore, new Point(500, 10)); _mVideo.Blit(_endfont, new Point(20, 540)); } else { //Indien dit niet het geval is wordt het spel gestart. //Er worden verschillende functie aangeroepen : /* - CheckCollisionsWithEnemy : om te checken of de held niet geraakt wort door de vijand - Die : om te checken of de held niet dood is. - MoveLevel : om het level indien nodig te bewegen - CheckCollisionsHeldWithBackground : om te checken of er zich geen "botsingen" voor doen tussen held en achtergrond - UpdateBackGroundTiles : om de collision rechthoeken van de verschillende figuren te updaten - TimeCheck : om te checken of de _tijd variabele niet op 0 staat*/ CheckCollisionsWithEnemy(); _level.Held.Die(_level.GameObjects); _level.MoveLevel(_level.Held); _level.CheckCollisionsHeldWithBackground(); UpdateBackGroundTiles(); TimeCheck(); if (_level.Held.Level2 == false) { //Verder wordt de juiste achtergrond getekend en wordt de variabele _level1Score gebruikt om de score van level1 in te bewaren _mVideo.Blit(_achtergrond); _level1Score = _level.Held.Score; } else if (_level.Held.Level2) { //Alle lijsten die uit level 1 komen worden gecleard _level.Vijanden.Clear(); _level.LifeObjects.Clear(); _level.NextLevelObjects.Clear(); _level.MetalObjects.Clear(); _level.EmptyBlocks.Clear(); _mVideo.Blit(_achtergrond2); //achtergrond van level 2 //De tijd wordt terug naar 60 gezet _tijd = 60; //Optimalisatie van de code. Anders zou er elke tick een nieuw level gecreeërd worden. if (_teller == 1) { //Hier wordt weer polymorfisme toe gepast. Hierdoor krijgt het _level object nu alle specifities van de level2 klasse. //Hierdoor kunnen we veel dubbele code vermijden. _level = new Level2(); _teller++; } } //Het level, aantal levens, score en de nog resterende tijd worden op het scherm geblit _level.Draw(_mVideo); _aantalLevens.Draw(_mVideo, _level.Held); _fontScore = _font.Render("Score : " + _level.Held.Score, Color.Red); _fonttimer = _font.Render("Time left :" + _tijd, Color.Red); _mVideo.Blit(_fonttimer, new Point(600, 0)); _mVideo.Blit(_scoreimage, new Point(1050, 0)); _mVideo.Blit(_fontScore, new Point(1100, 0)); } } else { //Indien er niet op s geduwt is, wordt het startscherm getoon. _mVideo.Blit(_start); _mVideo.Blit(_fontStart, new Point(900, 0)); } } else if (_level.Held.IamDead) { //Als de held dood is, wordt het gameover scherm getoond. _mVideo.Blit(_gameOver); _mVideo.Blit(_fontGameOver, new Point(500, 500)); if (_pressedR) { //Indien er op r geduwt is, wordt de functie ReInitialize aan geroepen. ReInitialize(); } } //De hele sdl app wordt ge-updatet. Indien dit niet gebruikt wordt, zal de applicatie niet werken. _mVideo.Update(); }