Skip to content
Snippets Groups Projects
Commit af6e8c42 authored by Hanki Sakari's avatar Hanki Sakari
Browse files

kentän vaihtumis mekaniikka lisötty

parent 70b774c5
No related branches found
No related tags found
No related merge requests found
KelaCombat/KelaCombatTesti/Content/kentta2.png

566 B

...@@ -19,11 +19,14 @@ namespace KelaCombatTesti; ...@@ -19,11 +19,14 @@ namespace KelaCombatTesti;
/// </summary> /// </summary>
public class KelaCombatTesti : PhysicsGame public class KelaCombatTesti : PhysicsGame
{ {
int kenttanumero = 0;
string[] Kentat = {"kentta1", "kentta2"};
PlatformCharacter pelaaja; PlatformCharacter pelaaja;
PhysicsObject Pesismaila; PhysicsObject Pesismaila;
PhysicsObject Viinapullo; PhysicsObject Viinapullo;
PhysicsObject kappale;
PlatformCharacter Kelabotti; PlatformCharacter Kelabotti;
private Image TiiliseinaKuva = LoadImage("tiiliseina"); Image TiiliseinaKuva = LoadImage("tiiliseina");
Image KelabottiKuva = LoadImage("Kelabotti"); Image KelabottiKuva = LoadImage("Kelabotti");
Image PelaajaKuva = LoadImage("Pelaaja.png"); Image PelaajaKuva = LoadImage("Pelaaja.png");
List<PhysicsObject> spawnipaikat = new List<PhysicsObject>(); // tässä listataan mahdolliset paikat, johon kelabotti voi spawnaa. Lista pitää sisällään spawnereita. List<PhysicsObject> spawnipaikat = new List<PhysicsObject>(); // tässä listataan mahdolliset paikat, johon kelabotti voi spawnaa. Lista pitää sisällään spawnereita.
...@@ -44,61 +47,50 @@ namespace KelaCombatTesti; ...@@ -44,61 +47,50 @@ namespace KelaCombatTesti;
/// </summary> /// </summary>
public override void Begin() public override void Begin()
{ {
LuoKentta(); LuoKentta(0);
LuoElamalaskuri();
LuoPistelaskuri(); // Alustetaan pistelaskuri
//Ajastin, joka lisää uuden vihollisen joka 5. sekunti
//kelabotin elämien väheneminen VahingoitaKelabottia aliohjelman mukaisesti
//AddCollisionHandler(Kelabotti, "Pesismaila", VahingoitaKelabottia);
Camera.Follow(pelaaja);
Keyboard.Listen(Key.A, ButtonState.Down, LiikuVasemmalle, null, new Vector());
Keyboard.Listen(Key.D, ButtonState.Down, LiikuOikealle, null, new Vector());
Keyboard.Listen(Key.W, ButtonState.Down, Hyppaa, null, new Vector());
//Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -1000));
Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
Keyboard.Listen(Key.Space, ButtonState.Pressed, LuoPesismaila, "", new Vector(90, 10), pelaaja);
}
void LiikuVasemmalle(Vector vektori) void LiikuVasemmalle(Vector vektori)
{ {
pelaaja.Walk(-120); pelaaja.Walk(-120);
} }
void LiikuOikealle(Vector vektori) void LiikuOikealle(Vector vektori)
{ {
pelaaja.Walk(120); pelaaja.Walk(120);
} }
void Hyppaa(Vector vektori) void Hyppaa(Vector vektori)
{ {
pelaaja.Jump(280.0); pelaaja.Jump(480.0);
}
} }
/// <summary> /// <summary>
/// Tässä luodaan pelikenttä /// Tässä luodaan pelikenttä
/// </summary> /// </summary>
void LuoKentta() void LuoKentta(int numero)
{ {
if (kenttanumero == Kentat.Length)
{
Label Valmistuminen = new Label(800, 60, "Toimeentulohakemus hyväkystty.");
Valmistuminen.Y = 140;
Valmistuminen.Font = new Font(60);
Valmistuminen.TextColor = Color.LimeGreen;
//Kuolema.Color = Color.Black;
Add(Valmistuminen);
}
else
{
ClearAll();
Level.Background.CreateGradient(Color.DarkGray, Color.Blue); Level.Background.CreateGradient(Color.DarkGray, Color.Blue);
Gravity = new Vector(0, -1100.0); Gravity = new Vector(0, -1100.0);
// pelissä kentät luodaan piirtämällä pikseleitä. Pikselin väri kuvaa aina jotain tiettyä asiaa kentällä // pelissä kentät luodaan piirtämällä pikseleitä. Pikselin väri kuvaa aina jotain tiettyä asiaa kentällä
// ruutu = pikseli // ruutu = pikseli
ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta1"); ColorTileMap ruudut = ColorTileMap.FromLevelAsset(Kentat[numero]);
ruudut.SetTileMethod(Color.Lime, LuoPelaaja); //LIME pikseli on pelaaja ruudut.SetTileMethod(Color.Lime, LuoPelaaja); //LIME pikseli on pelaaja
ruudut.SetTileMethod(Color.Black, LuoTaso); //MUSTA on tiiliseinää ruudut.SetTileMethod(Color.Black, LuoTaso); //MUSTA on tiiliseinää
...@@ -106,11 +98,29 @@ namespace KelaCombatTesti; ...@@ -106,11 +98,29 @@ namespace KelaCombatTesti;
ruudut.SetTileMethod(Color.SkyBlue, LuoViinapullo); //VAALEANSNISET on pelaajaa parantavia viinapulloja ruudut.SetTileMethod(Color.SkyBlue, LuoViinapullo); //VAALEANSNISET on pelaajaa parantavia viinapulloja
ruudut.Execute(80, 80); ruudut.Execute(80, 80);
Timer.CreateAndStart(5.0, LuoKelabotti);
LuoElamalaskuri();
LuoPistelaskuri(); // Alustetaan pistelaskuri
Timer.CreateAndStart(5.0, LuoKelabotti); //Ajastin, joka lisää uuden vihollisen joka 5. sekunti
//kelabotin elämien väheneminen VahingoitaKelabottia aliohjelman mukaisesti
//AddCollisionHandler(Kelabotti, "Pesismaila", VahingoitaKelabottia);
Camera.Follow(pelaaja);
Keyboard.Listen(Key.A, ButtonState.Down, LiikuVasemmalle, null, new Vector());
Keyboard.Listen(Key.D, ButtonState.Down, LiikuOikealle, null, new Vector());
Keyboard.Listen(Key.W, ButtonState.Down, Hyppaa, null, new Vector());
//Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -1000));
Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
Keyboard.Listen(Key.Space, ButtonState.Pressed, LuoPesismaila, "", new Vector(90, 10), pelaaja);
}
} }
//tämä aliohjelma luo tiili-palikoita, joista kenttä (tällä hetkellä) rakentuu //tämä aliohjelma luo tiili-palikoita, joista kenttä (tällä hetkellä) rakentuu
void LuoTaso(Vector paikka, double leveys, double korkeus) void LuoTaso(Vector paikka, double leveys, double korkeus)
...@@ -120,6 +130,7 @@ namespace KelaCombatTesti; ...@@ -120,6 +130,7 @@ namespace KelaCombatTesti;
taso.CollisionIgnoreGroup = 2; taso.CollisionIgnoreGroup = 2;
taso.Color = Color.Gray; taso.Color = Color.Gray;
taso.Image = TiiliseinaKuva; taso.Image = TiiliseinaKuva;
taso.Tag = "taso";
Add(taso); Add(taso);
} }
//tämä aliohjelma luo pelaajaa parantavan viinapllon //tämä aliohjelma luo pelaajaa parantavan viinapllon
...@@ -138,7 +149,8 @@ namespace KelaCombatTesti; ...@@ -138,7 +149,8 @@ namespace KelaCombatTesti;
{ {
PhysicsObject BottiSpawni = PhysicsObject.CreateStaticObject(leveys, korkeus); PhysicsObject BottiSpawni = PhysicsObject.CreateStaticObject(leveys, korkeus);
BottiSpawni.Position = paikka; BottiSpawni.Position = paikka;
BottiSpawni.CollisionIgnoreGroup = 1; BottiSpawni.IgnoresCollisionResponse = true;
//BottiSpawni.CollisionIgnoreGroup = 3;
BottiSpawni.IsVisible = false; BottiSpawni.IsVisible = false;
BottiSpawni.IgnoresGravity = true; BottiSpawni.IgnoresGravity = true;
Add(BottiSpawni, -1); Add(BottiSpawni, -1);
...@@ -167,6 +179,7 @@ namespace KelaCombatTesti; ...@@ -167,6 +179,7 @@ namespace KelaCombatTesti;
AddCollisionHandler(pelaaja, "Kelabotti", VahingoitaPelaajaa); AddCollisionHandler(pelaaja, "Kelabotti", VahingoitaPelaajaa);
AddCollisionHandler(pelaaja, "Viinapullo", ParannaPelaajaa); AddCollisionHandler(pelaaja, "Viinapullo", ParannaPelaajaa);
AddCollisionHandler(pelaaja, "kappale", VahingoitaPelaajaa); AddCollisionHandler(pelaaja, "kappale", VahingoitaPelaajaa);
//AddCollisionHandler(kappale, "taso", TuhoaKappale);
Add(pelaaja); Add(pelaaja);
...@@ -215,7 +228,7 @@ namespace KelaCombatTesti; ...@@ -215,7 +228,7 @@ namespace KelaCombatTesti;
/// <summary> /// <summary>
/// Tässä luodaan uusi fysiikkaolio, Pesismaila /// Tässä luodaan uusi fysiikkaolio, Pesismaila
//Tämä toimii pelaajan lyöntinä (samalla määritellään ase. ///Tämä toimii pelaajan lyöntinä (samalla määritellään ase.
/// </summary> /// </summary>
/// <param name="koko">Pesismailan koko</param> /// <param name="koko">Pesismailan koko</param>
/// <param name="pelaaja">kohde, johon Pesismaila liitetään, eli pelaaja</param> /// <param name="pelaaja">kohde, johon Pesismaila liitetään, eli pelaaja</param>
...@@ -251,8 +264,6 @@ namespace KelaCombatTesti; ...@@ -251,8 +264,6 @@ namespace KelaCombatTesti;
Kelabotinelamalaskuri = new IntMeter(5); // Alussa on 5 elämää Kelabotinelamalaskuri = new IntMeter(5); // Alussa on 5 elämää
Kelabotti.Tag = "Kelabotti"; Kelabotti.Tag = "Kelabotti";
Kelabotti.Position = spawni.Position; Kelabotti.Position = spawni.Position;
Kelabotti.Weapon = new AssaultRifle(30, 10);
Kelabotti.Weapon.ProjectileCollision = VahingoitaPelaajaa;
Add(Kelabotti); Add(Kelabotti);
...@@ -279,17 +290,22 @@ namespace KelaCombatTesti; ...@@ -279,17 +290,22 @@ namespace KelaCombatTesti;
/// <param name="kohdeolionTunniste">pelaajan tunniste</param> /// <param name="kohdeolionTunniste">pelaajan tunniste</param>
public void KelabotinAmmus(PhysicsObject heittavaOlio, string kohdeolionTunniste) public void KelabotinAmmus(PhysicsObject heittavaOlio, string kohdeolionTunniste)
{ {
PhysicsObject kappale = new PhysicsObject(15, 15, Shape.Circle); PhysicsObject kappale = new PhysicsObject(15, 15, Shape.Triangle);
//kappale.Hit(new Vector(180,80)); kappale.Hit(new Vector(180*pelaaja.FacingDirection.GetVector().X, 10));
kappale.Hit(new Vector()); //kappale.Hit(new Vector());
kappale.Position = heittavaOlio.Position; kappale.Position = heittavaOlio.Position;
kappale.CollisionIgnoreGroup = 3; kappale.CollisionIgnoreGroup = 3;
kappale.Color = Color.Silver; kappale.Color = Color.Silver;
kappale.Tag = "kappale"; kappale.Tag = "kappale";
kappale.MaximumLifetime = TimeSpan.FromSeconds(8); kappale.MaximumLifetime = TimeSpan.FromSeconds(1.5);
Add(kappale); Add(kappale);
} }
/*
public void TuhoaKappale(PhysicsObject kappale, PhysicsObject taso)
{
kappale.Destroy();
}
*/
/// <summary> /// <summary>
/// Tämä aliohjelma käsittlee sen, kun pelaaja osuu Kelabottiin /// Tämä aliohjelma käsittlee sen, kun pelaaja osuu Kelabottiin
...@@ -348,7 +364,7 @@ namespace KelaCombatTesti; ...@@ -348,7 +364,7 @@ namespace KelaCombatTesti;
opintoNopat.TextColor = Color.Black; opintoNopat.TextColor = Color.Black;
Add(opintoNopat); Add(opintoNopat);
pisteet = new IntMeter(0); // Aloitetaan nollasta pisteet = new IntMeter(0); // Aloitetaan nollasta
pisteNaytto = new Label(); pisteNaytto = new Label();
pisteNaytto.X = Screen.Left + 170; pisteNaytto.X = Screen.Left + 170;
pisteNaytto.Y = Screen.Bottom + 95; pisteNaytto.Y = Screen.Bottom + 95;
...@@ -368,6 +384,11 @@ namespace KelaCombatTesti; ...@@ -368,6 +384,11 @@ namespace KelaCombatTesti;
void KunVihollinenTuhoutuu(PhysicsObject pelaaja, PhysicsObject kelabotti) void KunVihollinenTuhoutuu(PhysicsObject pelaaja, PhysicsObject kelabotti)
{ {
pisteet.Value += 100; // Lisää esim. 100 pistettä, kun botti tuhotaan pisteet.Value += 100; // Lisää esim. 100 pistettä, kun botti tuhotaan
if (pisteet.Value >= 300)
{
kenttanumero++;
LuoKentta(kenttanumero);
}
kelabotti.Destroy(); // Poistaa botin näytöltä kelabotti.Destroy(); // Poistaa botin näytöltä
} }
......
...@@ -26,6 +26,9 @@ ...@@ -26,6 +26,9 @@
<None Update="Content\tiiliseina.png"> <None Update="Content\tiiliseina.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None> </None>
<None Update="Content\kentta2.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup> </ItemGroup>
</Project> </Project>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment