source: 2015/koodauskerho/OttoR/BattleArena/BattleArena/BattleArena/BattleArena.cs @ 7129

Revision 7129, 9.4 KB checked in by sieerinn, 5 years ago (diff)

pöö

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class BattleArena : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    int pelaaja1hahmo = 0;
18
19
20   
21
22    Image pelaajanKuva = LoadImage("characters/bad/paha");
23    Image pelaajanAseenKuva = LoadImage("characters/normi/rifle");
24    Image tahtiKuva = LoadImage("tahti");
25    Image tasoKuva = LoadImage("tasoKuva");
26
27   
28
29    public override void Begin()
30    {
31        Gravity = new Vector(0, -1000);
32
33       
34       
35        LuoAlkuvalikko();
36
37        SmoothTextures = false;
38    }
39 
40    void LuoAlkuvalikko()
41    {
42        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
43        "Aloita peli", "Lopeta");
44        Add(alkuValikko);
45        alkuValikko.AddItemHandler(0, ValikkoValitseHahmo);
46   
47       
48        alkuValikko.AddItemHandler(1, Exit);
49    }
50
51    void ValikkoValitseHahmo()
52    {
53        MultiSelectWindow hahmoValikko = new MultiSelectWindow("Hahmon valinta",
54        "normi", "bad", "boom", "kk", "hero", "klown", "fire", "neon");
55        Add(hahmoValikko);
56        hahmoValikko.AddItemHandler(0, delegate { ValitseHahmo("normi"); });
57        hahmoValikko.AddItemHandler(1, delegate { ValitseHahmo("bad"); });
58        hahmoValikko.AddItemHandler(2, delegate { ValitseHahmo("boom"); });
59        hahmoValikko.AddItemHandler(3, delegate { ValitseHahmo("kk"); });
60        hahmoValikko.AddItemHandler(4, delegate { ValitseHahmo("hero"); });
61        hahmoValikko.AddItemHandler(5, delegate { ValitseHahmo("klown"); });
62        hahmoValikko.AddItemHandler(6, delegate { ValitseHahmo("fire"); });
63        hahmoValikko.AddItemHandler(7, delegate { ValitseHahmo("neon"); });
64       
65    }
66
67    void ValitseHahmo(String hahmonNimi)
68    {
69        switch (hahmonNimi)
70        {
71            case "bad":
72                pelaaja1hahmo = 1;
73                break;
74            case "boom":
75                pelaaja1hahmo = 2;
76                break;
77            case "kk":
78                pelaaja1hahmo = 3;
79                break;
80            case "hero":
81                pelaaja1hahmo = 4;
82                break;
83            case "klown":
84                pelaaja1hahmo = 5;
85                break;
86            case "fire":
87                pelaaja1hahmo = 6;
88                break;
89            case "neon":
90                pelaaja1hahmo = 7;
91                break;
92            default:
93                pelaaja1hahmo = 0;
94                break;
95        }
96
97        pelaajanKuva = LoadImage("characters/" + hahmonNimi + "/hahmo");
98
99        LuoKentta();
100
101    }
102
103    void LuoKentta()
104    {
105        TileMap kentta = TileMap.FromLevelAsset("kentta1");
106        kentta.SetTileMethod('#', LisaaTaso);
107        kentta.SetTileMethod('*', LisaaTahti);
108        kentta.SetTileMethod('N', LisaaPelaaja);
109        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
110        Level.CreateBorders();
111        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
112
113        LisaaNappaimet();
114
115        Camera.Follow(pelaaja1);
116        Camera.ZoomFactor = 1.2;
117        Camera.StayInLevel = true;
118    }
119
120    void LisaaTaso(Vector paikka, double leveys, double korkeus)
121    {
122        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
123        taso.Position = paikka;
124        taso.Color = Color.Green;
125        taso.Image = tasoKuva;
126        Add(taso);
127    }
128
129    void LisaaTahti(Vector paikka, double leveys, double korkeus)
130    {
131        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
132        tahti.IgnoresCollisionResponse = true;
133        tahti.Position = paikka;
134        tahti.Image = tahtiKuva;
135        tahti.Tag = "tahti";
136        Add(tahti);
137    }
138
139    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
140    {
141        pelaaja1 = new PlatformCharacter(leveys, korkeus);
142        pelaaja1.Position = paikka;
143        pelaaja1.Mass = 4.0;
144       
145        pelaaja1.Image = pelaajanKuva;
146        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
147
148        switch (pelaaja1hahmo)
149        {
150            case 1:
151                pelaajanAseenKuva = LoadImage("characters/bad/AK");
152                pelaaja1.Weapon = new AssaultRifle(50, 10);
153                pelaaja1.Weapon.FireRate = 6.0;
154                pelaaja1.Weapon.Power.Value = 340;
155                pelaaja1.Weapon.Power.DefaultValue = 340;
156                pelaaja1.Weapon.Image = pelaajanAseenKuva;
157                break;
158            case 2:
159                pelaajanAseenKuva = LoadImage("characters/boom/kranaatinheitin");
160                pelaaja1.Weapon = new AssaultRifle(50, 10);
161                pelaaja1.Weapon.FireRate = 0.5;
162                pelaaja1.Weapon.Power.Value = 230;
163                pelaaja1.Weapon.Power.DefaultValue = 230;
164                pelaaja1.Weapon.Image = pelaajanAseenKuva;
165                break;
166            case 3:
167                pelaajanAseenKuva = LoadImage("characters/kk/heavy");
168                pelaaja1.Weapon = new AssaultRifle(50, 10);
169                pelaaja1.Weapon.FireRate = 15.0;
170                pelaaja1.Weapon.Power.Value = 300;
171                pelaaja1.Weapon.Power.DefaultValue = 300;
172                pelaaja1.Weapon.Image = pelaajanAseenKuva;
173                break;
174            case 4:
175                pelaajanAseenKuva = LoadImage("characters/hero/nice");
176                pelaaja1.Weapon = new AssaultRifle(50, 10);
177                pelaaja1.Weapon.FireRate = 3.0;
178                pelaaja1.Weapon.Power.Value = 250;
179                pelaaja1.Weapon.Power.DefaultValue = 250;
180                pelaaja1.Weapon.Image = pelaajanAseenKuva;
181                break;
182            case 5:
183                pelaajanAseenKuva = LoadImage("characters/klown/sniper");
184                pelaaja1.Weapon = new AssaultRifle(50, 10);
185                pelaaja1.Weapon.FireRate = 3.0;
186                pelaaja1.Weapon.Power.Value = 500;
187                pelaaja1.Weapon.Power.DefaultValue = 500;
188                pelaaja1.Weapon.Image = pelaajanAseenKuva;
189                break;
190            case 6:
191                pelaajanAseenKuva = LoadImage("characters/fire/flamer");
192                pelaaja1.Weapon = new AssaultRifle(50, 10);
193                pelaaja1.Weapon.FireRate = 3.0;
194                pelaaja1.Weapon.Power.Value = 500;
195                pelaaja1.Weapon.Power.DefaultValue = 500;
196                pelaaja1.Weapon.Image = pelaajanAseenKuva;
197                break;
198            case 7:
199                pelaajanAseenKuva = LoadImage("characters/neon/rainbow");
200                pelaaja1.Weapon = new AssaultRifle(50, 10);
201                pelaaja1.Weapon.FireRate = 10.0;
202                pelaaja1.Weapon.Power.Value = 400;
203                pelaaja1.Weapon.Power.DefaultValue = 400;
204                pelaaja1.Weapon.Image = pelaajanAseenKuva;
205                break;
206            default:
207                pelaajanAseenKuva = LoadImage("characters/normi/rifle");
208                pelaaja1.Weapon = new AssaultRifle(50, 10);
209                pelaaja1.Weapon.FireRate = 3.0;
210                pelaaja1.Weapon.Power.Value = 300;
211                pelaaja1.Weapon.Power.DefaultValue = 300;
212                pelaaja1.Weapon.Image = pelaajanAseenKuva;
213               
214                break;
215        }
216
217        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
218       
219        Add(pelaaja1);
220    }
221    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
222    {
223        ammus.Destroy();
224     
225    }
226    void LisaaNappaimet()
227    {
228        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
229        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
230
231        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
232        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
233        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
234        Keyboard.Listen(Key.Space, ButtonState.Down, Ammu, "Pelaaja ampuu");
235
236        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
237
238        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
239        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
240        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
241
242        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
243    }
244
245    void Ammu()
246    {
247
248        PhysicsObject ammus = pelaaja1.Weapon.Shoot();
249
250        if (ammus != null)
251        {
252            ammus.Size *= 0.7;
253            ammus.Image = LoadImage("ammusKuva"); 
254            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
255        }
256    }
257
258    void Liikuta(PlatformCharacter hahmo, double nopeus)
259    {
260        hahmo.Walk(nopeus);
261    }
262
263    void Hyppaa(PlatformCharacter hahmo, double nopeus)
264    {
265        hahmo.Jump(nopeus);
266    }
267
268    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
269    {
270       
271        MessageDisplay.Add("Lets dance, shall we?");
272        MediaPlayer.Play("taustamusiikki");
273       
274    }
275
276}
Note: See TracBrowser for help on using the repository browser.