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;
/// </summary>
public class KelaCombatTesti : PhysicsGame
{
int kenttanumero = 0;
string[] Kentat = {"kentta1", "kentta2"};
PlatformCharacter pelaaja;
PhysicsObject Pesismaila;
PhysicsObject Viinapullo;
PhysicsObject kappale;
PlatformCharacter Kelabotti;
private Image TiiliseinaKuva = LoadImage("tiiliseina");
Image TiiliseinaKuva = LoadImage("tiiliseina");
Image KelabottiKuva = LoadImage("Kelabotti");
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.
......@@ -44,61 +47,50 @@ namespace KelaCombatTesti;
/// </summary>
public override void Begin()
{
LuoKentta();
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);
LuoKentta(0);
}
void LiikuVasemmalle(Vector vektori)
{
pelaaja.Walk(-120);
}
void LiikuVasemmalle(Vector vektori)
{
pelaaja.Walk(-120);
}
void LiikuOikealle(Vector vektori)
{
pelaaja.Walk(120);
}
void LiikuOikealle(Vector vektori)
{
pelaaja.Walk(120);
}
void Hyppaa(Vector vektori)
{
pelaaja.Jump(280.0);
}
void Hyppaa(Vector vektori)
{
pelaaja.Jump(480.0);
}
/// <summary>
/// Tässä luodaan pelikenttä
/// </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);
Gravity = new Vector(0, -1100.0);
// pelissä kentät luodaan piirtämällä pikseleitä. Pikselin väri kuvaa aina jotain tiettyä asiaa kentällä
// 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.Black, LuoTaso); //MUSTA on tiiliseinää
......@@ -106,11 +98,29 @@ namespace KelaCombatTesti;
ruudut.SetTileMethod(Color.SkyBlue, LuoViinapullo); //VAALEANSNISET on pelaajaa parantavia viinapulloja
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
void LuoTaso(Vector paikka, double leveys, double korkeus)
......@@ -120,6 +130,7 @@ namespace KelaCombatTesti;
taso.CollisionIgnoreGroup = 2;
taso.Color = Color.Gray;
taso.Image = TiiliseinaKuva;
taso.Tag = "taso";
Add(taso);
}
//tämä aliohjelma luo pelaajaa parantavan viinapllon
......@@ -138,7 +149,8 @@ namespace KelaCombatTesti;
{
PhysicsObject BottiSpawni = PhysicsObject.CreateStaticObject(leveys, korkeus);
BottiSpawni.Position = paikka;
BottiSpawni.CollisionIgnoreGroup = 1;
BottiSpawni.IgnoresCollisionResponse = true;
//BottiSpawni.CollisionIgnoreGroup = 3;
BottiSpawni.IsVisible = false;
BottiSpawni.IgnoresGravity = true;
Add(BottiSpawni, -1);
......@@ -167,6 +179,7 @@ namespace KelaCombatTesti;
AddCollisionHandler(pelaaja, "Kelabotti", VahingoitaPelaajaa);
AddCollisionHandler(pelaaja, "Viinapullo", ParannaPelaajaa);
AddCollisionHandler(pelaaja, "kappale", VahingoitaPelaajaa);
//AddCollisionHandler(kappale, "taso", TuhoaKappale);
Add(pelaaja);
......@@ -215,7 +228,7 @@ namespace KelaCombatTesti;
/// <summary>
/// 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>
/// <param name="koko">Pesismailan koko</param>
/// <param name="pelaaja">kohde, johon Pesismaila liitetään, eli pelaaja</param>
......@@ -251,8 +264,6 @@ namespace KelaCombatTesti;
Kelabotinelamalaskuri = new IntMeter(5); // Alussa on 5 elämää
Kelabotti.Tag = "Kelabotti";
Kelabotti.Position = spawni.Position;
Kelabotti.Weapon = new AssaultRifle(30, 10);
Kelabotti.Weapon.ProjectileCollision = VahingoitaPelaajaa;
Add(Kelabotti);
......@@ -279,17 +290,22 @@ namespace KelaCombatTesti;
/// <param name="kohdeolionTunniste">pelaajan tunniste</param>
public void KelabotinAmmus(PhysicsObject heittavaOlio, string kohdeolionTunniste)
{
PhysicsObject kappale = new PhysicsObject(15, 15, Shape.Circle);
//kappale.Hit(new Vector(180,80));
kappale.Hit(new Vector());
PhysicsObject kappale = new PhysicsObject(15, 15, Shape.Triangle);
kappale.Hit(new Vector(180*pelaaja.FacingDirection.GetVector().X, 10));
//kappale.Hit(new Vector());
kappale.Position = heittavaOlio.Position;
kappale.CollisionIgnoreGroup = 3;
kappale.Color = Color.Silver;
kappale.Tag = "kappale";
kappale.MaximumLifetime = TimeSpan.FromSeconds(8);
kappale.MaximumLifetime = TimeSpan.FromSeconds(1.5);
Add(kappale);
}
/*
public void TuhoaKappale(PhysicsObject kappale, PhysicsObject taso)
{
kappale.Destroy();
}
*/
/// <summary>
/// Tämä aliohjelma käsittlee sen, kun pelaaja osuu Kelabottiin
......@@ -348,7 +364,7 @@ namespace KelaCombatTesti;
opintoNopat.TextColor = Color.Black;
Add(opintoNopat);
pisteet = new IntMeter(0); // Aloitetaan nollasta
pisteet = new IntMeter(0); // Aloitetaan nollasta
pisteNaytto = new Label();
pisteNaytto.X = Screen.Left + 170;
pisteNaytto.Y = Screen.Bottom + 95;
......@@ -368,6 +384,11 @@ namespace KelaCombatTesti;
void KunVihollinenTuhoutuu(PhysicsObject pelaaja, PhysicsObject kelabotti)
{
pisteet.Value += 100; // Lisää esim. 100 pistettä, kun botti tuhotaan
if (pisteet.Value >= 300)
{
kenttanumero++;
LuoKentta(kenttanumero);
}
kelabotti.Destroy(); // Poistaa botin näytöltä
}
......
......@@ -26,6 +26,9 @@
<None Update="Content\tiiliseina.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Content\kentta2.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</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