source: 2015/koodauskerho/AarniAR/StickmansGunFight/StickmansGunFight/StickmansGunFight/StickmansGunFight.cs @ 7093

Revision 7093, 9.9 KB checked in by empaheik, 4 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8using StickmansGunFightPelaaja;
9
10public class StickmansGunFight : PhysicsGame
11{
12    const double nopeus = 250;
13    const double hyppyNopeus = 750;
14    const int RUUDUN_KOKO = 40;
15
16    Pelaaja pelaaja1;
17    Pelaaja pelaaja2;
18
19    Image pelaajanKuva = LoadImage("StickmanAnew");
20    Image tahtiKuva = LoadImage("tahti");
21    Image pelaaja2Kuva = LoadImage("StickmanBnew");
22    Image[] pelaaja2RunKuvat = LoadImages("StickmanBnewrun1", "StickmanBnewrun2");
23    Image[] pelaaja1RunKuvat = LoadImages("StickmanAnewrun1", "StickmanAnewrun2");
24    Image ammoKuva = LoadImage("AmmoBox");
25    Image healthKuva = LoadImage("HealthPack");
26    Image maaKuva = LoadImage("ground");
27    Image seinaKuva1 = LoadImage("wall-left");
28    Image seinaKuva2 = LoadImage("wall-right");
29    Image kattoKuva = LoadImage("top");
30
31    SoundEffect maaliAani = LoadSoundEffect("maali");
32
33    public override void Begin()
34    {
35        Gravity = new Vector(0, -1000);
36
37
38        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
39"Aloita peli", "Lopeta");
40        alkuValikko.AddItemHandler(0, AloitaPeli);
41        alkuValikko.AddItemHandler(1, Exit);
42
43        Add(alkuValikko);
44
45
46
47
48
49        SmoothTextures = false;
50    }
51
52    void AloitaPeli()
53    {
54        LuoKentta();
55        LisaaNappaimet();
56        Camera.ZoomToLevel();
57    }
58
59    void LuoKentta()
60    {
61        TileMap kentta = TileMap.FromLevelAsset("kentta1");
62        kentta.SetTileMethod('#', LisaaTaso);
63        kentta.SetTileMethod('*', LisaaTahti);
64        kentta.SetTileMethod('N', LisaaPelaaja);
65        kentta.SetTileMethod('B', LisaaPelaaja2);
66        kentta.SetTileMethod('A', LisaaAmmo);
67        kentta.SetTileMethod('H', LisaaHeal);
68        kentta.SetTileMethod('1', LisaaA);
69        kentta.SetTileMethod('2', LisaaB);
70        kentta.SetTileMethod('3', LisaaC);
71        kentta.SetTileMethod('4', LisaaD);
72
73        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
74        Level.CreateBorders();
75        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
76    }
77
78    void LisaaTaso(Vector paikka, double leveys, double korkeus)
79    {
80        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
81        taso.Position = paikka;
82        taso.Color = Color.Gray;
83        Add(taso);
84    }
85
86    void LisaaTahti(Vector paikka, double leveys, double korkeus)
87    {
88        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
89        tahti.IgnoresCollisionResponse = true;
90        tahti.Position = paikka;
91        tahti.Image = tahtiKuva;
92        tahti.Tag = "tahti";
93        Add(tahti);
94    }
95
96    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
97    {
98        pelaaja1 = new Pelaaja(leveys, korkeus);
99        pelaaja1.Tag = "pelaaja1";
100        pelaaja1.Position = paikka;
101        pelaaja1.Mass = 4.0;
102        pelaaja1.AnimIdle = pelaajanKuva;
103        Animation pelaaja1Anim = new Animation(pelaaja1RunKuvat);
104        pelaaja1Anim.FPS = 8;
105        pelaaja1.AnimWalk = pelaaja1Anim;
106        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
107        AddCollisionHandler(pelaaja1, "ammus", TormaaLuotiin);
108        pelaaja1.Weapon = new AssaultRifle(1, 1);
109        //Ammusten määrä aluksi:
110        pelaaja1.Weapon.InfiniteAmmo = true;
111
112
113        //Mitä tapahtuu kun ammus osuu johonkin?
114        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
115        Add(pelaaja1);
116        ProgressBar elamaPalkki = new ProgressBar(150, 20);
117        elamaPalkki.X = Screen.Left + 150;
118        elamaPalkki.Y = Screen.Top - 20;
119        elamaPalkki.BindTo(pelaaja1.ElamaLaskuri);
120        Add(elamaPalkki);
121
122    }
123    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
124    {
125        pelaaja2 = new Pelaaja(leveys, korkeus);
126        pelaaja2.Tag = "pelaaja2";
127        pelaaja2.Position = paikka;
128        pelaaja2.Mass = 4.0;
129        pelaaja2.AnimIdle = pelaaja2Kuva;
130        Animation pelaaja2Anim = new Animation(pelaaja2RunKuvat);
131        pelaaja2Anim.FPS = 8;
132        pelaaja2.AnimWalk = pelaaja2Anim;
133        AddCollisionHandler(pelaaja2, "tahti", TormaaTahteen);
134        AddCollisionHandler(pelaaja2, "ammus", TormaaLuotiin);
135        pelaaja2.Weapon = new AssaultRifle(1, 1);
136        //Ammusten määrä aluksi:
137        pelaaja2.Weapon.InfiniteAmmo = true;
138
139        //Mitä tapahtuu kun ammus osuu johonkin?
140        pelaaja2.Weapon.ProjectileCollision = AmmusOsui;
141        Add(pelaaja2);
142        ProgressBar elamaPalkki = new ProgressBar(150, 20);
143        elamaPalkki.X = Screen.Right - 150;
144        elamaPalkki.Y = Screen.Top - 20;
145        elamaPalkki.BindTo(pelaaja2.ElamaLaskuri);
146        Add(elamaPalkki);
147    }
148
149    void LisaaNappaimet()
150    {
151        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
152        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
153        Keyboard.Listen(Key.Enter, ButtonState.Pressed, ResetGame, "Reset");
154
155        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
156        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
157        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
158        Keyboard.Listen(Key.Space, ButtonState.Pressed, AmmuAseella, "Pelaaja Ampuu", pelaaja1);
159
160        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "P2Liikkuu vasemmalle", pelaaja2, -nopeus);
161        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "P2Liikkuu vasemmalle", pelaaja2, nopeus);
162        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja2 hyppää", pelaaja2, hyppyNopeus);
163        Keyboard.Listen(Key.NumPad0, ButtonState.Pressed, AmmuAseella, "P2 Ampuu", pelaaja2);
164
165        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
166
167        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
168        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
169        ControllerOne.Listen(Button.B, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
170        ControllerOne.Listen(Button.A, ButtonState.Pressed, AmmuAseella, "Pelaaja Ampuu", pelaaja1);
171
172        ControllerTwo.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "P2Liikkuu vasemmalle", pelaaja2, -nopeus);
173        ControllerTwo.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "P2Liikkuu oikealle", pelaaja2, nopeus);
174        ControllerTwo.Listen(Button.B, ButtonState.Pressed, Hyppaa, "Pelaaja2 hyppää", pelaaja2, hyppyNopeus);
175        ControllerTwo.Listen(Button.A, ButtonState.Pressed, AmmuAseella, "P2 Ampuu", pelaaja2);
176
177        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
178    }
179
180    void Liikuta(PlatformCharacter hahmo, double nopeus)
181    {
182        hahmo.Walk(nopeus);
183    }
184
185    void Hyppaa(PlatformCharacter hahmo, double nopeus)
186    {
187        hahmo.Jump(nopeus);
188    }
189
190    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
191    {
192        maaliAani.Play();
193        MessageDisplay.Add("Keräsit tähden!");
194        tahti.Destroy();
195    }
196
197    void TormaaLuotiin(PhysicsObject hahmo, PhysicsObject ammus)
198    {
199        Pelaaja pelaaja = (Pelaaja)hahmo;
200        pelaaja.ElamaLaskuri.Value--;
201        if (pelaaja.ElamaLaskuri.Value <= 0)
202        {
203            hahmo.Destroy();
204            ((PlatformCharacter)hahmo).Weapon.Destroy();
205            Label tekstikentta = new Label("teksti");
206
207            if (hahmo.Tag.Equals("pelaaja2")) tekstikentta = new Label("Player 1 won! Press ENTER to play again.");
208            else tekstikentta = new Label("Player 2 won! Press ENTER to play again.");
209
210            tekstikentta.Position = Screen.Center;
211            Add(tekstikentta);
212        }
213    }
214    void AmmuAseella(PlatformCharacter pelaaja)
215    {
216        PhysicsObject ammus = pelaaja.Weapon.Shoot();
217
218        if (ammus != null)
219        {
220            //ammus.Size *= 3;
221            //ammus.Image = ...
222            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
223
224            ammus.Tag = "ammus";
225
226        }
227
228    }
229    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
230    {
231        ammus.Destroy();
232    }
233    void ResetGame()
234    {
235        ClearAll();
236        Begin();
237    }
238    void LisaaAmmo(Vector paikka, double leveys, double korkeus)
239    {
240        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
241        taso.Position = paikka;
242        taso.Image = ammoKuva;
243        Add(taso);
244    }
245    void LisaaHeal(Vector paikka, double leveys, double korkeus)
246    {
247        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
248        taso.Position = paikka;
249        taso.Image = healthKuva;
250        Add(taso);
251    }
252    void LisaaA(Vector paikka, double leveys, double korkeus)
253    {
254        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
255        taso.Position = paikka;
256        taso.Image = maaKuva;
257        Add(taso);
258    }
259    void LisaaB(Vector paikka, double leveys, double korkeus)
260    {
261        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
262        taso.Position = paikka;
263        taso.Image = seinaKuva1;
264        Add(taso);
265    }
266    void LisaaC(Vector paikka, double leveys, double korkeus)
267    {
268        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
269        taso.Position = paikka;
270        taso.Image = seinaKuva2;
271        Add(taso);
272    }
273    void LisaaD(Vector paikka, double leveys, double korkeus)
274    {
275        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
276        taso.Position = paikka;
277        taso.Image= kattoKuva;
278        Add(taso);
279    }
280}
Note: See TracBrowser for help on using the repository browser.