Skip to content
Snippets Groups Projects
Commit d575dc9e authored by Salonen Matteus Elmeri's avatar Salonen Matteus Elmeri
Browse files

Lisätty kuvat ja pelaajan liikutus

parent 584c4103
No related branches found
No related tags found
No related merge requests found
Harjoitustyo/HyttysPeli/Content/hyttynen (2).png

505 KiB

Harjoitustyo/HyttysPeli/Content/hyttyskarkoite.png

386 KiB

......@@ -7,7 +7,7 @@ using Jypeli.Widgets;
namespace HyttysPeli;
/// @author Omanimi
/// @author salmatel
/// @version 12.11.2023
/// <summary>
///
......@@ -16,9 +16,112 @@ public class HyttysPeli : PhysicsGame
{
public override void Begin()
{
// Kirjoita ohjelmakoodisi tähän
MasterVolume = 0.05;
Level.Background.Color = Color.Green;
BoundingRectangle alaosa = new BoundingRectangle(new Vector(Level.Left, 0), Level.BoundingRect.BottomRight);
BoundingRectangle ylaosa = new BoundingRectangle(Level.BoundingRect.TopLeft, new Vector(Level.Right, 0));
Level.CreateBorders();
PhysicsObject pelaaja = new PhysicsObject(100, 100, Shape.Rectangle);
pelaaja.Position = RandomGen.NextVector(alaosa);
pelaaja.Image = LoadImage("hyttyskarkoite");
Add(pelaaja);
Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä avustus");
Keyboard.Listen(Key.Up, ButtonState.Down, LyoKolmiota, "Pelaaja ylös", pelaaja, new Vector(0, 20));
Keyboard.Listen(Key.Down, ButtonState.Down, LyoKolmiota, "Pelaaja alas", pelaaja, new Vector(0, -20));
Keyboard.Listen(Key.Left, ButtonState.Down, LyoKolmiota, "Pelaaja vasemmalle", pelaaja, new Vector(-20, 0));
Keyboard.Listen(Key.Right, ButtonState.Down, LyoKolmiota, "Pelaaja oikealle", pelaaja, new Vector(20, 0));
for(int i = 0; i < 20; i++)
LuoSattunnainenHyttynen(this, ylaosa, 60, "vihu");
AddCollisionHandler(pelaaja, "vihu", PelaajaTormasi);
PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
}
}
\ No newline at end of file
/// <summary>
/// Metodi johon tullaan kun pelaaja ja joku kolmio törmäävät.
/// Mikäli pelaajan ala on suurempi kuin vihollisen ala,
/// luodaan vihollisen kohdalla räjähdys ja poistetaan vihollinen pelistä
/// sekä siirretään vihollisen ala pelaajalle.
/// Muuten lopetetaan peli. TODO: keksittävä parempi lopetus
/// </summary>
/// <param name="pelaaja">pelaaja joka törmäsi</param>
/// <param name="vihu">vihollinen johon pelaaja törmäsi</param>
private void PelaajaTormasi(PhysicsObject pelaaja, PhysicsObject vihu)
{
double pelaajanAla = KolmionAla(pelaaja.Width, pelaaja.Height);
double vihunAla = KolmionAla(vihu.Width, vihu.Height);
if (pelaajanAla > vihunAla)
{
Explosion rajahdys = new Explosion(vihu.Width * 2);
rajahdys.Position = vihu.Position;
rajahdys.UseShockWave = false; // kannattaa kokeilla mitä taphatuu true -arvolla.
this.Add(rajahdys);
Remove(vihu);
return;
}
Exit(); // TODO: lisää parempi loppu
}
/// <summary>
/// Lyödään kolmiota voimavektorilla
/// </summary>
/// <param name="kolmio">lyötävä kolmio</param>
/// <param name="suunta">voimavektori</param>
public static void LyoKolmiota(PhysicsObject kolmio, Vector suunta)
{
kolmio.Hit(kolmio.Mass * suunta);
}
/// <summary>
/// Luodaan satunnainen kolmio suorakaiteen sisälle. Myös nopeus, väri ja kulma arvotaan.
/// </summary>
/// <param name="peli">Mihin peliin kolmio luodaan</param>
/// <param name="rect">Minkä suorakaiteen sisälle luodaan</param>
/// <param name="vauhti">Kolmion vauhti alkutilanteessa</param>
/// <param name="tunniste">Kolmiolle annettava tunniste</param>
/// <returns>Viite luotuun kolmioon</returns>
public static PhysicsObject LuoSattunnainenHyttynen(PhysicsGame peli, BoundingRectangle rect, double vauhti, string tunniste)
{
double leveys = 50;
double korkeus = 50;
PhysicsObject hyttynen = new PhysicsObject(leveys, korkeus, Shape.Star);
hyttynen.Position = RandomGen.NextVector(rect);
Vector suunta = RandomGen.NextVector(0, vauhti);
hyttynen.Hit(suunta);
hyttynen.Tag = tunniste;
hyttynen.Image = LoadImage("hyttynen (2)");
peli.Add(hyttynen);
return hyttynen;
}
/// <summary>
/// Laskee kolmion alan
/// </summary>
/// <param name="kanta">kolmion kanta</param>
/// <param name="korkeus">kolmion korkeus</param>
/// <returns>kolmion ala</returns>
/// <example>
/// <pre name="test">
/// KolmionAla(0,0) ~~~ 0;
/// KolmionAla(1,0) ~~~ 0;
/// KolmionAla(1,1) ~~~ 0.5;
/// KolmionAla(3,5) ~~~ 7.5;
/// </pre>
/// </example>
public static double KolmionAla(double kanta, double korkeus)
{
return kanta * korkeus * 1 / 2;
}
}
......@@ -10,4 +10,16 @@
<PackageReference Include="Jypeli.FarseerPhysics.NET" Version="2.*"/>
</ItemGroup>
<ItemGroup>
<None Update="Content\hyttyskarkoite.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Content\hyttynen (2).png">
<CopyToOutputDirectory>PreserveNewest</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