Skip to content
Snippets Groups Projects
Commit 8d9821af authored by Lehtinen Anni Henriikka's avatar Lehtinen Anni Henriikka
Browse files

Kiekkojen lisääminen kentälle (kesken), Rakennetta siistitty, Dokumentaatiota parannettu

parent 291e7105
No related branches found
No related tags found
No related merge requests found
...@@ -8,7 +8,7 @@ using Jypeli.Widgets; ...@@ -8,7 +8,7 @@ using Jypeli.Widgets;
namespace Escape; namespace Escape;
/// @author annilehtinen /// @author annilehtinen
/// @version 28.03.2025 / 2 /// @version 29.03.2025
/// <summary> /// <summary>
/// Peli, jossa pelaajaan tavoitteena on vältellä vastustajaa (Barkov) ja kerätä kiekkoja saadakseen pisteitä. /// Peli, jossa pelaajaan tavoitteena on vältellä vastustajaa (Barkov) ja kerätä kiekkoja saadakseen pisteitä.
/// </summary> /// </summary>
...@@ -16,67 +16,109 @@ public class Escape : PhysicsGame ...@@ -16,67 +16,109 @@ public class Escape : PhysicsGame
{ {
public override void Begin() public override void Begin()
{ {
Surfaces borders = Level.CreateBorders(0.5, true, Color.White);
Camera.ZoomToLevel(); Camera.ZoomToLevel();
CreateLevel();
PhysicsObject player = new PhysicsObject(40, 40); PhysicsObject player = AddPlayer(this);
player.Image = LoadImage("player.png"); SetControls(player);
player.CanRotate = false;
player.LinearDamping = 0.95;
this.Add(player);
SetControls();
PhysicsObject barkov = new PhysicsObject(50, 50); PhysicsObject barkov = new PhysicsObject(50, 50);
barkov.Image = LoadImage("Barkov.png"); barkov.Image = LoadImage("Barkov.png");
barkov.X = 60; barkov.X = 60;
barkov.Y = -60; barkov.Y = -60;
this.Add(barkov); this.Add(barkov);
SpawnPuck(); Timer.CreateAndStart(4.0, SpawnPucks);
Timer.CreateAndStart(4.0, SpawnPuck); }
/// <summary>
/// Peliohjainten asettaminen pelaajalle
/// </summary>
void SetControls(PhysicsObject player)
{
Keyboard.Listen(Key.Up, ButtonState.Down, MovePlayer, "Liikuta pelaajaa eteenpäin", player);
Keyboard.Listen(Key.Left, ButtonState.Down, TurnPlayer, "Käännä pelaajaa vasemmalle", player, 2.0);
Keyboard.Listen(Key.Left, ButtonState.Released, TurnPlayer, null, player, 0.0);
Keyboard.Listen(Key.Right, ButtonState.Down, TurnPlayer, "Käännä pelaajaa oikealle", player,-2.0);
Keyboard.Listen(Key.Right, ButtonState.Released, TurnPlayer, null, player,0.0);
/// <summary> Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
/// Peliohjainten asettaminen }
/// </summary>
void SetControls()
{ /// <summary>
Keyboard.Listen(Key.Up, ButtonState.Down, MovePlayer, "Liikuta pelaajaa eteenpäin"); /// Lisää pelaajan hahmon pelikentälle ja määrittää sen ominaisuudet
Keyboard.Listen(Key.Left, ButtonState.Down, TurnPlayer, "Käännä pelaajaa vasemmalle", 2.0); /// </summary>
Keyboard.Listen(Key.Left, ButtonState.Released, TurnPlayer, null, 0.0); /// <param name="game">Peli, johon hahmo lisätään</param>
Keyboard.Listen(Key.Right, ButtonState.Down, TurnPlayer, "Käännä pelaajaa oikealle", -2.0); /// <returns>Pelaaja</returns>
Keyboard.Listen(Key.Right, ButtonState.Released, TurnPlayer, null, 0.0); static PhysicsObject AddPlayer(PhysicsGame game)
{
PhysicsObject player = new PhysicsObject(40, 40);
player.Image = LoadImage("player.png");
player.CanRotate = false;
player.LinearDamping = 0.95;
Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); game.Add(player);
} return player;
}
/// <summary>
/// Pelaajan liikuttaminen eteenpäin (myöhemmin animaation kanssa)
/// </summary> /// <summary>
void MovePlayer() /// Pelaajan liikuttaminen eteenpäin (myöhemmin animaation kanssa)
{ /// </summary>
int playerSpeed = 10; void MovePlayer(PhysicsObject player)
Vector playerDirection = Vector.FromLengthAndAngle(50.0, player.Angle); {
player.Push(playerDirection * playerSpeed); int playerSpeed = 10;
} Vector playerDirection = Vector.FromLengthAndAngle(50.0, player.Angle);
player.Push(playerDirection * playerSpeed);
}
/// <summary>
/// Pelaajan kääntäminen nuolinäppäinten avulla
/// </summary>
/// <param name="player">Pelaaja, jonka hahmoa käännetään</param>
/// <param name="angle">Kulma, jossa hahmoa käännetään</param>
void TurnPlayer(PhysicsObject player, double angle)
{
player.Angle += Angle.FromDegrees(angle);
}
/// <summary>
/// Kiekon lisääminen kentälle satunnaiseen kohtaan
/// </summary>
/// <param name="amount">Kuinka monta kiekkoa luodaan kentälle</param>
/// <param name="lifetime">Aika, jonka kiekko on kentällä ennen kuin se katoaa</param>
void SpawnPucks(int amount, double lifetime)
{
GameObject puck = new GameObject(18, 18);
puck.Shape = Shape.Circle;
puck.Color = Color.Black;
puck.LifetimeLeft = TimeSpan.FromSeconds(lifetime);
puck.Position = Level.GetRandomPosition();
/// <summary> for (int i = 1; i <= amount; i++) this.Add(puck);
/// Pelaajan kääntäminen nuolinäppäinten avulla }
/// </summary>
void TurnPlayer(double angle)
{ /// <summary>
player.Angle += Angle.FromDegrees(angle); /// Yhden kiekon lisääminen kentälle satunnaiseen kohtaan viiden sekunnin ajaksi,
} /// jos kutsussa ei anneta parametrinä määrää ja aikaa erikseen
/// </summary>
void SpawnPuck() void SpawnPucks()
{ {
GameObject puck = new GameObject(18, 18); SpawnPucks(1, 5.0);
puck.Shape = Shape.Circle; }
puck.Color = Color.Black;
puck.LifetimeLeft = TimeSpan.FromSeconds(5.0);
puck.Position = Level.GetRandomPosition(); /// <summary>
this.Add(puck); /// Lisätään kentälle haluttu määrä kiekkoja (pelin alkaessa)
} /// </summary>
void CreateLevel() //TODO: Kiekkojen lisääminen ei toimi
{
Surfaces borders = Level.CreateBorders(0.5, true, Color.White);
SpawnPucks(5, 10.0);
} }
} }
\ No newline at end of file
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