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

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