diff --git a/TurboMasters/TurboMasters/TurboMasters.cs b/TurboMasters/TurboMasters/TurboMasters.cs index c1b3365d7405cd7ba7b273ce56aca0459c07f637..26eb5848e61c65e64ac33051c28bd1784c5227ed 100644 --- a/TurboMasters/TurboMasters/TurboMasters.cs +++ b/TurboMasters/TurboMasters/TurboMasters.cs @@ -1,49 +1,53 @@ using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Net.Mime; using Jypeli; -using Jypeli.Assets; -using Jypeli.Controls; -using Jypeli.Widgets; -using Silk.NET.OpenGL; namespace TurboMasters; /// @author Samu Uski /// @version 30.10.2023 /// <summary> -/// +/// Rallipeli, jossa normaali ja Drift -pelimuodot, tavoitteena mahdollisimman nopea kierrosaika /// </summary> public class TurboMasters : PhysicsGame { + // pelaajan ohjaama auto PhysicsObject auto; + + //sektoriviivat joille annettu collisionhandler PhysicsObject sektori1; PhysicsObject sektori2; PhysicsObject sektori3; - Label sektori1Teksti = new Label(); - Label sektori2Teksti = new Label(); - Label sektori3Teksti = new Label(); + //pelaajalle näytettävät teksit, jossai tämän hetkisen kierroksen sektoriajat + private Label sektori1Teksti = new Label(); + private Label sektori2Teksti = new Label(); + private Label sektori3Teksti = new Label(); - Label nopeinSektori1 = new Label(); - Label nopeinSektori2 = new Label(); - Label nopeinSektori3 = new Label(); - Label nopeinKierros = new Label(); - Label pontentiaalinenNopein = new Label(); + //pelaajalle näytettävät tekstit, joissa nopein kierros, sekä nopeimmat sektoriajat + private Label nopeinSektori1 = new Label(); + private Label nopeinSektori2 = new Label(); + private Label nopeinSektori3 = new Label(); + private Label nopeinKierros = new Label(); + private Label pontentiaalinenNopein = new Label(); - Double[] kierrosAjat = {0, 0, 0, 0}; - Double[] nopeimmatAjat = {999, 999, 999, 999, 999}; + //talukot, joihin tallennetaan kierrosaikoja, sekä nopeimmat kierrosajat + private Double[] kierrosAjat = {0, 0, 0, 0}; + private Double[] nopeimmatAjat = {int.MaxValue, int.MaxValue, int.MaxValue, int.MaxValue, int.MaxValue}; + + //aikalaskuri, sekä teksi jossa se näytetään pelaajalle + private Timer aikalaskuri; + private Label naytto; - Timer aikalaskuri; - Label naytto; + //taustakuva ja auto-objektin grakiikka + private Image taustaKuva = LoadImage("tausta"); + private Image autoKuva = LoadImage("auto"); - Image taustaKuva = LoadImage("tausta"); - Image autoKuva = LoadImage("auto"); + //auton kiihtyvyys ja kääntyvyys -arvot + private double kiihtyvyys = 1.8; //auton kiihtyvyyskerroin + private double kaantyvyys = 4; //auton kääntyvyyskerroin - double kiihtyvyys = 1.8; //auton kiihtyvyyskerroin - double kaantyvyys = 4; //auton kääntyvyyskerroin + //alkuun suoritettava metodi, jossa kutsutaan peliin tarvittvat aliohjelmat public override void Begin() { ClearAll(); @@ -55,7 +59,9 @@ public class TurboMasters : PhysicsGame Level.Background.Image = taustaKuva; } - void LuoKentta() + + //aliohjelma, jossa luodaan radalle sivureunat + public void LuoKentta() { LuoKaide(ulkoreuna); LuoKaide(sisareuna); @@ -69,8 +75,9 @@ public class TurboMasters : PhysicsGame Camera.ZoomToLevel(); } - - void EkaSuoritettu(PhysicsObject obj1, PhysicsObject obj2) + + + public void EkaSuoritettu(PhysicsObject obj1, PhysicsObject obj2) { Remove(sektori1Teksti); Remove(sektori2Teksti); @@ -84,7 +91,8 @@ public class TurboMasters : PhysicsGame } - void TokaSuoritettu(PhysicsObject obj1, PhysicsObject obj2) + + public void TokaSuoritettu(PhysicsObject obj1, PhysicsObject obj2) { kierrosAjat[2] = aikalaskuri.CurrentTime; sektori2Teksti = LuoTeksti(OtaAika(2, kierrosAjat[1]), 60, -200); @@ -94,7 +102,8 @@ public class TurboMasters : PhysicsGame OnkoNopeampi(2); } - void Suoritettu(PhysicsObject obj1, PhysicsObject obj2) + + public void Suoritettu(PhysicsObject obj1, PhysicsObject obj2) { kierrosAjat[3] = aikalaskuri.CurrentTime; kierrosAjat[0] = kierrosAjat[3]; @@ -110,8 +119,9 @@ public class TurboMasters : PhysicsGame PaivitaNopeimmat(); } + - void OnkoNopeampi(int indeksi) + public void OnkoNopeampi(int indeksi) { if (kierrosAjat[indeksi] < nopeimmatAjat[indeksi]) { @@ -119,8 +129,9 @@ public class TurboMasters : PhysicsGame } } + - void PaivitaNopeimmat() + public void PaivitaNopeimmat() { nopeimmatAjat[4] = 0; for (int i = 1; i <= 3; i++) @@ -139,15 +150,17 @@ public class TurboMasters : PhysicsGame nopeinSektori3 = LuoTeksti(nopeimmatAjat[3].ToString("#.000"), -400, -300); pontentiaalinenNopein = LuoTeksti(nopeimmatAjat[4].ToString("#.000"), -400, -375); } + - string OtaAika(int sektori, double edellisetSektorit) + public string OtaAika(int sektori, double edellisetSektorit) { kierrosAjat[sektori] -= edellisetSektorit; string aikaTeksti = kierrosAjat[sektori].ToString("#.000"); return aikaTeksti; } - void Alkuvalikko() + + public void Alkuvalikko() { MultiSelectWindow alkuvalikko = new MultiSelectWindow("Alkuvalikko", "Normaali", "Drift", "Lopeta"); alkuvalikko.AddItemHandler(0, NormalMode); @@ -156,20 +169,23 @@ public class TurboMasters : PhysicsGame Add(alkuvalikko); } - void NormalMode() + + public void NormalMode() { Driftaa(false); AloitaPeli(); } - void DriftMode() + + public void DriftMode() { auto.LinearDamping = 1.5; Driftaa(true); AloitaPeli(); } - void AloitaPeli() + + public void AloitaPeli() { naytto = LuoAikalaskuri(); @@ -185,7 +201,8 @@ public class TurboMasters : PhysicsGame LuoTeksti("Potential Best Lap:", -400, -350); } - Label LuoAikalaskuri() + + public Label LuoAikalaskuri() { aikalaskuri = new Timer(); aikalaskuri.Start(); @@ -201,7 +218,8 @@ public class TurboMasters : PhysicsGame return aikanaytto; } - PhysicsObject LuoSektori(Double x, Double y, Angle kulma) + + public PhysicsObject LuoSektori(Double x, Double y, Angle kulma) { PhysicsObject sektori = new PhysicsObject(5, 100); sektori.X = x; @@ -213,7 +231,8 @@ public class TurboMasters : PhysicsGame return sektori; } - Label LuoTeksti(string teksti, int xArvo, int yArvo) + + public Label LuoTeksti(string teksti, int xArvo, int yArvo) { Label uusiTeksti = new Label(); uusiTeksti.TextColor = Color.Black; @@ -224,6 +243,7 @@ public class TurboMasters : PhysicsGame return uusiTeksti; } + private Vector[] ulkoreuna = new Vector[] { new Vector(350, -350), @@ -251,6 +271,7 @@ public class TurboMasters : PhysicsGame new Vector(350, -350), }; + private Vector[] sisareuna = new Vector[] { new Vector(300, -250), @@ -278,7 +299,8 @@ public class TurboMasters : PhysicsGame new Vector(300, -250), }; - void LuoKaide(Vector[] reittipisteet) + + public void LuoKaide(Vector[] reittipisteet) { RoadMap kaide = new RoadMap(reittipisteet); kaide.DefaultWidth = 5.0; // Kaiteen leveys @@ -286,7 +308,8 @@ public class TurboMasters : PhysicsGame kaide.Insert(); } - PhysicsObject LuoKaiteenPatka(double width, double height, Shape shape) + + public PhysicsObject LuoKaiteenPatka(double width, double height, Shape shape) { PhysicsObject patka = PhysicsObject.CreateStaticObject(width, height, shape); patka.Color = Color.White; @@ -295,7 +318,8 @@ public class TurboMasters : PhysicsGame return patka; } - PhysicsObject LuoAuto(Double x, Double y) + + public PhysicsObject LuoAuto(Double x, Double y) { PhysicsObject autoLuo = new PhysicsObject(30.0, 15.0); autoLuo.Shape = Shape.Rectangle; @@ -313,7 +337,8 @@ public class TurboMasters : PhysicsGame return autoLuo; } - void AsetaOhjaimet() + + public void AsetaOhjaimet() { Keyboard.Listen(Key.W, ButtonState.Down, Kiihdyta, "Aja eteenpäin", auto, -1); @@ -327,7 +352,8 @@ public class TurboMasters : PhysicsGame Keyboard.Listen(Key.Escape, ButtonState.Pressed, Begin, "Valikko"); } - void Driftaa(bool driftataakno) + + public void Driftaa(bool driftataakno) { Keyboard.Listen(Key.W, ButtonState.Pressed, AsetaSuunta, null, driftataakno); Keyboard.Listen(Key.W, ButtonState.Released, AsetaSuunta, null, driftataakno); @@ -335,13 +361,15 @@ public class TurboMasters : PhysicsGame Keyboard.Listen(Key.D, ButtonState.Down, AsetaSuunta, null, driftataakno); } - void Kiihdyta(PhysicsObject auto, int suunta) + + public void Kiihdyta(PhysicsObject auto, int suunta) { Vector pelaajanSuunta = Vector.FromLengthAndAngle(kiihtyvyys * 1000 * suunta, auto.Angle); auto.Push(pelaajanSuunta); } - void AsetaSuunta(bool asetetaanko) + + public void AsetaSuunta(bool asetetaanko) { if (asetetaanko == false) { @@ -350,19 +378,23 @@ public class TurboMasters : PhysicsGame } } - void Kaanna(PhysicsObject auto, int suunta) + + public void Kaanna(PhysicsObject auto, int suunta) { double pituus = VektorinPituus(auto.Velocity); auto.ApplyTorque(kaantyvyys * suunta * pituus); } - Double VektorinPituus(Vector vektori) + + + public Double VektorinPituus(Vector vektori) { double pituus = double.Sqrt((vektori.X * vektori.X) + (vektori.Y * vektori.Y)); return pituus; } - Vector Eteenpain() + + public Vector Eteenpain() { double liikkumisSuunta = VektorinPituus(auto.Velocity); Vector eteenpainVektori = Vector.FromLengthAndAngle(liikkumisSuunta, auto.Angle);