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

lisäsin kentän, jota voi muokata piirtämällä, pelaajaa parantavia viinapulloja...

lisäsin kentän, jota voi muokata piirtämällä, pelaajaa parantavia viinapulloja ja kentällä on paikkoja, joihin kelabotteja voi spawnaa satunnaisesti
parent ab0fa2bd
No related branches found
No related tags found
No related merge requests found
KelaCombat/KelaCombatTesti/Content/kentta1.png

555 B

KelaCombat/KelaCombatTesti/Content/tiiliseina.png

1.17 KiB

...@@ -21,9 +21,12 @@ namespace KelaCombatTesti; ...@@ -21,9 +21,12 @@ namespace KelaCombatTesti;
{ {
PlatformCharacter pelaaja; PlatformCharacter pelaaja;
PhysicsObject Pesismaila; PhysicsObject Pesismaila;
PhysicsObject Viinapullo;
PlatformCharacter Kelabotti; PlatformCharacter Kelabotti;
private Image KelabottiKuva = LoadImage("Kelabotti"); private Image TiiliseinaKuva = LoadImage("tiiliseina");
private Image PelaajaKuva = LoadImage("Pelaaja.png"); 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.
//IntMeter edustaa muuttujia, jotka voivat kasvaa tai vähentyä tietyllä tavalla //IntMeter edustaa muuttujia, jotka voivat kasvaa tai vähentyä tietyllä tavalla
IntMeter pisteet; //pelaajan keräämät pisteet IntMeter pisteet; //pelaajan keräämät pisteet
...@@ -42,17 +45,12 @@ namespace KelaCombatTesti; ...@@ -42,17 +45,12 @@ namespace KelaCombatTesti;
public override void Begin() public override void Begin()
{ {
LuoKentta(); LuoKentta();
LuoKelabotti();
LuoElamalaskuri(); LuoElamalaskuri();
LuoPistelaskuri(); // Alustetaan pistelaskuri LuoPistelaskuri(); // Alustetaan pistelaskuri
//Ajastin, joka lisää uuden vihollisen joka 5. sekunti //Ajastin, joka lisää uuden vihollisen joka 5. sekunti
Timer.CreateAndStart(5.0, LisaaVihollinen);
//kelabotin elämien väheneminen VahingoitaKelabottia aliohjelman mukaisesti //kelabotin elämien väheneminen VahingoitaKelabottia aliohjelman mukaisesti
//AddCollisionHandler(Kelabotti, "Pesismaila", VahingoitaKelabottia); //AddCollisionHandler(Kelabotti, "Pesismaila", VahingoitaKelabottia);
...@@ -93,58 +91,84 @@ namespace KelaCombatTesti; ...@@ -93,58 +91,84 @@ namespace KelaCombatTesti;
/// </summary> /// </summary>
void LuoKentta() void LuoKentta()
{ {
Level.BackgroundColor = Color.Pink; Level.Background.CreateGradient(Color.DarkGray, Color.Blue);
Gravity = new Vector(0, -981.0); Gravity = new Vector(0, -981.0);
PhysicsObject vasenReuna = Level.CreateLeftBorder();
vasenReuna.Restitution = 0.0; // pelissä kentät luodaan piirtämällä pikseleitä. Pikselin väri kuvaa aina jotain tiettyä asiaa kentällä
vasenReuna.KineticFriction = 0.0; // ruutu = pikseli
vasenReuna.IsVisible = false; ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta1");
PhysicsObject oikeaReuna = Level.CreateRightBorder(); ruudut.SetTileMethod(Color.Lime, LuoPelaaja); //LIME pikseli on pelaaja
oikeaReuna.Restitution = 0.0; ruudut.SetTileMethod(Color.Black, LuoTaso); //MUSTA on tiiliseinää
oikeaReuna.KineticFriction = 0.0; ruudut.SetTileMethod(Color.Red, LuoKelabottiSpawni); //PUNAISEEN voi spawnaa vihu
oikeaReuna.IsVisible = false; ruudut.SetTileMethod(Color.SkyBlue, LuoViinapullo); //VAALEANSNISET on pelaajaa parantavia viinapulloja
PhysicsObject ylaReuna = Level.CreateTopBorder(); ruudut.Execute(70, 70);
ylaReuna.Restitution = 0.0;
ylaReuna.KineticFriction = 0.0;
ylaReuna.IsVisible = false;
PhysicsObject alaReuna = Level.CreateBottomBorder();
alaReuna.Restitution = 1.0;
alaReuna.IsVisible = true;
alaReuna.KineticFriction = 0.0;
alaReuna.Color = Color.Gray;
Timer.CreateAndStart(5.0, LuoKelabotti);
}
//tämä aliohjelma luo tiili-palikoita, joista kenttä (tällä hetkellä) rakentuu
void LuoTaso(Vector paikka, double leveys, double korkeus)
{
PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
taso.Position = paikka;
taso.CollisionIgnoreGroup = 2;
taso.Color = Color.Gray;
taso.Image = TiiliseinaKuva;
Add(taso);
}
//tämä aliohjelma luo pelaajaa parantavan viinapllon
void LuoViinapullo(Vector paikka, double x, double y)
{
Viinapullo = PhysicsObject.CreateStaticObject(20, 20);
Viinapullo.Position = paikka;
Viinapullo.Color = Color.White;
Viinapullo.Tag = "Viinapullo";
Add(Viinapullo);
pelaaja = LuoPelaaja(500.0, 0.0); }
//tämä aliohjelma luo "haamupalikan" jonka sijaintiin kelabotti myöhemmin luodaan
void LuoKelabottiSpawni(Vector paikka, double leveys, double korkeus)
{
PhysicsObject BottiSpawni = PhysicsObject.CreateStaticObject(leveys, korkeus);
BottiSpawni.Position = paikka;
BottiSpawni.CollisionIgnoreGroup = 1;
BottiSpawni.IsVisible = false;
BottiSpawni.IgnoresGravity = true;
Add(BottiSpawni, -1);
spawnipaikat.Add(BottiSpawni);
} }
/// <summary> /// <summary>
/// Aliohjelma, jossa luodaan pelaaja /// Aliohjelma, jossa luodaan pelaaja
/// </summary> /// </summary>
/// <param name="x">pelaajan x-koordinaatti</param> /// <param name="x">pelaajan x-koordinaatti</param>
/// <param name="y">pelaajan y-koordinaatti</param> /// <param name="y">pelaajan y-koordinaatti</param>
/// <returns>pelaaja</returns> /// <returns>pelaaja</returns>
PlatformCharacter LuoPelaaja(double x, double y) void LuoPelaaja(Vector paikka, double x, double y)
{ {
PlatformCharacter pelaaja = new PlatformCharacter(50.0, 100.0); pelaaja = new PlatformCharacter(50.0, 100.0);
pelaaja.Image = PelaajaKuva; pelaaja.Image = PelaajaKuva;
pelaaja.Mass = 1.0; pelaaja.Mass = 1.0;
pelaaja.Shape = Shape.Rectangle; pelaaja.Shape = Shape.Rectangle;
pelaaja.Color = Color.Black; pelaaja.Color = Color.Black;
pelaaja.X = x; pelaaja.Position = paikka;
pelaaja.Y = y; pelaaja.CollisionIgnoreGroup = 1;
// Törmäyksen käsittelijä, mitä tapahtuu, kun pelaaja osuu kelabotiin // Törmäyksen käsittelijä, mitä tapahtuu, kun pelaaja osuu kelabotiin
//Siis pelaajan elämien väheneminen VahnigoitaPelaajaa-aliohjelman mukaisesti //Siis pelaajan elämien väheneminen VahnigoitaPelaajaa-aliohjelman mukaisesti
AddCollisionHandler(pelaaja, "Kelabotti", VahingoitaPelaajaa); AddCollisionHandler(pelaaja, "Kelabotti", VahingoitaPelaajaa);
AddCollisionHandler(pelaaja, "Viinapullo", ParannaPelaajaa);
Add(pelaaja); Add(pelaaja);
return pelaaja;
} }
/// <summary> /// <summary>
...@@ -168,9 +192,10 @@ namespace KelaCombatTesti; ...@@ -168,9 +192,10 @@ namespace KelaCombatTesti;
tekstikentta.Y = Screen.Bottom + 70; tekstikentta.Y = Screen.Bottom + 70;
tekstikentta.Font = new Font(20); tekstikentta.Font = new Font(20);
Add(tekstikentta); Add(tekstikentta);
Add (elamapalkki); Add(elamapalkki);
} }
/// <summary> /// <summary>
...@@ -214,14 +239,16 @@ namespace KelaCombatTesti; ...@@ -214,14 +239,16 @@ namespace KelaCombatTesti;
/// Tämä funktio luo Kelabotti-vihun ja sille annetaan pelaajan seuraamis aivot /// Tämä funktio luo Kelabotti-vihun ja sille annetaan pelaajan seuraamis aivot
/// </summary> /// </summary>
/// <returns>Kelabotti</returns> /// <returns>Kelabotti</returns>
PlatformCharacter LuoKelabotti() void LuoKelabotti()
{ {
Jypeli.PhysicsObject spawni = spawnipaikat[RandomGen.NextInt(spawnipaikat.Count)];
PlatformCharacter Kelabotti = new PlatformCharacter(80.0, 80.0); PlatformCharacter Kelabotti = new PlatformCharacter(80.0, 80.0);
Kelabotti.Color = Color.Orange; Kelabotti.Color = Color.Orange;
Kelabotti.Image = KelabottiKuva; Kelabotti.Image = KelabottiKuva;
Kelabotti.MirrorImage(); Kelabotti.MirrorImage();
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;
Add(Kelabotti); Add(Kelabotti);
...@@ -229,19 +256,10 @@ namespace KelaCombatTesti; ...@@ -229,19 +256,10 @@ namespace KelaCombatTesti;
seuraajanAivot.Speed = 100; seuraajanAivot.Speed = 100;
Kelabotti.Brain = seuraajanAivot; Kelabotti.Brain = seuraajanAivot;
return Kelabotti;
} }
/// <summary>
/// Lisää Kelabotteja
/// </summary>
void LisaaVihollinen()
{
Random rand = new Random();
double x = rand.Next(-400, 400); // Satunnainen X-koordinaatti
double y = rand.Next(-200, 200); // Satunnainen Y-koordinaatti
LuoKelabotti(); // Luodaan uusi vihollinen satunnaiseen paikkaan
}
/// <summary> /// <summary>
/// Tämä aliohjelma käsittlee sen, kun pelaaja osuu Kelabottiin /// Tämä aliohjelma käsittlee sen, kun pelaaja osuu Kelabottiin
/// </summary> /// </summary>
...@@ -259,8 +277,24 @@ namespace KelaCombatTesti; ...@@ -259,8 +277,24 @@ namespace KelaCombatTesti;
//Pesismaila.Destroy();//...myös pesismaila //Pesismaila.Destroy();//...myös pesismaila
} }
} }
//tämä aliohjelma määrää, mitä käy, kun pelaaja koskee viinapulloa
void ParannaPelaajaa(PhysicsObject pelaaja, PhysicsObject Viinapullo)
{
//Viinapullo.CollisionIgnoreGroup = 1;
if (pelaajanelamaLaskuri.Value < 90)
{
//Viinapullo.CollisionIgnoreGroup = 0;
pelaajanelamaLaskuri.Value = pelaajanelamaLaskuri.Value + 20;
Viinapullo.Destroy();
}
}
//tää ei toimi vielä //tää ei toimi vielä
void VahingoitaKelabottia(PhysicsObject Kelabotti, PhysicsObject Pesismaila) void VahingoitaKelabottia(PhysicsObject Kelabotti, PhysicsObject Pesismaila)
{ {
......
...@@ -20,6 +20,12 @@ ...@@ -20,6 +20,12 @@
<None Update="Content\Kelabotti.png"> <None Update="Content\Kelabotti.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Update="Content\kentta1.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Content\tiiliseina.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