Skip to content
Snippets Groups Projects
Commit 04bdca8b authored by Kopperoinen Paulus's avatar Kopperoinen Paulus
Browse files

Tein kokonaan uuden liikkumisjärjestelmän, mato voi vieläkin jäädä ruutujen...

Tein kokonaan uuden liikkumisjärjestelmän, mato voi vieläkin jäädä ruutujen puoleen väliin, mutta päätin, ettei minua kiinnosta se ja aion pitää liikkumismekanismin sillaisenaan, tein siis pelin kokonaan uudestaan tähän vaiheeseen asti. Seuraavaksi aion lisätä omenat ja niiden uudelleensyntymismekanismin, sekä sen jälkeen madon pituuden kasvumekanismin
parent 25049a06
No related branches found
No related tags found
No related merge requests found
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Runtime.ExceptionServices; using System.Security.Cryptography.X509Certificates;
using System.Xml.Serialization;
using Jypeli; using Jypeli;
using Jypeli.Assets; using Jypeli.Assets;
using Jypeli.Controls; using Jypeli.Controls;
using Jypeli.Effects;
using Jypeli.Widgets; using Jypeli.Widgets;
namespace matopeli;
namespace Matopeli;
/// @author Omanimi /// @author Omanimi
/// @version 26.10.2023 /// @version 30.10.2023
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public class Matopeli : PhysicsGame public class matopeli : PhysicsGame
{
private Objektit Mato;
public double MatoX;
public double MatoY;
public int SuuntaX;
public int SuuntaY;
private static readonly Image seinakuva = LoadImage("seina.png");
private static readonly Image matopaakuva = LoadImage("matopaa.png");
private readonly Image matokehokuva = LoadImage("matokeho.png");
private readonly Image omenakuva = LoadImage("omena.png");
private readonly Image kenttatausta = LoadImage("kenttatausta.png");
private bool SuuntaYlos = false;
private bool SuuntaAlas = false;
private bool SuuntaOikea = false;
private bool SuuntaVasen = false;
public override void Begin()
{ {
// Kirjoita ohjelmakoodisi tähän
private static readonly string[] kentta ={ PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
"---------------", Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
"- -", AloitaUusiPeli();
"- -",
"- -",
"- -",
"- -",
"- m -",
"- -",
"- -",
"- -",
"- -",
"- -",
"- -",
"---------------",
};
private int seinaleveys= 600 / kentta.Length;
private int seinakorkeus = 600 / kentta.Length;
private static readonly Image seinakuva = LoadImage("seina.png");
private static readonly Image matopaakuva = LoadImage("matopaa.png");
private readonly Image matokehokuva = LoadImage("matokeho.png");
private readonly Image omenakuva = LoadImage("omena.png");
private readonly Image kenttatausta = LoadImage("kenttatausta.png");
private LiikkuvaMato mato;
private LiikkuvaMato omena;
public readonly IntMeter pisteet = new IntMeter(0); }
public void AloitaUusiPeli()
{
ClearAll();
SuuntaAlas = true;
LuoMato();
Asetaohjaimet();
LuoAikalaskuri();
}
private void Asetaohjaimet()
{
Keyboard.Listen(Key.Up, ButtonState.Pressed, VaihdaSuuntaYlos, "Turn upwards");
Keyboard.Listen(Key.Down, ButtonState.Pressed, VaihdaSuuntaAlas, "Turn downwards");
Keyboard.Listen(Key.Left, ButtonState.Pressed, VaihdaSuuntaVasen , "Turn left");
Keyboard.Listen(Key.Right, ButtonState.Pressed, VaihdaSuuntaOikea, "Turn right");
}
public PhysicsObject LuoMato()
{
Mato = new Objektit(60, 60, new Vector(0,0));
Mato.Color = Color.Charcoal;
Mato.Position = new Vector(0, 0);
Add(Mato);
Mato.Tag = "mato";
return Mato;
}
public override void Begin() private void VaihdaSuuntaYlos()
{ {
ClearAll();
// Background.Image = LoadImage("kenttatausta"); if (SuuntaAlas==true)
//LuoTausta(); {
SuuntaOikea = false;
AloitaUusiPeli(); SuuntaVasen = false;
SuuntaYlos = false;
SuuntaAlas = true;
}
else
{
SuuntaOikea = false;
SuuntaVasen = false;
SuuntaYlos = true;
SuuntaAlas = false;
}
} }
public void AloitaUusiPeli() private void VaihdaSuuntaAlas()
{ {
// pisteet.Value = 0; if (SuuntaYlos==true)
{
TileMap seinat = TileMap.FromStringArray(kentta); SuuntaOikea = false;
seinat.SetTileMethod('-', LuoSeina); SuuntaVasen = false;
seinat['m'] = LuoMato; SuuntaYlos = true;
//seinat.SetTileMethod('k',LuoMatokeho); SuuntaAlas = false;
seinat.Insert(seinaleveys, seinakorkeus); }
Asetaohjaimet(); else
{
seinat.Execute(seinaleveys, seinakorkeus); SuuntaOikea = false;
LuoOmena(); SuuntaVasen = false;
SuuntaYlos = false;
SuuntaAlas = true;
}
} }
private void VaihdaSuuntaOikea()
private void Asetaohjaimet()
{ {
Keyboard.Listen(Key.Up, ButtonState.Down, KaannyYlos, "Turn upwards"); if (SuuntaVasen == true)
Keyboard.Listen(Key.Down, ButtonState.Down, KaannyAlas, "Turn downwards"); {
Keyboard.Listen(Key.Left, ButtonState.Down, KaannyVasen, "Turn left");
Keyboard.Listen(Key.Right, ButtonState.Down, KaannyOikea, "Turn right"); SuuntaOikea = false;
} SuuntaVasen = true;
SuuntaYlos = false;
SuuntaAlas = false;
}
else
{
SuuntaOikea = true;
SuuntaVasen = false;
SuuntaYlos = false;
SuuntaAlas = false;
}
private void KaannyYlos()
{
mato.Velocity = new Vector(0, 150);
mato.Angle = Angle.FromDegrees(90);
}
private void KaannyAlas()
{
mato.Velocity = new Vector(0, -150);
mato.Angle = Angle.FromDegrees(270);
} }
private void KaannyVasen()
private void VaihdaSuuntaVasen()
{ {
if (SuuntaOikea==true)
mato.Velocity = new Vector(-150, 0); {
mato.Angle = Angle.FromDegrees(180); SuuntaOikea = true;
SuuntaVasen = false;
SuuntaYlos = false;
SuuntaAlas = false;
}
else
{
SuuntaOikea = false;
SuuntaVasen = true;
SuuntaYlos = false;
SuuntaAlas = false;
}
} }
private void KaannyOikea() private void LuoAikalaskuri()
{ {
Timer aikalaskuri = new Timer();
mato.Velocity = new Vector(150, 0); aikalaskuri.Interval = 0.008;
mato.Angle = Angle.FromDegrees(0); aikalaskuri.Timeout += LiikutaMatoa;
aikalaskuri.Start();
} }
private void LuoSeina(Vector paikka, double leveys, double korkeus) private void LiikutaMatoa()
{ {
PhysicsObject seina = new PhysicsObject(leveys, korkeus); if (SuuntaYlos==true)
seina.Position = paikka;
seina.Image = seinakuva;
seina.Tag = "seina";
seina.MakeStatic();
Add(seina);
}
private PhysicsObject LuoMato()
{ {
mato = new LiikkuvaMato(seinaleveys, seinakorkeus); Mato.Y++;
mato.Image = Matopeli.matopaakuva;
mato.Tag = "mato";
mato.Velocity = new Vector(150, 0);
AddCollisionHandler(mato, "seina", TormaaSeinaan);
AddCollisionHandler(mato, "omena", SyoOmenan);
return mato;
} }
if (SuuntaAlas==true)
private PhysicsObject LuoOmena()
{ {
omena = new LiikkuvaMato(seinaleveys, seinakorkeus); Mato.Y--;
omena.Image = omenakuva;
omena.Tag = "omena";
return omena;
} }
if (SuuntaOikea==true)
private void TormaaSeinaan(IPhysicsObject mato,IPhysicsObject seina)
{ {
mato.Velocity = new Vector(0,0); Mato.X++;
seina.Velocity = new Vector(0, 0);
} }
if (SuuntaVasen==true)
private void SyoOmenan(IPhysicsObject mato, IPhysicsObject omena)
{ {
omena.Destroy(); Mato.X--;
} }
} }
private class Objektit : PhysicsObject
public class LiikkuvaMato : PhysicsObject
{ {
public LiikkuvaMato(double leveys, double korkeus) public Objektit(double leveys, double korkeus, Vector paikka)
: base(leveys, korkeus) : base(leveys, korkeus)
{ {
Mass = 10000; Mass = 10000;
IgnoresGravity = true;
IsUpdated = true; IsUpdated = true;
} }
} }
}
......
...@@ -47,4 +47,8 @@ ...@@ -47,4 +47,8 @@
</None> </None>
</ItemGroup> </ItemGroup>
<ItemGroup>
<Compile Remove="nollaaja.cs" />
</ItemGroup>
</Project> </Project>
namespace Matopeli;
class nollaaja
{
public int X { get; set; }
public int Y { get; set; }
public nollaaja()
{
X = 0;
Y = 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