source: 2014/30/EevaS/Zombie attack!/Zombie attack!/Zombie attack!/Zombie_attack_.cs @ 5671

Revision 5671, 5.0 KB checked in by eemalisa, 6 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Zombie_attack_ : PhysicsGame
10{
11    int pelaajanTerveys = 1;
12
13    Image tahtikuva = LoadImage("Tähti");
14    Image zombikuva = LoadImage("Zombi");
15    Image pelaajakuva = LoadImage("Pelaaja");
16    Image ovikuva = LoadImage("Ovi");
17    PhysicsObject pelaaja;
18
19
20    Vector nopeusYlos = new Vector(0, 200);
21    Vector nopeusAlas = new Vector(0, -200);
22    Vector nopeusVasemmalle = new Vector(-200, 0);
23    Vector nopeusOikealle = new Vector(200, 0);
24
25
26    public override void Begin()
27    {
28        LuoKentta();
29        AsetaOhjaimet();
30    }
31
32    void LuoKentta()
33    {
34        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("Kenttä");
35
36        ruudut.SetTileMethod(Color.Harlequin, LuoPelaaja);
37        ruudut.SetTileMethod(Color.Black, LuoTaso);
38        ruudut.SetTileMethod(Color.Gold, LuoTahti);
39        ruudut.SetTileMethod(Color.Red, LuoVihollinen);
40        ruudut.SetTileMethod(Color.Brown, LuoOvi);
41
42        ruudut.Execute(20, 20);
43
44        Camera.ZoomToLevel();
45    }
46
47    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
48    {
49        pelaaja = new PhysicsObject(15, 20);
50        pelaaja.Position = paikka;
51        pelaaja.Image = pelaajakuva;
52        Add(pelaaja);
53
54        AddCollisionHandler(pelaaja, "pahis", PelaajaTuhoutuu);
55        AddCollisionHandler(pelaaja, "tahti", KerasiTahden);
56
57        pelaaja.CanRotate = false;
58        pelaaja.Restitution = 0.0;
59
60        Vector pelaajanSuunta = Vector.FromLengthAndAngle(500.0, pelaaja.Angle);
61        pelaaja.Push(pelaajanSuunta);
62    }
63
64    void LuoVihollinen(Vector paikka, double leveys, double korkeus)
65    {
66        PhysicsObject zombi = new PhysicsObject(15, 20);
67        zombi.Position = paikka;
68        zombi.Tag = "pahis";
69        Add(zombi);
70        zombi.Image = zombikuva;
71        zombi.CanRotate = false;
72
73        LabyrinthWandererBrain LabraAivot = new LabyrinthWandererBrain(20, 20);
74        LabraAivot.Speed = 200;
75        LabraAivot.LabyrinthWallTag = "seina";
76
77        FollowerBrain Aivot = new FollowerBrain(pelaaja);
78        Aivot.Speed = 200;
79        Aivot.DistanceFar = 50;
80        Aivot.StopWhenTargetClose = false;
81        Aivot.FarBrain = LabraAivot;
82
83        zombi.Brain = LabraAivot;
84        LabraAivot.Active = true;
85    }
86
87    void LuoTaso(Vector paikka, double leveys, double korkeus)
88    {
89        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
90        taso.Position = paikka;
91        //taso.Image = groundImage;
92        taso.CollisionIgnoreGroup = 1;   //TODO Hoida kommentti.
93        Add(taso);
94        Level.Background.Color = Color.Black;
95    }
96
97    void LuoTahti(Vector paikka, double leveys, double korkeus)
98    {
99        PhysicsObject tahti = PhysicsObject.CreateStaticObject(20.0, 20.0);
100        tahti.IgnoresCollisionResponse = true;
101        tahti.Position = paikka;
102        tahti.Image = tahtikuva;
103        tahti.Tag = "tahti";
104        Add(tahti, 1);
105    }
106
107    void LuoOvi(Vector paikka, double leveys, double korkeus)
108    {
109        PhysicsObject Ovi = PhysicsObject.CreateStaticObject(30.0, 70.0);
110        Ovi.Position = paikka;
111        Ovi.Image = ovikuva;
112        Add(Ovi);
113    }
114
115    void AsetaOhjaimet()
116    {
117        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
118        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
119
120        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, "Liikuta hahmoa ylös", pelaaja, nopeusYlos);
121        Keyboard.Listen(Key.Up, ButtonState.Released, LiikutaPelaajaa, null, pelaaja, Vector.Zero);
122        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, "Liikuta hahmoa alas", pelaaja, nopeusAlas);
123        Keyboard.Listen(Key.Down, ButtonState.Released, LiikutaPelaajaa, null, pelaaja, Vector.Zero);
124        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, "Liikuta hahmoa vasemmalle", pelaaja, nopeusVasemmalle);
125        Keyboard.Listen(Key.Left, ButtonState.Released, LiikutaPelaajaa, null, pelaaja, Vector.Zero);
126        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, "Liikuta hahmoa oikealle", pelaaja, nopeusOikealle);
127        Keyboard.Listen(Key.Right, ButtonState.Released, LiikutaPelaajaa, null, pelaaja, Vector.Zero);
128    }
129
130    void LiikutaPelaajaa(PhysicsObject pelaaja, Vector suunta)
131    {
132        pelaaja.Velocity = suunta;   //TODO Pelaaja kääntyyy, zombit myös.
133    }
134
135    void PelaajaTuhoutuu(PhysicsObject pelaaja, PhysicsObject zombi)
136    {
137        pelaajanTerveys--;
138
139        if (pelaajanTerveys <= 0)
140            pelaaja.Destroy();
141
142        MessageDisplay.Add("Hävisit!");
143    }
144
145    void KerasiTahden(PhysicsObject pelaaja, PhysicsObject tahti)
146    {
147        tahti.Destroy();
148        MessageDisplay.Add("Keräsit tähden!");
149
150    }
151
152
153}
154
155 
156
Note: See TracBrowser for help on using the repository browser.