source: 2016/24/OliverK/pomppupeli/pomppupeli/pomppupeli/pomppupeli.cs @ 7426

Revision 7426, 8.3 KB checked in by olhekaur, 3 years ago (diff)

kaikki on valmista

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class pomppupeli : PhysicsGame
10{
11    double nopeus = 700;
12    const double hyppyNopeus = 800;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    PlatformCharacter pelaaja2;
17
18
19    Image palikkakuva = LoadImage("images");
20    Image ukkonKuva = LoadImage("tyyppi");
21    Image pelaajanKuva = LoadImage("ukko2");
22    Image dl2Kuva = LoadImage("DL2");
23    Image nyancat = LoadImage("nyan cat");
24    Image taustakuva = LoadImage("tausta2");
25    SoundEffect maaliAani = LoadSoundEffect("maali");
26
27
28    IntMeter pistelaskuri;
29
30
31
32
33
34    public override void Begin()
35    {
36        ClearAll();
37
38        Gravity = new Vector(0, -1000);
39        LuoKentta();
40        LisaaNappaimet();
41        luoajastin();
42        LuoPistelaskuri();
43        LuoAikalaskuri();
44
45
46        Camera.Follow(pelaaja1);
47        Camera.ZoomFactor = 1.2;
48        Camera.StayInLevel = true;
49    }
50
51    void LuoKentta()
52    {
53        TileMap kentta = TileMap.FromLevelAsset("kentta1");
54        kentta.SetTileMethod('E', LisaaTaso);
55        kentta.SetTileMethod('*', LisaaDL2);
56        kentta.SetTileMethod('N', LisaaPelaaja);
57        kentta.SetTileMethod('#', lisaaPalikka);
58        kentta.SetTileMethod('M', lisaaPelaaja2);
59        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
60        Level.CreateBorders();
61        Level.Background.Color = Color.Black;
62        //GameObject tausta = new GameObject(Level.Width, Level.Height);
63        //tausta.Image = taustakuva;
64        //Add(tausta, -3);
65
66
67
68
69
70    }
71
72    void lisaaPalikka(Vector paikka, double leveys, double korkeus)
73    {
74        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
75        taso.Position = paikka; taso.Image = palikkakuva;
76        Add(taso);
77
78
79
80    }
81
82    void LisaaTaso(Vector paikka, double leveys, double korkeus)
83    {
84        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
85        taso.Position = paikka;
86        taso.Color = Color.Brown;
87        Add(taso);
88    }
89
90    void LisaaDL2(Vector paikka, double leveys, double korkeus)
91    {
92        PlatformCharacter dl2 = new PlatformCharacter(leveys, korkeus);
93        dl2.Position = paikka;
94        dl2.Image = dl2Kuva;
95        dl2.Tag = "DL2";
96        Add(dl2);
97
98
99    }
100
101    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
102    {
103        pelaaja1 = new PlatformCharacter(leveys, korkeus);
104        pelaaja1.Position = paikka;
105        pelaaja1.Mass = 4.0;
106        pelaaja1.Image = pelaajanKuva;
107        AddCollisionHandler(pelaaja1, "DL2", TormaaTahteen);
108        Add(pelaaja1);
109
110        //Ase
111        AssaultRifle ase = new AssaultRifle(30, 20);
112        pelaaja1.Weapon = ase;
113        ase.IsVisible = false;
114
115        //Mitä tapahtuu kun ammus osuu johonkin?
116        ase.ProjectileCollision = AmmusOsui;
117
118        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
119        ControllerOne.Listen(Button.X, ButtonState.Pressed, AmmuAseella, "Ammu", pelaaja1);
120
121        pelaaja1.Add(ase);
122
123        //
124    }
125    void AmmuAseella(PlatformCharacter pelaaja)
126    {
127        PhysicsObject ammus = pelaaja.Weapon.Shoot();
128
129        if (ammus != null)
130        {
131            //ammus.Size *= 3;
132            //ammus.Image = ...
133            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
134        }
135    }
136
137    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
138    {
139        ammus.Destroy();
140        Begin();
141
142    }
143
144    void lisaaPelaaja2(Vector paikka, double leveys, double korkeus)
145    {
146        pelaaja2 = new PlatformCharacter(leveys, korkeus);
147        pelaaja2.Position = paikka;
148        pelaaja2.Mass = 4.0;
149        pelaaja2.Image = ukkonKuva;
150        AddCollisionHandler(pelaaja2, "DL2", TormaaTahteen);
151        Add(pelaaja2);
152
153        //Ase
154        AssaultRifle pelaajan2Ase = new AssaultRifle(30,20);
155        pelaaja2.Weapon = pelaajan2Ase;
156        pelaajan2Ase.IsVisible = false;
157
158        Keyboard.Listen(Key.S, ButtonState.Down, AmmuAseella, "Ammu", pelaaja2);
159        ControllerTwo.Listen(Button.X, ButtonState.Pressed, AmmuAseella, "Ammu", pelaaja2);
160
161        //Ammusten määrä aluksi:
162        pelaajan2Ase.Ammo.Value = 1000;
163
164        //Mitä tapahtuu kun ammus osuu johonkin?
165        pelaajan2Ase.ProjectileCollision = AmmusOsui;
166
167        pelaaja1.Add(pelaajan2Ase);
168
169        //
170    }
171
172
173        void LisaaNappaimet()
174    {
175        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
176        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
177
178        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
179        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
180        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
181
182       
183
184        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
185
186        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
187        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
188        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
189
190        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
191        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, nopeus);
192        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
193
194        ControllerTwo.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja2, -nopeus);
195        ControllerTwo.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja2, nopeus);
196        ControllerTwo.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
197
198
199
200
201    }
202
203    void Liikuta(PlatformCharacter hahmo, double nopeus)
204    {
205        hahmo.Walk(nopeus);
206    }
207
208    void Hyppaa(PlatformCharacter hahmo, double nopeus)
209    {
210        hahmo.Jump(nopeus);
211    }
212
213    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
214    {
215        pistelaskuri.Value += 1;
216        maaliAani.Play();
217        MessageDisplay.Add("SAIT DAIMOND LUKON!");
218        tahti.Destroy();
219    }
220    void luoajastin()
221    {
222
223        Timer ajastin = new Timer();
224        ajastin.Interval = 1.5;
225        ajastin.Timeout += luoolio;
226        ajastin.Start();
227
228
229
230
231    }
232
233    void luoolio()
234    {
235        //PlatformCharacter nyanCat = new PlatformCharacter(50.0, 40.0);
236        //nyanCat.Position = new Vector(RandomGen.NextDouble(Level.Left, Level.Right), RandomGen.NextDouble(Level.Bottom, Level.Top));
237        //nyanCat.Image = nyancat;
238        //Add(nyanCat);
239
240        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
241
242        seuraajanAivot.Speed = 150;                 // Millä nopeudella kohdetta seurataan
243        seuraajanAivot.DistanceFar = 600;           // Etäisyys jolla aletaan seurata kohdetta
244        seuraajanAivot.DistanceClose = 200;         // Etäisyys jolloin ollaan lähellä kohdetta
245
246        //nyanCat.Brain = seuraajanAivot;
247
248
249    }
250
251
252
253
254    void LuoAikalaskuri()
255    {
256        Timer aikaLaskuri = new Timer();
257        aikaLaskuri.Start();
258
259        Label aikaNaytto = new Label();
260        aikaNaytto.TextColor = Color.White;
261        aikaNaytto.Position = new Vector(500, 400);
262        aikaNaytto.DecimalPlaces = 1;
263        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
264        Add(aikaNaytto);
265    }
266
267
268
269    void LuoPistelaskuri()
270    {
271        pistelaskuri = new IntMeter(0,0,46);
272        pistelaskuri.UpperLimit += lopetapeli;
273        Label pisteNaytto = new Label();
274        pisteNaytto.X = Screen.Left + 100;
275        pisteNaytto.Y = Screen.Top - 100;
276        pisteNaytto.TextColor = Color.Black;
277        pisteNaytto.Color = Color.White;
278
279        pisteNaytto.BindTo(pistelaskuri);
280        Add(pisteNaytto);
281    }
282
283
284    void lopetapeli()
285    {
286        MessageDisplay.Add("YOU WINNER");
287
288    }
289
290}
Note: See TracBrowser for help on using the repository browser.