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

sain vihdoinkin liikkumisesta suunnilleen sellaista kuin haluan. vaihdoin...

sain vihdoinkin liikkumisesta suunnilleen sellaista kuin haluan. vaihdoin madon liikkumisen yhdestä yksiköstä madon leveyteen
parent deb3caf6
No related branches found
No related tags found
No related merge requests found
...@@ -16,35 +16,34 @@ namespace matopeli; ...@@ -16,35 +16,34 @@ namespace matopeli;
public class matopeli : PhysicsGame public class matopeli : PhysicsGame
{ {
private static readonly string[] tasonkuva = { private static readonly string[] tasonkuva = {
"#################", "#####################",
"# #", "# #",
"# #", "# #",
"# #", "# #",
"# #", "# #",
"# #", "# #",
"# #", "# #",
"# #", "# #",
"# #", "# #",
"# #", "# #",
"# #", "# #",
"# #", "# #",
"# #", "# #",
"#################", "# #",
"# #",
"# #",
"# #",
"#####################",
}; };
private Objektit Mato; private Objektit Mato;
private Objektit Omena; private Objektit Omena;
private Objektit MatoMuu;
public double MatoX; public List<Vector> MatoSijainti = new List<Vector>();
public double MatoY; public List<PhysicsObject> MatoKeho = new List<PhysicsObject>();
public int LuoOmenaX; public int leveys = 40;
public int LuoOmenaY; public int korkeus = 40;
public int SuuntaX;
public int SuuntaY;
public int leveys = 60;
public int korkeus = 60;
private static readonly Image seinakuva = LoadImage("seina.png"); private static readonly Image seinakuva = LoadImage("seina.png");
private static readonly Image matopaakuva = LoadImage("matopaa.png"); private static readonly Image matopaakuva = LoadImage("matopaa.png");
...@@ -57,7 +56,7 @@ public class matopeli : PhysicsGame ...@@ -57,7 +56,7 @@ public class matopeli : PhysicsGame
private bool SuuntaOikea = false; private bool SuuntaOikea = false;
private bool SuuntaVasen = false; private bool SuuntaVasen = false;
private bool OmenaKentalla = false; private bool OmenaKentalla = true;
public override void Begin() public override void Begin()
{ {
// Kirjoita ohjelmakoodisi tähän // Kirjoita ohjelmakoodisi tähän
...@@ -76,6 +75,7 @@ public class matopeli : PhysicsGame ...@@ -76,6 +75,7 @@ public class matopeli : PhysicsGame
LuoMato(); LuoMato();
Asetaohjaimet(); Asetaohjaimet();
LuoAikalaskuri(); LuoAikalaskuri();
LuoOmena();
TileMap tiles = TileMap.FromStringArray(tasonkuva); TileMap tiles = TileMap.FromStringArray(tasonkuva);
tiles['#'] = LuoSeina; tiles['#'] = LuoSeina;
...@@ -98,12 +98,43 @@ public class matopeli : PhysicsGame ...@@ -98,12 +98,43 @@ public class matopeli : PhysicsGame
return Mato; return Mato;
} }
/// <summary>
/// Luodaan omena johonkin satunnaiseen kohtaan kartalla, joka ei ole samassa kohtaa madon kanssa.
/// </summary>
/// <returns></returns>
private PhysicsObject LuoOmena() private PhysicsObject LuoOmena()
{ {
Vector paikka = Level.GetRandomPosition(); Vector paikka = Level.GetRandomPosition();
if (paikka.X-Mato.X<20)
for (int i = 0; i < 20; i++)
{ {
if (paikka.Y-Mato.Y<20) if (paikka.X-Mato.X<20)
{
if (paikka.Y-Mato.Y<20)
{
paikka = Level.GetRandomPosition();
}
}
if (paikka.X<70)
{
if (paikka.X<-70)
{
paikka = Level.GetRandomPosition();
}
}
else
{
paikka = Level.GetRandomPosition();
}
if (paikka.Y<70)
{
if (paikka.Y<-70)
{
paikka = Level.GetRandomPosition();
}
}
else
{ {
paikka = Level.GetRandomPosition(); paikka = Level.GetRandomPosition();
} }
...@@ -127,6 +158,20 @@ public class matopeli : PhysicsGame ...@@ -127,6 +158,20 @@ public class matopeli : PhysicsGame
return Seina; return Seina;
} }
/// <summary>
/// Tehdään aliohjelma, joka luo uusia osia madon perään.
/// </summary>
private PhysicsObject LuoMatoKeho(Vector Paikka)
{
MatoMuu = new Objektit(leveys, korkeus, Paikka);
MatoMuu.Tag = "matokeho";
MatoMuu.Image = matokehokuva;
MatoMuu.Position = Paikka;
MatoKeho.Add(MatoMuu);
Add(MatoMuu);
return MatoMuu;
}
private void MatoSyoOmenan() private void MatoSyoOmenan()
{ {
Omena.Destroy(); Omena.Destroy();
...@@ -210,52 +255,67 @@ public class matopeli : PhysicsGame ...@@ -210,52 +255,67 @@ public class matopeli : PhysicsGame
private void LuoAikalaskuri() private void LuoAikalaskuri()
{ {
Timer aikalaskuri = new Timer(); Timer aikalaskuri = new Timer();
aikalaskuri.Interval = 0.01; aikalaskuri.Interval = 0.11;
aikalaskuri.Timeout += PaivitaKentta; aikalaskuri.Timeout += PaivitaKentta;
aikalaskuri.Start(); aikalaskuri.Start();
} }
/// <summary>
/// Kun ajastimesta loppuu aika, siirtyy peli tähän funktioon, jonka tarkoituksena on hahmottaa, mitä kaikkea pelissä on tapahtunut ja miten siihen tulee reagoida.
///
/// </summary>
private void PaivitaKentta() private void PaivitaKentta()
{ {
if (Math.Abs(Mato.X)-Math.Abs(Mato.X)<0.001 && Math.Abs(Mato.Y)-Math.Abs(Mato.Y)<0.001) //Tämän on tarkoitus liikuttaa matoa, aina, kun se saapuu tasalukuun.
{ //tavoitteena oli,että mato ei liikkuisi, jos se on ruudun puolivälissä
LiikutaMatoa();
}
MatoSijainti.Add(Mato.Position);
LiikutaMatoa();
if (OmenaKentalla == false) if (OmenaKentalla == false)
{ {
LuoMatoKeho(MatoSijainti[MatoSijainti.Count-MatoKeho.Count-1]);
LuoOmena(); LuoOmena();
//KasvataMatoa();
} }
} }
private void LiikutaMatoa() private void LiikutaMatoa()
{ {
if (SuuntaYlos==true) if (SuuntaYlos==true)
{ {
Mato.Y++; Mato.Y = Mato.Y + leveys;
Mato.Angle = Angle.FromDegrees(90); Mato.Angle = Angle.FromDegrees(90);
} }
if (SuuntaAlas==true) if (SuuntaAlas==true)
{ {
Mato.Y--; Mato.Y= Mato.Y - leveys;
Mato.Angle = Angle.FromDegrees(270); Mato.Angle = Angle.FromDegrees(270);
} }
if (SuuntaOikea==true) if (SuuntaOikea==true)
{ {
Mato.X++; Mato.X= Mato.X + leveys;
Mato.Angle = Angle.FromDegrees(0); Mato.Angle = Angle.FromDegrees(0);
} }
if (SuuntaVasen==true) if (SuuntaVasen==true)
{ {
Mato.X--; Mato.X= Mato.X - leveys;
Mato.Angle = Angle.FromDegrees(180); Mato.Angle = Angle.FromDegrees(180);
} }
} }
private class Objektit : PhysicsObject /// <summary>
/// Tehdään silmukka, joka käy madon kaikki sijainnit ja liikuttaa madon muut osat niiden mukaan.
/// </summary>
public class Objektit : PhysicsObject
{ {
public Objektit(double leveys, double korkeus, Vector paikka) public Objektit(double leveys, double korkeus, Vector paikka)
: base(leveys, korkeus) : base(leveys, korkeus)
......
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