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

Revision 2046, 7.3 KB checked in by eejoprit, 8 years ago (diff)

aivot kesken

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   
74    PhysicsObject pelaaja;
75    PhysicsObject pelaaja1;
76    PhysicsObject pelaaja2;
77    PhysicsObject pelaaja3;
78    PhysicsObject pelaaja4;
79    PhysicsObject zombi;
80
81
82    public override void Begin()
83    {
84        // TODO: Kirjoita ohjelmakoodisi tähän
85        luokentta();
86       
87
88        ohjaimet();
89        Camera.Zoom(0.5);
90        Camera.Follow (pelaaja1);
91    }
92
93   
94   
95   
96
97    #region kenttä
98   
99    void luokentta()
100    {
101        Level.BackgroundColor = Color.Gray;
102
103        //kenttä 1
104        TileMap ruudut = TileMap.FromFile("eeron leveli2.txt");
105        ruudut.SetTileMethod('w', luoseinä);
106        ruudut.SetTileMethod('#', luoikkuna);
107        ruudut.SetTileMethod('m', luomustaa);
108        ruudut.SetTileMethod('=', luoraputpysty);
109        ruudut.Execute(64, 64);
110       
111
112        // w = seinä
113        // m = musta, voi mennä läpi
114        // # = ikkuna
115        // = = rappuset
116        // i = rappuset
117        // 1 = pelaaja 1 aloituspaikka
118        // 2 = pelaaja 2 aloituspaikka
119        // 3 = pelaaja 3 aloituspaikka
120        // 4 = pelaaja 4 aloituspaikka
121        // v = voi kulkea vain "alaspäin"
122        // b = sinistä, ei voi mennä läpi
123        // @ = zombien ilmestymispaikka
124
125
126        pelaaja1 = luopelaajat(pelaaja1kuva, 0.0, -1000.0);
127        pelaaja2 = luopelaajat(pelaaja2kuva, 0.0, -1000.0);
128        pelaaja3 = luopelaajat(pelaaja3kuva, 0.0, -1000.0);
129        pelaaja4 = luopelaajat(pelaaja4kuva, 0.0, -1000.0);
130        zombi = luozombit();
131    }
132
133
134    #region kentän oliot
135
136
137    void luoseinä(Vector paikka, double x, double y)
138    {
139        PhysicsObject seina = PhysicsObject.CreateStaticObject(64.0, 64.0);
140        seina.Position = paikka;
141        seina.Image = seinakuva;
142        Add(seina);
143    }
144
145
146    void luoikkuna(Vector paikka, double x, double y)
147    {
148        PhysicsObject ikkuna = PhysicsObject.CreateStaticObject(64.0, 64.0);
149        ikkuna.Position = paikka;
150        ikkuna.Image = ikkunakuva;
151        Add(ikkuna);
152    }
153
154    void luomustaa(Vector paikka, double x, double y)
155    {
156        PhysicsObject musta = PhysicsObject.CreateStaticObject(64.0, 64.0);
157        musta.Position = paikka;
158        musta.Image = mustakuva;
159        musta.IgnoresCollisionResponse = true;
160        Add(musta);
161    }
162
163    void luoraputpysty(Vector paikka, double x, double y)
164    {
165        PhysicsObject raput_y = PhysicsObject.CreateStaticObject(64.0, 64.0);
166        raput_y.Position = paikka;
167        raput_y.Image = pystyraput;
168        raput_y.IgnoresCollisionResponse = true;
169        Add(raput_y);
170    }
171
172    #endregion
173    #endregion
174
175
176
177
178
179    #region peliukot
180    PhysicsObject luopelaajat(Image kuva, double x, double y)
181    {
182        pelaaja = new PhysicsObject (55.0, 55.0);
183        pelaaja.Image = kuva;
184        pelaaja.Color = Level.BackgroundColor;
185        pelaaja.X = x;
186        pelaaja.Y = y;
187        pelaaja.Tag = ("pelaaja");
188        pelaaja.Shape = Shape.Circle;
189        pelaaja.CanRotate = false;
190
191        Add(pelaaja);
192
193        return pelaaja;
194       
195    }
196
197    PhysicsObject luozombit()
198    {
199
200        PhysicsObject zombi = new Zombi(55.0, 55.0);
201        zombi.Image = zombikuva;
202        zombi.Shape = Shape.Circle;
203        Add(zombi);
204        return zombi;
205    }
206
207
208#endregion
209
210
211    #region liikuttelu
212
213    void ohjaimet()
214    {
215        ControllerOne.ListenAnalog(AnalogControl.LeftStick, -1, pelaaja0liike, ("liikutelaan pelaajaa numero 1"), pelaaja1);
216        ControllerOne.ListenAnalog(AnalogControl.RightStick, 0.01, pelaaja0katse, "katsotaan pelaajalla numero 1",pelaaja1);
217        ControllerOne.Listen(Button.Back, ButtonState.Down, Exit, ("poistu pelistä"));
218
219        ControllerTwo.ListenAnalog(AnalogControl.LeftStick, -1, pelaaja0liike, ("liikutelaan pelaajaa numero 2"), pelaaja2);
220        ControllerTwo.ListenAnalog(AnalogControl.RightStick, 0.01, pelaaja0katse, "katsotaan pelaajalla numero 2", pelaaja2);
221        ControllerTwo.Listen(Button.Back, ButtonState.Down, Exit, ("poistu pelistä"));
222
223        ControllerThree.ListenAnalog(AnalogControl.LeftStick, -1, pelaaja0liike, ("liikutelaan pelaajaa numero 3"), pelaaja3);
224        ControllerThree.ListenAnalog(AnalogControl.RightStick, 0.01, pelaaja0katse, "katsotaan pelaajalla numero 3", pelaaja3);
225        ControllerThree.Listen(Button.Back, ButtonState.Down, Exit, ("poistu pelistä"));
226
227        ControllerFour.ListenAnalog(AnalogControl.LeftStick, -1, pelaaja0liike, ("liikutelaan pelaajaa numero 4"), pelaaja4);
228        ControllerFour.ListenAnalog(AnalogControl.RightStick, 0.01, pelaaja0katse, "katsotaan pelaajalla numero 4", pelaaja4);
229        ControllerFour.Listen(Button.Back, ButtonState.Down, Exit, ("poistu pelistä"));
230    }
231   
232   
233    void pelaaja0liike(AnalogState vasen_tatintila, PhysicsObject pelaaja0)
234    {
235        if (vasen_tatintila.StateVector.Magnitude < 0.1)
236        {
237            pelaaja0.Stop();
238        }
239        else
240        {
241            Vector tatinasento = vasen_tatintila.StateVector;
242            Vector pelaaja1nopeus = nopeus * tatinasento;
243            pelaaja0.Velocity = pelaaja1nopeus;
244        }
245
246
247    }
248
249    void pelaaja0katse(AnalogState oikea_tatintila, PhysicsObject pelaaja0)
250    { 
251        Vector tatin2asento = oikea_tatintila.StateVector;
252        Vector pelaaja1katse = katse * tatin2asento ;
253        pelaaja0.Angle = pelaaja1katse.Angle - Angle.RightAngle;
254    }
255    #endregion
256
257}
Note: See TracBrowser for help on using the repository browser.