source: 2011/24/EeroP/ZOMBIE RUNNER/ZOMBIE RUNNER/ZOMBIE RUNNER/Peli.cs @ 2058

Revision 2058, 7.8 KB checked in by eejoprit, 8 years ago (diff)

päivitä jypeli

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9class Zombi : PhysicsObject
10{
11    public Timer liikeajastin = new Timer();
12    Vector vanhapaikka = Vector.Zero;
13    TagFollowerBrain seuraaja_aivot = new TagFollowerBrain("pelaaja", 120);
14
15    RandomMoverBrain pakoaivot = new RandomMoverBrain(120)
16        {
17            ChangeMovementSeconds = 1
18           
19        };
20
21    public Zombi(double leveys, double korkeus)
22        : base(leveys, korkeus)
23    {
24        liikeajastin.Interval = 0.3;
25       
26        liikeajastin.Trigger += new Timer.TriggerHandler(liikeajastin_Trigger);
27        liikeajastin.Start();
28        Brain = seuraaja_aivot;
29    }
30
31    void liikeajastin_Trigger(Timer sender)
32    {
33        Vector paikkojenetaisyys = vanhapaikka - Position;
34
35        if (paikkojenetaisyys.Magnitude == 0.0)
36        {
37            Timer.SingleShot(0.5, palauta_aivot);
38
39            if (Brain != pakoaivot)
40                Brain = pakoaivot;
41        }
42        else
43        {
44            if (Brain != seuraaja_aivot)
45                Brain = seuraaja_aivot;
46        }
47        vanhapaikka = Position;
48    }
49
50    void palauta_aivot()
51    {
52        Brain = seuraaja_aivot;
53    }
54}
55
56public class Peli : PhysicsGame
57{
58    Double nopeus = 200;
59    Double katse = 100;
60   
61    Image seinakuva = LoadImage("seinä");
62    Image ikkunakuva = LoadImage("ikkuna");
63    Image mustakuva = LoadImage("mustakuva");
64    Image vaakaraput = LoadImage("rappuset_vaaka");
65    Image pystyraput = LoadImage("rappuset_pysty");
66
67    Image pelaaja1kuva = LoadImage("vihreäukko");
68    Image pelaaja2kuva = LoadImage("punainenukko");
69    Image pelaaja3kuva = LoadImage("sininenukko");
70    Image pelaaja4kuva = LoadImage("keltainenukko");
71    Image zombikuva = LoadImage("zombi");
72
73    GameObject kamerapiste;
74   
75    PhysicsObject pelaaja;
76    PhysicsObject pelaaja1;
77    PhysicsObject pelaaja2;
78    PhysicsObject pelaaja3;
79    PhysicsObject pelaaja4;
80    PhysicsObject zombi;
81
82
83    public override void Begin()
84    {
85        // TODO: Kirjoita ohjelmakoodisi tähän
86        luokentta();
87       
88
89        ohjaimet();
90        Camera.Zoom(0.5);
91       
92        kamerapiste = new GameObject(1.0, 1.0);
93        Camera.Follow(kamerapiste);
94        kamerapiste.X = (pelaaja1.X + pelaaja2.X + pelaaja3.X + pelaaja4.X) / 4;
95        kamerapiste.Y = (pelaaja1.Y + pelaaja2.Y + pelaaja3.Y + pelaaja4.Y) / 4;
96        kamerapiste.Shape = Shape.Circle;
97    }
98
99    protected override void Update(Time time)
100    {
101        kamerapiste.X = (pelaaja1.X + pelaaja2.X + pelaaja3.X + pelaaja4.X) / 4;
102        kamerapiste.Y = (pelaaja1.Y + pelaaja2.Y + pelaaja3.Y + pelaaja4.Y) / 4;
103
104       
105
106        base.Update(time);
107    }
108   
109   
110
111    #region kenttä
112   
113    void luokentta()
114    {
115        Level.BackgroundColor = Color.Gray;
116
117        //kenttä 1
118        TileMap ruudut = TileMap.FromFile("eeron leveli2.txt");
119        ruudut.SetTileMethod('w', luoseinä);
120        ruudut.SetTileMethod('#', luoikkuna);
121        ruudut.SetTileMethod('m', luomustaa);
122        ruudut.SetTileMethod('=', luoraputpysty);
123        ruudut.Execute(64, 64);
124       
125
126        // w = seinä
127        // m = musta, voi mennä läpi
128        // # = ikkuna
129        // = = rappuset
130        // i = rappuset
131        // 1 = pelaaja 1 aloituspaikka
132        // 2 = pelaaja 2 aloituspaikka
133        // 3 = pelaaja 3 aloituspaikka
134        // 4 = pelaaja 4 aloituspaikka
135        // v = voi kulkea vain "alaspäin"
136        // b = sinistä, ei voi mennä läpi
137        // @ = zombien ilmestymispaikka
138
139
140        pelaaja1 = luopelaajat(pelaaja1kuva, 0.0, -1000.0);
141        pelaaja2 = luopelaajat(pelaaja2kuva, 0.0, -1000.0);
142        pelaaja3 = luopelaajat(pelaaja3kuva, 0.0, -1000.0);
143        pelaaja4 = luopelaajat(pelaaja4kuva, 0.0, -1000.0);
144        zombi = luozombit();
145    }
146
147
148    #region kentän oliot
149
150
151    void luoseinä(Vector paikka, double x, double y)
152    {
153        PhysicsObject seina = PhysicsObject.CreateStaticObject(64.0, 64.0);
154        seina.Position = paikka;
155        seina.Image = seinakuva;
156        Add(seina);
157    }
158
159
160    void luoikkuna(Vector paikka, double x, double y)
161    {
162        PhysicsObject ikkuna = PhysicsObject.CreateStaticObject(64.0, 64.0);
163        ikkuna.Position = paikka;
164        ikkuna.Image = ikkunakuva;
165        Add(ikkuna);
166    }
167
168    void luomustaa(Vector paikka, double x, double y)
169    {
170        PhysicsObject musta = PhysicsObject.CreateStaticObject(64.0, 64.0);
171        musta.Position = paikka;
172        musta.Image = mustakuva;
173        musta.IgnoresCollisionResponse = true;
174        Add(musta);
175    }
176
177    void luoraputpysty(Vector paikka, double x, double y)
178    {
179        PhysicsObject raput_y = PhysicsObject.CreateStaticObject(64.0, 64.0);
180        raput_y.Position = paikka;
181        raput_y.Image = pystyraput;
182        raput_y.IgnoresCollisionResponse = true;
183        Add(raput_y);
184    }
185
186    #endregion
187    #endregion
188
189
190
191
192
193    #region peliukot
194    PhysicsObject luopelaajat(Image kuva, double x, double y)
195    {
196        pelaaja = new PhysicsObject (55.0, 55.0);
197        pelaaja.Image = kuva;
198        pelaaja.Color = Level.BackgroundColor;
199        pelaaja.X = x;
200        pelaaja.Y = y;
201        pelaaja.Tag = ("pelaaja");
202        pelaaja.Shape = Shape.Circle;
203        pelaaja.CanRotate = false;
204
205        Add(pelaaja);
206
207        return pelaaja;
208       
209    }
210
211    PhysicsObject luozombit()
212    {
213
214        PhysicsObject zombi = new Zombi(55.0, 55.0);
215        zombi.Image = zombikuva;
216        zombi.Shape = Shape.Circle;
217        Add(zombi);
218        return zombi;
219    }
220
221
222#endregion
223
224
225    #region liikuttelu
226
227    void ohjaimet()
228    {
229        ControllerOne.ListenAnalog(AnalogControl.LeftStick, -1, pelaaja0liike, ("liikutelaan pelaajaa numero 1"), pelaaja1);
230        ControllerOne.ListenAnalog(AnalogControl.RightStick, 0.01, pelaaja0katse, "katsotaan pelaajalla numero 1",pelaaja1);
231        ControllerOne.Listen(Button.Back, ButtonState.Down, Exit, ("poistu pelistä"));
232
233        ControllerTwo.ListenAnalog(AnalogControl.LeftStick, -1, pelaaja0liike, ("liikutelaan pelaajaa numero 2"), pelaaja2);
234        ControllerTwo.ListenAnalog(AnalogControl.RightStick, 0.01, pelaaja0katse, "katsotaan pelaajalla numero 2", pelaaja2);
235        ControllerTwo.Listen(Button.Back, ButtonState.Down, Exit, ("poistu pelistä"));
236
237        ControllerThree.ListenAnalog(AnalogControl.LeftStick, -1, pelaaja0liike, ("liikutelaan pelaajaa numero 3"), pelaaja3);
238        ControllerThree.ListenAnalog(AnalogControl.RightStick, 0.01, pelaaja0katse, "katsotaan pelaajalla numero 3", pelaaja3);
239        ControllerThree.Listen(Button.Back, ButtonState.Down, Exit, ("poistu pelistä"));
240
241        ControllerFour.ListenAnalog(AnalogControl.LeftStick, -1, pelaaja0liike, ("liikutelaan pelaajaa numero 4"), pelaaja4);
242        ControllerFour.ListenAnalog(AnalogControl.RightStick, 0.01, pelaaja0katse, "katsotaan pelaajalla numero 4", pelaaja4);
243        ControllerFour.Listen(Button.Back, ButtonState.Down, Exit, ("poistu pelistä"));
244    }
245   
246   
247    void pelaaja0liike(AnalogState vasen_tatintila, PhysicsObject pelaaja0)
248    {
249        if (vasen_tatintila.StateVector.Magnitude < 0.1)
250        {
251            pelaaja0.Stop();
252        }
253        else
254        {
255            Vector tatinasento = vasen_tatintila.StateVector;
256            Vector pelaaja1nopeus = nopeus * tatinasento;
257            pelaaja0.Velocity = pelaaja1nopeus;
258        }
259
260
261    }
262
263    void pelaaja0katse(AnalogState oikea_tatintila, PhysicsObject pelaaja0)
264    { 
265        Vector tatin2asento = oikea_tatintila.StateVector;
266        Vector pelaaja1katse = katse * tatin2asento ;
267        pelaaja0.Angle = pelaaja1katse.Angle - Angle.RightAngle;
268    }
269    #endregion
270
271}
Note: See TracBrowser for help on using the repository browser.