Skip to content
Snippets Groups Projects
Commit 2d8555f3 authored by Pekka Pihlajamaa's avatar Pekka Pihlajamaa
Browse files

Vahan siistimista

parent 6aec2e5c
No related branches found
No related tags found
No related merge requests found
...@@ -8,13 +8,30 @@ using System.Threading; ...@@ -8,13 +8,30 @@ using System.Threading;
namespace Hiko namespace Hiko
{ {
public class Hiko : PhysicsGame /// <summary>
/// Tehdään vihuluokka helpottamaan hitpointtien laskussa
/// </summary>
class Vihu : PlatformCharacter
{
private IntMeter elamalaskuri = new IntMeter(3, 0, 3);
public IntMeter Elamalaskuri { get { return elamalaskuri; } }
public Vihu(double leveys, double korkeus)
:base(leveys, korkeus)
{
elamalaskuri.LowerLimit += delegate { this.Destroy(); };
}
}
public class Hiko : PhysicsGame
{ {
PhysicsObject pelaaja; PhysicsObject pelaaja;
GameObject tahtain; GameObject tahtain;
Image taustakuva = LoadImage("Testitaustakuva"); Image taustakuva = LoadImage("Testitaustakuva");
/// <summary>
/// Luodaan peliin kenttä
/// </summary>
private static readonly String[] lines = private static readonly String[] lines =
{ {
" ", " ",
...@@ -24,7 +41,15 @@ namespace Hiko ...@@ -24,7 +41,15 @@ namespace Hiko
" ", " ",
" ", " ",
" ", " ",
" X ",
" ___ ",
" X ",
" _____ ",
" X ",
" ____ ",
" ", " ",
" X ",
" __________ ",
" ", " ",
" ", " ",
" ", " ",
...@@ -32,14 +57,6 @@ namespace Hiko ...@@ -32,14 +57,6 @@ namespace Hiko
" ", " ",
" ", " ",
" ", " ",
" ",
" ",
" X X ",
" X X X ",
" X X X ",
" X X X ",
" X X X ",
" X X X ",
}; };
private static readonly int tileWidth = 800 / lines[0].Length; private static readonly int tileWidth = 800 / lines[0].Length;
private static readonly int tileHeight = 480 / lines.Length; private static readonly int tileHeight = 480 / lines.Length;
...@@ -57,9 +74,17 @@ namespace Hiko ...@@ -57,9 +74,17 @@ namespace Hiko
Gravity = new Vector(0.0, -981.0); Gravity = new Vector(0.0, -981.0);
LuoOhjaimet(); LuoOhjaimet();
LuoTahtain(); LuoTahtain();
LuoAikalaskuri();
tiles.SetTileMethod('X',LuoMaavihu); tiles.SetTileMethod('X',LuoMaavihu);
tiles.SetTileMethod('_',LuoTaso);
tiles.Execute(tileWidth, tileHeight); tiles.Execute(tileWidth, tileHeight);
} }
/// <summary>
/// Luo pelaajamodellin ja antaa sille ominaisuudet
/// </summary>
/// <returns></returns>
PhysicsObject LuoPelaaja() PhysicsObject LuoPelaaja()
{ {
pelaaja = new PhysicsObject(20, 40); pelaaja = new PhysicsObject(20, 40);
...@@ -71,18 +96,34 @@ namespace Hiko ...@@ -71,18 +96,34 @@ namespace Hiko
Add(pelaaja); Add(pelaaja);
return pelaaja; return pelaaja;
} }
/// <summary>
/// Luo vihollisolion
/// </summary>
/// <param name="paikka"></param>
/// <param name="leveys"></param>
/// <param name="korkeus"></param>
void LuoMaavihu(Vector paikka, double leveys, double korkeus) void LuoMaavihu(Vector paikka, double leveys, double korkeus)
{ {
PlatformCharacter maavihu = new PlatformCharacter(leveys, korkeus); //PlatformCharacter maavihu = new PlatformCharacter(leveys, korkeus);
Vihu maavihu = new Vihu(leveys, korkeus);
maavihu.Shape = Shape.Circle; maavihu.Shape = Shape.Circle;
maavihu.Color = Color.Blue; maavihu.Color = Color.Blue;
maavihu.Position = paikka; maavihu.Position = paikka;
maavihu.Tag = "maavihu";
PlatformWandererBrain tasoaivot = new PlatformWandererBrain(); PlatformWandererBrain tasoaivot = new PlatformWandererBrain();
tasoaivot.Speed = 100; tasoaivot.Speed = 100;
maavihu.Brain = tasoaivot; maavihu.Brain = tasoaivot;
maavihu.Image = LoadImage("örkki"); maavihu.Image = LoadImage("örkki");
Add(maavihu); Add(maavihu);
} }
/// <summary>
/// Luo näkyvän indikaattorin tähtäimestä
/// </summary>
/// <returns></returns>
GameObject LuoTahtain() GameObject LuoTahtain()
{ {
tahtain = new GameObject(30.0, 30.0, Shape.Circle); tahtain = new GameObject(30.0, 30.0, Shape.Circle);
...@@ -90,6 +131,11 @@ namespace Hiko ...@@ -90,6 +131,11 @@ namespace Hiko
Add(tahtain); Add(tahtain);
return tahtain; return tahtain;
} }
/// <summary>
/// Luo tarvittavat ohjaimet pelaajalle
/// </summary>
public void LuoOhjaimet() public void LuoOhjaimet()
{ {
Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-1000, 0)); Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-1000, 0));
...@@ -105,16 +151,32 @@ namespace Hiko ...@@ -105,16 +151,32 @@ namespace Hiko
Mouse.Listen(MouseButton.Left, ButtonState.Pressed, Ammu, null); Mouse.Listen(MouseButton.Left, ButtonState.Pressed, Ammu, null);
} }
/// <summary>
/// Tämä aliohjelma liikuttaa pelaajaa tiettyyn suuntaan
/// </summary>
/// <param name="vektori">Minne suuntaan sitä liikutetaan</param>
void LiikutaPelaajaa(Vector vektori) void LiikutaPelaajaa(Vector vektori)
{ {
pelaaja.Push(vektori); pelaaja.Push(vektori);
} }
/// <summary>
/// Tässä kerrotaan missä tähtäin on ruudulla
/// </summary>
void KuunteleLiiketta() void KuunteleLiiketta()
{ {
tahtain.X = Mouse.PositionOnWorld.X; tahtain.X = Mouse.PositionOnWorld.X;
tahtain.Y = Mouse.PositionOnWorld.Y; tahtain.Y = Mouse.PositionOnWorld.Y;
} }
/// <summary>
/// Tämä luo projektiilin jolla voi tuhota vihuja
/// </summary>
void Ammu() void Ammu()
{ {
PhysicsObject luoti = new PhysicsObject(20, 20); PhysicsObject luoti = new PhysicsObject(20, 20);
...@@ -130,12 +192,70 @@ namespace Hiko ...@@ -130,12 +192,70 @@ namespace Hiko
Add(luoti); Add(luoti);
//luoti.Hit(new Vector(pelaaja.RelativePosition.X - Mouse.PositionOnScreen.X, pelaaja.RelativePosition.Y - Mouse.PositionOnScreen.Y)); //luoti.Hit(new Vector(pelaaja.RelativePosition.X - Mouse.PositionOnScreen.X, pelaaja.RelativePosition.Y - Mouse.PositionOnScreen.Y));
Vector suunta = new Vector((pelaaja.RelativePosition.X - Mouse.PositionOnScreen.X) * -1, (pelaaja.RelativePosition.Y - Mouse.PositionOnScreen.Y) * -1); Vector suunta = AnnaLuodinSuunta(pelaaja);
Angle a = suunta.Angle; Angle a = suunta.Angle;
luoti.Hit(Vector.FromLengthAndAngle(200, a)); luoti.Hit(Vector.FromLengthAndAngle(200, a));
AddCollisionHandler<PhysicsObject, Vihu>(luoti, LuotiOsuuVihuun);
}
/// <summary>
/// Tässä funktio palauttaa luodin suunnan
/// </summary>
/// <param name="pelaaja">tarvittava positio mistä se ammutaan</param>
/// <returns></returns>
public Vector AnnaLuodinSuunta(PhysicsObject pelaaja)
{
return new Vector((pelaaja.RelativePosition.X - Mouse.PositionOnScreen.X) * -1, (pelaaja.RelativePosition.Y - Mouse.PositionOnScreen.Y) * -1);
}
/// <summary>
/// Tässä kerrotaan mitä tapahtuu kun luoti osuu pelaajaan
/// </summary>
/// <param name="luoti">projektiili joka osuu</param>
/// <param name="vihu">mihin osuu</param>
private void LuotiOsuuVihuun(PhysicsObject luoti, Vihu vihu)
{
MessageDisplay.Add("luoti osui vihuun");
vihu.Elamalaskuri.Value--;
}
/// <summary>
/// Tämä aliohjelma luo tasanteita kenttään
/// </summary>
/// <param name="paikka">tason paikka koordinaatistossa</param>
/// <param name="leveys">tason leveys</param>
/// <param name="pituus">tason korkeus</param>
void LuoTaso(Vector paikka, double leveys, double pituus)
{
Surface taso = new Surface(leveys, pituus);
taso.Position = paikka;
taso.Color = Color.Orange;
Add(taso);
}
/// <summary>
/// Tässä on aikalaskuri peliin
/// </summary>
void LuoAikalaskuri()
{
Jypeli.Timer aikalaskuri = new Jypeli.Timer();
aikalaskuri.Start();
Label aikanaytto = new Label();
aikanaytto.TextColor = Color.Orange;
aikanaytto.DecimalPlaces = 1;
aikanaytto.BindTo(aikalaskuri.SecondCounter);
aikanaytto.Position = new Vector(0, 300);
Add(aikanaytto);
} }
} }
} }
\ 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