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

Sain muutettua omenien lisäämisen sellaiseksi, että nyt omenatkin lisätään...

Sain muutettua omenien lisäämisen sellaiseksi, että nyt omenatkin lisätään vain tasariveille, kun ennen omena saattoi syntyä puoleenväliin ruutuja. Yritin myös hieman kehittää omenoiden arpomismekaniikkaa, mutta en ole varma toimiiko se kunnolla, nyt peli alkaa olemaan muuten valmis, paitsi aion vielä lisätä dokumentointia ja koittaa poistaa riderin antamia keltaisia ilmoituksia
parent 32720de8
No related branches found
No related tags found
No related merge requests found
......@@ -23,7 +23,7 @@ public class matopeli : PhysicsGame
"# #",
"# #",
"# #",
"# o #",
"# m #",
"# #",
"# #",
"# #",
......@@ -33,7 +33,7 @@ public class matopeli : PhysicsGame
"# #",
"# #",
"# #",
"# #",
"#o #",
"#####################",
};
private Objektit Mato;
......@@ -41,6 +41,7 @@ public class matopeli : PhysicsGame
private Objektit MatoMuu;
public IntMeter pistelaskuri;
public IntMeter Ennatyslaskuri;
public List<Vector> MatoSijainti = new List<Vector>();
public List<PhysicsObject> MatoKeho = new List<PhysicsObject>();
......@@ -48,6 +49,8 @@ public class matopeli : PhysicsGame
public int leveys;
public int korkeus;
public double Nopeus;
private Vector OmenaAlkuPaikka;
private static readonly Image seinakuva = LoadImage("seina.png");
private static readonly Image matopaakuva = LoadImage("matopaa.png");
......@@ -61,8 +64,6 @@ public class matopeli : PhysicsGame
private bool MatoLiikkunut;
private bool GameOver;
private bool OmenaKentalla;
public override void Begin()
{
......@@ -77,11 +78,13 @@ public class matopeli : PhysicsGame
Asetukset();
TileMap tiles = TileMap.FromStringArray(tasonkuva);
tiles['#'] = LuoSeina;
tiles['o'] = LuoMato;
tiles['m'] = LuoMato;
tiles.Insert(leveys,korkeus); ;
OmenaAlkuPaikka = Mato.Position;
Asetaohjaimet();
LuoAikalaskuri();
LuoPistelaskuri();
//LuoEnnatyslaskuri();
LuoOmena();
}
......@@ -91,35 +94,50 @@ public class matopeli : PhysicsGame
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");
Keyboard.Listen(Key.Enter, ButtonState.Pressed, Begin, "New Game");
Keyboard.Listen(Key.Enter, ButtonState.Pressed, LiikutaMatoa, "New Game");
}
void LuoPistelaskuri()
{
pistelaskuri = new IntMeter(0);
Label pistenaytto = new Label();
pistenaytto.X = Screen.Left + 500;
pistenaytto.Y = Screen.Top - 10;
pistenaytto.TextColor = Color.Black;
pistenaytto.Color = Color.White;
pistenaytto.Title = "Pisteet: ";
pistenaytto.BindTo(pistelaskuri);
Add(pistenaytto);
}
void LuoEnnatyslaskuri()
{
Ennatyslaskuri = new IntMeter(0);
Label Ennatys = new Label();
Ennatys.X = Screen.Left + 700;
Ennatys.Y = Screen.Top - 10;
Ennatys.TextColor = Color.Black;
Ennatys.Color = Color.White;
Ennatys.Title = "Ennätys:";
Ennatys.BindTo(Ennatyslaskuri);
Add(Ennatys);
}
private void Asetukset()
{
leveys = 40;
korkeus = 40;
SuuntaYlos = false;
SuuntaAlas = true;
SuuntaOikea = false;
SuuntaAlas = false;
SuuntaOikea = true;
SuuntaVasen = false;
Nopeus = 0.1;
MatoLiikkunut = true;
GameOver= false;
MatoLiikkunut = false;
OmenaKentalla = true;
}
......@@ -147,39 +165,7 @@ public class matopeli : PhysicsGame
/// <returns></returns>
private PhysicsObject LuoOmena()
{
int x = 0;
int y = 0;
///Tarkistetaan ensin, ettei omena mene madon kehon kanssa päällekkäin
for (int i = 0; i < MatoKeho.Count - 1; i++)
{
x = RandomGen.NextInt(-320, 320);
y = RandomGen.NextInt(-320, 320);
if (x - MatoKeho[i].X < 4)
{
if (y - MatoKeho[i].Y < 4)
{
x = RandomGen.NextInt(-320, 320);
y = RandomGen.NextInt(-320, 320);
}
}
}
if (x-Mato.X<4)
{
if (y - Mato.Y < 4)
{
x = RandomGen.NextInt(-300, 300);
y = RandomGen.NextInt(-300, 300);
}
}
Vector paikka = new Vector(x, y);
Vector paikka = ArvoOmenaPaikka();
Omena = new Objektit(korkeus-10, leveys-10);
Omena.Shape = Shape.Circle;
Omena.Position = paikka;
......@@ -189,6 +175,49 @@ public class matopeli : PhysicsGame
OmenaKentalla = true;
return Omena;
}
private Vector ArvoOmenaPaikka()
{
Vector OmenaPaikka;
double x = RandomGen.NextInt(-8, 8);
x = OmenaAlkuPaikka.X + x * leveys;
double y = RandomGen.NextInt(-10, 5);
y = OmenaAlkuPaikka.Y + y * leveys;
x = RandomGen.NextInt(-8, 8);
x = OmenaAlkuPaikka.X + x * leveys;
y = RandomGen.NextInt(-10, 5);
y = OmenaAlkuPaikka.Y + y * leveys;
for (int i = 0; i < 100; i++)
{
y = RandomGen.NextInt(-10, 5);
y = OmenaAlkuPaikka.Y + y * leveys;
if (x-Mato.X<leveys)
{
if (y-Mato.Y<leveys)
{
if (MatoKeho.Count>0)
{
if (x-MatoMuu.X<leveys)
{
if (y-MatoMuu.Y<leveys)
{
break;
}
}
}
else break;
}
}
}
OmenaPaikka = new Vector(x, y);
return OmenaPaikka;
}
private PhysicsObject LuoSeina()
{
PhysicsObject Seina = new PhysicsObject(leveys, korkeus);
......@@ -211,9 +240,6 @@ public class matopeli : PhysicsGame
MatoMuu.Position = Paikka;
Add(MatoMuu);
MatoKeho.Add(MatoMuu);
return MatoMuu;
}
......@@ -302,27 +328,15 @@ public class matopeli : PhysicsGame
{
Timer aikalaskuri = new Timer();
aikalaskuri.Interval=Nopeus;
if (GameOver == false)
{
aikalaskuri.Start();
aikalaskuri.Timeout += PaivitaKentta;
}
aikalaskuri.Start();
aikalaskuri.Timeout += PaivitaKentta;
}
/// <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.
///
/// GameOver tarkistaa, että onko mato kuollut
/// </summary>
private void PaivitaKentta()
{
if (GameOver == true)
{
PaataPeli();
}
if (MatoLiikkunut == false)
{
return;
......@@ -334,21 +348,12 @@ public class matopeli : PhysicsGame
LuoOmena();
}
if (GameOver == false)
{
MatoSijainti.Add(new Vector(Mato.X,Mato.Y));
LiikutaMatoa();
LiikutaKehoa();
MatoSijainti.Add(new Vector(Mato.X,Mato.Y));
}
}
/// <summary>
/// tehdään ohjelma, joka päättää pelin.
/// </summary>
private void PaataPeli()
{
MatoSijainti.Add(new Vector(Mato.X,Mato.Y));
LiikutaMatoa();
LiikutaKehoa();
MatoSijainti.Add(new Vector(Mato.X,Mato.Y));
}
private void LiikutaMatoa()
......
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