source: 2013/26/SakuK/SPY/SPY/SPY/SPY.cs @ 4258

Revision 4258, 8.1 KB checked in by sakivima, 6 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class SPY : PhysicsGame
10{
11    DoubleMeter elamaLaskuri;
12    Image pelaajanKuva = LoadImage("hahmopaahenkilo");
13    Image tahtiKuva = LoadImage("tahti");
14    Image morkoKuva = LoadImage("morko");
15    PlatformCharacter pelaaja;
16    int kenttaNro = 1;
17    //AssaultRifle pelaajanAse;
18
19
20
21    public override void Begin()
22    {
23           
24       
25
26       
27       
28        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
29"Aloita peli", "Parhaat pisteet", "Lopeta");
30        Add(alkuValikko);
31        alkuValikko.AddItemHandler(0, AloitaPeli);
32        alkuValikko.AddItemHandler(1, ParhaatPisteet);
33        alkuValikko.AddItemHandler(2, Exit);
34        alkuValikko.DefaultCancel = 3;
35        alkuValikko.DefaultCancel = -1;
36        alkuValikko.Color = Color.Red;
37
38     
39
40    }
41
42    void AloitaPeli()
43    {
44        Gravity = new Vector(0, -160);
45
46       
47        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
48        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
49
50        ControllerOne.Vibrate(0.5, 0.5, 0.0, 0.0, 0.1);
51        LuoKentta("kenta"+kenttaNro);
52       
53    }
54
55
56    void LuoKentta(string kentanNimi)
57    {
58        ColorTileMap ruudut = ColorTileMap.FromLevelAsset(kentanNimi);
59        ruudut.SetTileMethod("00FF00", LuoPelaaja);
60        ruudut.SetTileMethod(Color.Black, LuoTaso);
61        ruudut.SetTileMethod("FFE607", LuoTahti);
62        ruudut.SetTileMethod(Color.Red, LuoLaava);
63        ruudut.SetTileMethod("00FFF6", LuoMaali);
64        ruudut.SetTileMethod("FA00FF", LuoZombi);
65        ruudut.Execute(20, 20);
66
67       
68        //Keyboard.Listen(Key.Up, ButtonState.Down,
69        //  LiikutaPelaajaa, null, new Vector(0, 100));
70        //Keyboard.Listen(Key.Down, ButtonState.Down,
71        //  LiikutaPelaajaa, null, new Vector(0, -100));
72        LuoElamaLaskuri();
73        Camera.Follow(pelaaja);
74        //Camera.ZoomFactor = 1.7;
75        Camera.ZoomToLevel();
76        AsetaOhjaimet();
77
78       
79 }
80
81    void AsetaOhjaimet()
82    {
83        Keyboard.Listen(Key.Left, ButtonState.Down,
84       LiikutaPelaajaa, null, -100.0);
85        Keyboard.Listen(Key.Right, ButtonState.Down,
86          LiikutaPelaajaa, null, 100.0);
87        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Hyppää", 500.0);
88        ControllerOne.Listen(Button.X, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
89        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1,
90        LiikutaPelaajaa, "Liikuta pelaajaa tattia pyörittämällä.");
91        Keyboard.Listen(Key.Space, ButtonState.Released, Hyppaa, "Hyppää", 150.0);
92
93        ControllerOne.Listen(Button.RightTrigger, ButtonState.Down, AmmuAseella, "ammu", pelaaja.Weapon);
94    }
95
96    void LuoZombi(Vector paikka, double leveys, double korkeus)
97    {
98        PlatformCharacter morko = new PlatformCharacter(20.0, 20.0);
99        morko.Image = morkoKuva;
100        morko.Position = paikka;
101        morko.Tag = "vihollinen";
102        Add(morko);
103
104        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
105        tasoAivot.Speed = 100;
106
107        morko.Brain = tasoAivot;
108        tasoAivot.FallsOffPlatforms = false;
109        tasoAivot.JumpSpeed = 700;
110        tasoAivot.TriesToJump = false;
111    }
112
113
114    void LuoMaali(Vector paikka, double leveys, double korkeus)
115    {
116        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
117        maali.Position = paikka;
118        maali.Color = Color.AshGray;
119        //taso.Image = groundImage
120        maali.Tag = "maali";
121        maali.CollisionIgnoreGroup = 1;
122        Add(maali);
123
124
125    }
126
127    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
128    {
129        pelaaja = new PlatformCharacter(leveys, korkeus);
130        pelaaja.Position = paikka;
131        pelaaja.Destroyed += SeuraavaKentta;
132        pelaaja.Image = pelaajanKuva;
133        AddCollisionHandler(pelaaja, "tahti", TormaaTahteen);
134        AddCollisionHandler(pelaaja, "vihollinen", TormaaViholliseen);
135        AddCollisionHandler(pelaaja, "laava", TormaaLaavaan);
136        AddCollisionHandler(pelaaja, "maali", TormasiMaaliin);
137        Add(pelaaja);
138
139        AssaultRifle pelaajanAse  = new AssaultRifle(30, 10);
140        pelaajanAse.Ammo.Value = 1000;
141
142        //Mitä tapahtuu kun ammus osuu johonkin?
143        pelaajanAse.ProjectileCollision = AmmusOsui;
144
145        pelaaja.Weapon = pelaajanAse;
146
147    }
148
149    void TormaaLaavaan(PhysicsObject pelaaja, PhysicsObject laava)
150    {
151        elamaLaskuri.Value -= 100000;
152    }
153
154    void TormaaViholliseen(PhysicsObject pelaaja, PhysicsObject tahti)
155    {
156        elamaLaskuri.Value -= 4;
157    }
158
159
160    void TormaaTahteen(PhysicsObject pelaaja, PhysicsObject tahti)
161    {
162
163    }
164
165    void LuoTaso(Vector paikka, double leveys, double korkeus)
166    {
167        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
168        taso.Position = paikka;
169        taso.Color = Color.Gold;
170        //taso.Image = groundImage
171        taso.CollisionIgnoreGroup = 1;
172        Add(taso);
173    }
174
175    void LuoLaava(Vector paikka, double leveys, double korkeus)
176    {
177        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
178        taso.Position = paikka;
179        taso.Color = Color.Red;
180        taso.Tag = "laava";
181        //taso.Image = groundImage
182        taso.CollisionIgnoreGroup = 1;
183        Add(taso);
184
185
186
187    }
188
189    void LuoTahti(Vector paikka, double leveys, double korkeus)
190    {
191        PhysicsObject tahti = new PhysicsObject(leveys, korkeus);
192        //tahti.IgnoresCollisionResponse = true;
193        tahti.Position = paikka;
194        tahti.Image = tahtiKuva;
195        tahti.Tag = "kristali";
196        Add(tahti);
197    }
198    void LuoElamaLaskuri()
199    {
200        elamaLaskuri = new DoubleMeter(100, 0, 100);
201        elamaLaskuri.LowerLimit += ElamaLoppui;
202
203        ProgressBar elamaPalkki = new ProgressBar(150, 20);
204        elamaPalkki.X = Screen.Left + 150;
205        elamaPalkki.Y = Screen.Top - 20;
206        elamaPalkki.BindTo(elamaLaskuri);
207        Add(elamaPalkki);
208        //elamaPalkki.Angle = Angle.;
209        elamaPalkki.Color = Color.Transparent;
210        elamaPalkki.BarColor = Color.Red;
211        elamaPalkki.BorderColor = Color.Black;
212    }
213    void ElamaLoppui()
214    {
215        MessageDisplay.Add("VOI VOI ALOTA ALUSTA =D.");
216        pelaaja.Destroy();
217    }
218    void LiikutaPelaajaa(double nopeus)
219    {
220        pelaaja.Walk(nopeus);
221        KaannaAse(pelaaja);
222    }
223
224
225    void KaannaAse(PlatformCharacter pelaaja)
226    {
227        if (pelaaja.Weapon == null) return;
228        if (pelaaja.FacingDirection.Equals(Direction.Right))
229            pelaaja.Weapon.Angle = Angle.FromDegrees(0);
230        else
231            pelaaja.Weapon.Angle = Angle.FromDegrees(180);
232    }
233
234    void Hyppaa(double nopeus)
235    {
236        pelaaja.Jump(nopeus);
237    }
238 
239    void ParhaatPisteet()
240    {
241    }
242    //void LiikutaPelaajaa(Vector vektori, PhysicsObject pelaaja)
243    //{
244    //    pelaaja.Move(vektori);
245    //}
246
247    void LiikutaPelaajaa(AnalogState tatinTila)
248    {
249        Vector tatinAsento = tatinTila.StateVector;
250        pelaaja.Walk(tatinAsento.X*100);
251        KaannaAse(pelaaja);
252    }
253    void SeuraavaKentta()
254    {
255        ClearAll();
256
257        AloitaPeli();
258
259    }
260
261    void TormasiMaaliin(PhysicsObject pelaaja, PhysicsObject maali)
262    {
263        //Kasvatetaan kenttänumeroa yhdellä ja siirrytään seuraavaan kenttään:
264        kenttaNro++;
265        SeuraavaKentta();
266    }
267    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
268{
269    ammus.Destroy();
270    }
271    void AmmuAseella(Weapon ase)
272{
273    //if (!(ase is AssaultRifle)) return;
274    //AssaultRifle pyssy = (AssaultRifle)ase;
275    PhysicsObject ammus = ase.Shoot();
276
277    if(ammus != null)
278    {
279        //ammus.Size *= 3;
280        //ammus.Image = ...
281        ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
282    }
283}
284 
285}
Note: See TracBrowser for help on using the repository browser.