source: 2011/24/AkiR/Fight the Rambo/Fight the Rambo/Fight the Rambo/Peli.cs @ 2073

Revision 2073, 8.4 KB checked in by akosrahi, 9 years ago (diff)

tei ramboa

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9
10public class Peli : PhysicsGame
11{
12    const double nopeus = 200;
13    const double hyppyNopeus = 1000;
14    const int RUUDUN_KOKO = 30;
15    PlatformCharacter pelaaja1;
16    GameObject pelaajanpaikka;
17    //PlatformCharacter vihollinen;
18    PlatformCharacter Maali;
19
20    Image pelaajanKuva = LoadImage("rambo2");
21    Image vihollisenkuva = LoadImage("Nuhasotilas");
22    Image maalinkuva = LoadImage("goal");
23    Image LisaaPelaaajanKentallekuvan = LoadImage("sponer");
24    SoundEffect maaliAani = LoadSoundEffect("maali");
25
26    Image paikallaanVasemmalle = LoadImage("rambo2");
27    Image paikallaanOikealle;
28    Image[] kavelyVasemmalle = LoadImages("rambo2");
29    Image[] kavelyOikealle;
30
31    Image VihollinenpaikallaanVasemmalle = LoadImage("Nuhasotilas");
32    Image VihollinenpaikallaanOikealle;
33    Image[] VihollinenKavelyVasemmalle = LoadImages("Nuhasotilas");
34    Image[] VihollinenKavelyOikealle;
35
36    int kenttaNro = 1;
37
38    public override void Begin()
39    {
40       
41        ClearAll();
42
43        paikallaanOikealle = Image.Mirror(paikallaanVasemmalle);
44        kavelyOikealle = Image.Mirror(kavelyVasemmalle);
45
46        VihollinenpaikallaanOikealle = Image.Mirror(VihollinenpaikallaanVasemmalle);
47        VihollinenKavelyOikealle = Image.Mirror(VihollinenKavelyVasemmalle);
48        SeuraavaKentta(kenttaNro);
49       
50
51    }
52
53    void SeuraavaKentta(int kentanNro)
54{
55   ClearAll();
56    Gravity = new Vector(0, -1500);
57
58    if(kentanNro == 1) luoKentta1();
59    else if(kentanNro == 2) LuoKentta2();
60    else if(kentanNro == 3) LuoKentta3();
61    else if(kentanNro > 3) Exit();
62    lisaaNappaimet();
63
64    Camera.Follow(pelaaja1);
65    Camera.ZoomFactor = 1.5;
66    Camera.StayInLevel = true;
67
68   
69}
70
71
72
73
74
75
76    void luoKentta1()
77    {
78        lisaaPelaaja();
79       
80        TileMap kentta = TileMap.FromFile("kentta1.txt");
81        kentta['G'] = lisaaMaali;
82        kentta['E'] = lisaaVihollinen;
83        kentta['#'] = lisaaTaso;
84        kentta['N'] = lisaapelaajanPaikka;
85        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
86
87        pelaaja1.Position = pelaajanpaikka.Position;
88
89        Level.CreateBorders();
90        Level.Background.CreateGradient(Color.DarkRed, Color.ForestGreen);
91        }
92        void LuoKentta2()
93    {
94        lisaaPelaaja();
95
96        TileMap kentta = TileMap.FromFile("TextFile2.txt");
97        kentta['G'] = lisaaMaali;
98        kentta['E'] = lisaaVihollinen;
99        kentta['#'] = lisaaTaso;
100        kentta['N'] = lisaapelaajanPaikka;
101        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
102       
103        pelaaja1.Position = pelaajanpaikka.Position;
104       
105        Level.CreateBorders();
106        Level.Background.CreateGradient(Color.Blue, Color.Black);
107}
108        GameObject lisaapelaajanPaikka()
109        {
110            pelaajanpaikka = new GameObject(100, 150);
111            pelaajanpaikka.Image = LisaaPelaaajanKentallekuvan;
112            return pelaajanpaikka;
113        }
114
115            void LuoKentta3()
116        {
117            lisaaPelaaja();
118           
119            TileMap kentta = TileMap.FromFile("TextFile3.txt");
120            kentta['G'] = lisaaMaali;
121            kentta['E'] = lisaaVihollinen;
122            kentta['#'] = lisaaTaso;
123            kentta['N'] = lisaapelaajanPaikka;
124            kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
125
126            pelaaja1.Position = pelaajanpaikka.Position;
127
128            Level.CreateBorders();
129            Level.Background.CreateGradient(Color.Orange, Color.Purple);
130            }
131
132    PhysicsObject lisaaTaso()
133    {
134        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
135        taso.Color = Color.Black;
136        return taso;
137    }
138
139    PlatformCharacter lisaaPelaaja()
140    {
141        pelaaja1 = new PlatformCharacter(70, 70);
142        pelaaja1.Mass = 4.0;
143        pelaaja1.Image = pelaajanKuva;
144        pelaaja1.Weapon = new AssaultRifle(70, 30);
145        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
146        pelaaja1.Weapon.Y = -20;
147        pelaaja1.Weapon.X = 0.5;
148
149        pelaaja1.RightIdleAnimation = new Animation(paikallaanVasemmalle);
150        pelaaja1.LeftIdleAnimation = new Animation(paikallaanOikealle);
151        pelaaja1.RightWalkingAnimation = new Animation(kavelyVasemmalle);
152        pelaaja1.LeftWalkingAnimation = new Animation(kavelyOikealle);
153        Add(pelaaja1);
154
155        return pelaaja1;
156    }
157
158    void lisaaNappaimet()
159    {
160        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
161        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
162
163        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
164        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
165        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
166        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu");
167
168        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
169
170        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
171        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
172        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
173    }
174
175    void liikuta(PlatformCharacter hahmo, double nopeus)
176    {
177        hahmo.Walk(nopeus);
178    }
179
180    void hyppaa(PlatformCharacter hahmo, double nopeus)
181    {
182        hahmo.Jump(nopeus);
183    }
184
185
186
187    void AmmuAseella()
188    {
189        PhysicsObject Ammus = pelaaja1.Weapon.Shoot();
190        if (Ammus != null)
191        {
192            Ammus.Size *= 4;
193            Ammus.MaximumLifetime = TimeSpan.FromSeconds(3.1);
194            AddCollisionHandler(Ammus, KasitteleVihollinenKuoli);
195        }
196    }
197    void AmmusOsui(PhysicsObject Ammus, PhysicsObject Kohde)
198    {
199        Ammus.Destroy();
200        Explosion rajahdys = new Explosion(10);
201        rajahdys.Position = Ammus.Position;
202       
203    }
204
205
206
207    PlatformCharacter lisaaVihollinen()
208    {
209        PlatformCharacter vihollinen = new PlatformCharacter(70, 70);
210        vihollinen.Mass = 10.0;
211        vihollinen.Image = vihollisenkuva;
212        vihollinen.Tag = ("vihollinen");
213
214        vihollinen.LeftIdleAnimation = new Animation(VihollinenpaikallaanVasemmalle);
215        vihollinen.RightIdleAnimation = new Animation(VihollinenpaikallaanOikealle);
216        vihollinen.LeftWalkingAnimation = new Animation(VihollinenKavelyVasemmalle);
217        vihollinen.RightWalkingAnimation = new Animation(VihollinenKavelyOikealle);
218
219
220        FollowerBrain seuraajanAivot = new FollowerBrain();
221        seuraajanAivot.Target = pelaaja1;
222        seuraajanAivot.Speed = 100;
223        seuraajanAivot.StopWhenTargetClose = false;
224        seuraajanAivot.TargetFollowDistance = 600;
225        seuraajanAivot.FollowAlways = true;
226        seuraajanAivot.Active = true;
227        vihollinen.Brain = seuraajanAivot;
228
229        AddCollisionHandler(vihollinen, VihollinenOsui);
230        return vihollinen;
231    }
232
233    void VihollinenOsui(PhysicsObject vihollinen, PhysicsObject kohde)
234    {
235        if (kohde == pelaaja1)
236        {
237            MediaPlayer.Play("shit");
238            pelaaja1.Destroy();
239
240            Begin();
241        }
242    }
243    void KasitteleVihollinenKuoli(PhysicsObject Ammus, PhysicsObject kohde)
244    {
245        if (kohde.Tag.ToString() == "vihollinen" )
246        {
247            MediaPlayer.Play("kill");
248          kohde.Destroy();
249          ;
250        }
251       
252    }
253         PhysicsObject lisaaMaali()
254    {
255        PhysicsObject Maali = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
256         Maali.Image = maalinkuva;
257         AddCollisionHandler( Maali, KasitteleMaaliinTulo );
258         return Maali;
259         
260         }
261
262        void KasitteleMaaliinTulo(PhysicsObject Maali, PhysicsObject kohde)
263        {
264            if(kohde == pelaaja1)
265            {
266                kenttaNro++;
267                SeuraavaKentta(kenttaNro);
268            }
269        }
270           
271 
272            }
273       
274   
275   
276   
277
278       
279           
280       
281
282       
283
284           
285       
286   
287
Note: See TracBrowser for help on using the repository browser.