source: 2015/24/EemeliN/Space-adventure/Space-adventure/Space-adventure/Space_adventure.cs @ 6025

Revision 6025, 8.2 KB checked in by eeonilni, 6 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Space_adventure : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus =  800;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    PlatformCharacter pelaaja2;
17    Image pelaajanKuva = LoadImage("oikean kokoinen pelaajan kuva");
18    Image tahtiKuva = LoadImage("koliket");
19    Image welhopahis = LoadImage("welho pahis");
20    Image maalikuva = LoadImage("maali kilppari");
21    Image PahisKuva = LoadImage("pelin pahis");
22    SoundEffect maaliAani = LoadSoundEffect("maali");
23    int kenttaNro = 2;
24
25    List<Vector> spawnit = new List<Vector>();
26
27    public override void Begin()
28    {
29
30        OneInTheChamper();
31         luoAse(pelaaja1);
32         luoAse(pelaaja2);
33       
34        //LisaaNappaimet();
35
36        Camera.Follow(pelaaja1, pelaaja2);
37        Camera.ZoomFactor = 1.0;
38        Camera.StayInLevel = false;
39    }
40
41
42    void LuoKentta(string kentanNimi)
43    {
44        ColorTileMap kentta = ColorTileMap.FromLevelAsset(kentanNimi);
45        kentta.SetTileMethod(Color.Gray, LisaaTaso);
46        kentta.SetTileMethod(Color.Gold, LisaaTahti);
47        kentta.SetTileMethod(Color.Black, LisaaPelaaja);
48        kentta.SetTileMethod(Color.Rose, LisaaMaali);
49        kentta.SetTileMethod(Color.BloodRed, LisaaSpawn);
50     
51        kentta.SetTileMethod(Color.White, LisaaVihollinen);
52        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
53        Level.Background.Image = LoadImage("asteroidi kenttä");
54        Level.Size = new Vector(3250, 5000);
55        Level.Background.FitToLevel();
56
57        Gravity = new Vector(0, -1000.81);
58        //Level.Width = Screen.Width;
59
60    }
61
62   
63
64    void LisaaTaso(Vector paikka, double leveys, double korkeus)
65    {
66        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
67        taso.Position = paikka;
68        taso.Color = Color.Black;
69        Add(taso);
70       
71    }
72
73    void LisaaMaali(Vector paikka, double leveys, double korkeus)
74    {
75        PhysicsObject taso = PhysicsObject.CreateStaticObject(3*leveys, 3*korkeus);
76        taso.Position = paikka;
77        taso.Image = maalikuva;
78        taso.Tag = "maali";
79        Add(taso);
80
81    }
82
83
84    void LisaaTahti(Vector paikka, double leveys, double korkeus)
85    {
86        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
87        tahti.IgnoresCollisionResponse = true;
88        tahti.Position = paikka;
89        tahti.Image = tahtiKuva;
90        tahti.Tag = "tahti";
91        Add(tahti);
92    }
93
94    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
95    {
96        PlatformCharacter pahis = new PlatformCharacter(3 * leveys, 3 * korkeus);
97        pahis.Position = paikka;
98        pahis.Mass = 50.0;
99        pahis.Color = Color.White;
100        pahis.Image = PahisKuva;
101        pahis.Tag = "pahis";
102        Add (pahis);
103 
104    }
105
106    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
107    {
108        pelaaja1 = new PlatformCharacter(2*leveys, 2*korkeus);
109        pelaaja1.Position = paikka;
110        pelaaja1.Mass = 40.0;
111        pelaaja1.Color = Color.Black;
112        pelaaja1.Image = pelaajanKuva;
113        //pelaaja1.Shape = Shape.FromImage(pelaajanKuva);
114        pelaaja1.CollisionIgnoreGroup = 1;
115
116        AddCollisionHandler(pelaaja1, "maali", TormaaMaaliin);
117        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
118        Add(pelaaja1);
119
120        pelaaja2 = new PlatformCharacter(2*leveys, 2*korkeus);
121        pelaaja2.Position = paikka;
122        pelaaja2.Mass = 40.0;
123        pelaaja2.Color = Color.Black;
124        pelaaja2.Image = welhopahis;
125        //pelaaja2.Shape = Shape.FromImage(welhopahis);
126        pelaaja2.CollisionIgnoreGroup = 1;
127
128        AddCollisionHandler(pelaaja2, "maali", TormaaMaaliin);
129        AddCollisionHandler(pelaaja2, "tahti", TormaaTahteen);
130        Add(pelaaja2);
131
132     
133       
134    }
135
136    void LisaaNappaimet()
137    {
138        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
139        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
140
141        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
142        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
143        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
144
145        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
146
147        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
148        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
149        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
150
151        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
152
153        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
154        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, nopeus);
155        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
156
157
158        Keyboard.Listen(Key.Enter, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
159        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja2);
160
161    }
162
163    void Liikuta(PlatformCharacter hahmo, double nopeus)
164    {
165        hahmo.Walk(nopeus);
166    }
167
168    void Hyppaa(PlatformCharacter hahmo, double nopeus)
169    {
170        hahmo.Jump(nopeus);
171       
172    }
173
174
175    void TormaaMaaliin(PhysicsObject hahmo, PhysicsObject maali)
176    {
177        maali.Destroy();
178
179        if (hahmo == pelaaja1)
180        {
181            MessageDisplay.Add("pelaaja1 voitti!");
182        }
183
184        else 
185        {
186            MessageDisplay.Add("pelaaja2 voitti!");
187        }
188        kenttaNro++;
189        ClearAll();
190        OneInTheChamper();
191    }
192
193    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
194    {
195        maaliAani.Play();
196        MessageDisplay.Add("Oletko aivan varma että haluat poimia tämän???!");
197        tahti.Destroy();
198    }
199
200    void luoAse(PlatformCharacter hahmo)
201    {
202        //pelaaja1 on PlatformCharacter-tyyppinen
203        hahmo.Weapon = new AssaultRifle(30, 10);
204        hahmo.Weapon.InfiniteAmmo = true;
205        hahmo.Weapon.CanHitOwner = false;
206        hahmo.Weapon.Image = null;
207        hahmo.Weapon.Color = Color.Transparent;
208       
209        hahmo.Weapon.Power.MaxValue = 2000000;
210        hahmo.Weapon.AmmoIgnoresGravity = false;
211        hahmo.Weapon.AmmoIgnoresExplosions = false;
212        hahmo.Weapon.CanHitOwner = true;
213        hahmo.Weapon.ProjectileCollision = AmmusOsui;
214    }
215
216    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
217    {
218        ammus.Destroy();
219
220        if (kohde.Tag.Equals("pahis"))
221        {
222            kohde.Destroy();
223        }
224    }
225
226    void AmmuAseella(PlatformCharacter pelaaja)
227    {
228        PhysicsObject ammus = pelaaja.Weapon.Shoot();
229
230        if (ammus != null)
231        {
232            ammus.Velocity *= 3;
233            //ammus.Size *= 3;
234            //ammus.Image = ...
235            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
236           
237
238        }
239    }
240
241    void OneInTheChamper()
242    {
243        spawnit.Clear();
244        if (kenttaNro == 2) LuoKentta("kenttä 2");
245        else if (kenttaNro == 3)
246        {
247            LuoKentta("kenttä.3");
248            LisaaPelaaja(Vector.Zero, RUUDUN_KOKO, RUUDUN_KOKO);
249            pelaaja1.Position = RandomGen.SelectOne<Vector>(spawnit);
250            pelaaja2.Position = RandomGen.SelectOne<Vector>(spawnit);
251        }
252        else if (kenttaNro > 3) Exit();
253
254
255         luoAse(pelaaja1);
256         luoAse(pelaaja2);
257       
258        LisaaNappaimet();
259
260        Camera.Follow(pelaaja1, pelaaja2);
261        Camera.ZoomFactor = 1.0;
262        Camera.StayInLevel = false;
263    }
264
265    void LisaaSpawn(Vector paikka, double leveys, double korkeus)
266    {
267        spawnit.Add(paikka);
268    }
269
270
271}
Note: See TracBrowser for help on using the repository browser.