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;
public class matopeli : PhysicsGame
{
private static readonly string[] tasonkuva = {
"#################",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"#################",
"#####################",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"#####################",
};
private Objektit Mato;
private Objektit Omena;
private Objektit MatoMuu;
public double MatoX;
public double MatoY;
public List<Vector> MatoSijainti = new List<Vector>();
public List<PhysicsObject> MatoKeho = new List<PhysicsObject>();
public int LuoOmenaX;
public int LuoOmenaY;
public int SuuntaX;
public int SuuntaY;
public int leveys = 60;
public int korkeus = 60;
public int leveys = 40;
public int korkeus = 40;
private static readonly Image seinakuva = LoadImage("seina.png");
private static readonly Image matopaakuva = LoadImage("matopaa.png");
......@@ -57,7 +56,7 @@ public class matopeli : PhysicsGame
private bool SuuntaOikea = false;
private bool SuuntaVasen = false;
private bool OmenaKentalla = false;
private bool OmenaKentalla = true;
public override void Begin()
{
// Kirjoita ohjelmakoodisi tähän
......@@ -76,6 +75,7 @@ public class matopeli : PhysicsGame
LuoMato();
Asetaohjaimet();
LuoAikalaskuri();
LuoOmena();
TileMap tiles = TileMap.FromStringArray(tasonkuva);
tiles['#'] = LuoSeina;
......@@ -98,12 +98,43 @@ public class matopeli : PhysicsGame
return Mato;
}
/// <summary>
/// Luodaan omena johonkin satunnaiseen kohtaan kartalla, joka ei ole samassa kohtaa madon kanssa.
/// </summary>
/// <returns></returns>
private PhysicsObject LuoOmena()
{
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();
}
......@@ -127,6 +158,20 @@ public class matopeli : PhysicsGame
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()
{
Omena.Destroy();
......@@ -210,52 +255,67 @@ public class matopeli : PhysicsGame
private void LuoAikalaskuri()
{
Timer aikalaskuri = new Timer();
aikalaskuri.Interval = 0.01;
aikalaskuri.Interval = 0.11;
aikalaskuri.Timeout += PaivitaKentta;
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()
{
if (Math.Abs(Mato.X)-Math.Abs(Mato.X)<0.001 && Math.Abs(Mato.Y)-Math.Abs(Mato.Y)<0.001)
{
LiikutaMatoa();
}
//Tämän on tarkoitus liikuttaa matoa, aina, kun se saapuu tasalukuun.
//tavoitteena oli,että mato ei liikkuisi, jos se on ruudun puolivälissä
MatoSijainti.Add(Mato.Position);
LiikutaMatoa();
if (OmenaKentalla == false)
{
LuoMatoKeho(MatoSijainti[MatoSijainti.Count-MatoKeho.Count-1]);
LuoOmena();
//KasvataMatoa();
}
}
private void LiikutaMatoa()
{
if (SuuntaYlos==true)
{
Mato.Y++;
Mato.Y = Mato.Y + leveys;
Mato.Angle = Angle.FromDegrees(90);
}
if (SuuntaAlas==true)
{
Mato.Y--;
Mato.Y= Mato.Y - leveys;
Mato.Angle = Angle.FromDegrees(270);
}
if (SuuntaOikea==true)
{
Mato.X++;
Mato.X= Mato.X + leveys;
Mato.Angle = Angle.FromDegrees(0);
}
if (SuuntaVasen==true)
{
Mato.X--;
Mato.X= Mato.X - leveys;
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)
: 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