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

Lisäsin peliin omenan, joka syntyy uudelleen kenttään, kun se syödään. Päätin...

Lisäsin peliin omenan, joka syntyy uudelleen kenttään, kun se syödään. Päätin lisätä fyysiset seinät takaisin, koska en oikein osannut tehdä kentälle muuten rajoja.
parent 04bdca8b
No related branches found
No related tags found
No related merge requests found
using System;
using System.Collections.Generic;
using System.Security.Cryptography.X509Certificates;
using Jypeli;
......@@ -14,11 +15,36 @@ namespace matopeli;
/// </summary>
public class matopeli : PhysicsGame
{
private static readonly string[] tasonkuva = {
"#################",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"#################",
};
private Objektit Mato;
private Objektit Omena;
public double MatoX;
public double MatoY;
public int LuoOmenaX;
public int LuoOmenaY;
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 matopaakuva = LoadImage("matopaa.png");
......@@ -30,7 +56,8 @@ public class matopeli : PhysicsGame
private bool SuuntaAlas = false;
private bool SuuntaOikea = false;
private bool SuuntaVasen = false;
private bool OmenaKentalla = false;
public override void Begin()
{
// Kirjoita ohjelmakoodisi tähän
......@@ -43,11 +70,16 @@ public class matopeli : PhysicsGame
public void AloitaUusiPeli()
{
Level.CreateBorders(0.0,true,Color.Green);
ClearAll();
SuuntaAlas = true;
LuoMato();
Asetaohjaimet();
LuoAikalaskuri();
TileMap tiles = TileMap.FromStringArray(tasonkuva);
tiles['#'] = LuoSeina;
tiles.Insert(leveys,korkeus);
}
private void Asetaohjaimet()
{
......@@ -56,16 +88,51 @@ public class matopeli : PhysicsGame
Keyboard.Listen(Key.Left, ButtonState.Pressed, VaihdaSuuntaVasen , "Turn left");
Keyboard.Listen(Key.Right, ButtonState.Pressed, VaihdaSuuntaOikea, "Turn right");
}
public PhysicsObject LuoMato()
private PhysicsObject LuoMato()
{
Mato = new Objektit(60, 60, new Vector(0,0));
Mato.Color = Color.Charcoal;
Mato.Position = new Vector(0, 0);
Mato = new Objektit(leveys, korkeus, new Vector(0,0));
Mato.Image = matopaakuva;
Add(Mato);
Mato.Tag = "mato";
AddCollisionHandler(Mato, "omena", delegate(IPhysicsObject Mato, IPhysicsObject Omena) {MatoSyoOmenan(); });
return Mato;
}
private PhysicsObject LuoOmena()
{
Vector paikka = Level.GetRandomPosition();
if (paikka.X-Mato.X<20)
{
if (paikka.Y-Mato.Y<20)
{
paikka = Level.GetRandomPosition();
}
}
Omena = new Objektit(korkeus, leveys, paikka);
Omena.Shape = Shape.Circle;
Omena.Position = paikka;
Omena.Image = omenakuva;
Omena.Tag = "omena";
Add(Omena);
OmenaKentalla = true;
return Omena;
}
private PhysicsObject LuoSeina()
{
PhysicsObject Seina = PhysicsObject.CreateStaticObject(leveys, korkeus);
Seina.Color = Color.Green;
Seina.Image = seinakuva;
Seina.Tag = "seina";
return Seina;
}
private void MatoSyoOmenan()
{
Omena.Destroy();
OmenaKentalla = false;
}
private void VaihdaSuuntaYlos()
{
......@@ -143,28 +210,46 @@ public class matopeli : PhysicsGame
private void LuoAikalaskuri()
{
Timer aikalaskuri = new Timer();
aikalaskuri.Interval = 0.008;
aikalaskuri.Timeout += LiikutaMatoa;
aikalaskuri.Interval = 0.01;
aikalaskuri.Timeout += PaivitaKentta;
aikalaskuri.Start();
}
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();
}
if (OmenaKentalla == false)
{
LuoOmena();
//KasvataMatoa();
}
}
private void LiikutaMatoa()
{
if (SuuntaYlos==true)
{
Mato.Y++;
Mato.Angle = Angle.FromDegrees(90);
}
if (SuuntaAlas==true)
{
Mato.Y--;
Mato.Angle = Angle.FromDegrees(270);
}
if (SuuntaOikea==true)
{
Mato.X++;
Mato.Angle = Angle.FromDegrees(0);
}
if (SuuntaVasen==true)
{
Mato.X--;
Mato.Angle = Angle.FromDegrees(180);
}
......
......@@ -19,8 +19,10 @@ namespace Matopeli
[STAThread]
static void Main()
{
using var game = new Matopeli();
game.Run();
using (var game = new matopeli.matopeli())
{
game.Run();
}
}
}
}
\ 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