source: 2017/23/NinaH/Kebab Run/Kebab Run/Kebab_Run/Kebab_Run.cs @ 8469

Revision 8469, 8.0 KB checked in by nupeohje, 2 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 Kebab_Run : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter kebabelain;
16    PhysicsObject ak47;
17    PhysicsObject paistinpannu;
18    PhysicsObject teurstaja;
19    PhysicsObject karvakasi;
20    GameObject beach;
21
22    Image kebabelaimenKuva = LoadImage("kebabelainvalkoinentausta");
23    Image ak47Kuva = LoadImage("ak47");
24    Image karvakasiKuva = LoadImage("karvakasi");
25    Image paistinpannuKuva = LoadImage("paistinpannu");
26    Image teurastajaKuva = LoadImage("teu");
27    Image forestKuva = LoadImage("forest");
28    Image beachKuva = LoadImage("beach");
29    Image hillsKuva = LoadImage("hills");
30    Image kichenKuva = LoadImage("kitchen"); 
31    Image hellKuva = LoadImage("hell");
32
33    int kenttaNro = 1;
34
35    public override void Begin()
36    {
37        SeuraavaKentta();
38        LisaaTaustakuvat();
39    }
40
41    void LuoKentta(string kenttaTiedostonNimi)
42    {
43        Level.CreateBorders();
44        TileMap kentta = TileMap.FromLevelAsset(kenttaTiedostonNimi);
45        kentta.SetTileMethod('L', LisaaKebabelain); 
46        kentta.SetTileMethod('A', LisaaAk);
47        kentta.SetTileMethod('T', LisaaTeurastaja);
48        kentta.SetTileMethod('P', LisaaPaistinpannu);
49        kentta.SetTileMethod('K', LisaaKarvakasi);
50        kentta.SetTileMethod('B', LisaaBeach);
51        kentta.Execute();
52
53    }
54
55    void LisaaKarvakasi(Vector paikka, double leveys, double korkeus)
56    {
57        PhysicsObject karvakasi = PhysicsObject.CreateStaticObject(leveys, korkeus);
58        karvakasi.Position = paikka;
59        karvakasi.CollisionIgnoreGroup = 6;
60        karvakasi.Image = karvakasiKuva;
61        karvakasi.Tag = "lassi";
62       
63
64        karvakasi.Size = new Vector(60.0, 120.0);
65        Add(karvakasi);
66    }
67
68    void LisaaPaistinpannu(Vector paikka, double leveys, double korkeus)
69    {
70        PhysicsObject paistinpannu = PhysicsObject.CreateStaticObject(leveys, korkeus);
71        paistinpannu.Position = paikka;
72        paistinpannu.Image = paistinpannuKuva;
73        paistinpannu.Tag = "lassi";
74        paistinpannu.Size = new Vector(70.0, 70.0);
75        Add(paistinpannu);
76    }
77   
78    void LisaaTeurastaja(Vector paikka, double leveys, double korkeus)
79    {
80        PhysicsObject teurastaja = new PhysicsObject(leveys, korkeus);
81        teurastaja.Position = paikka;
82        teurastaja.CollisionIgnoreGroup = 6;
83        teurastaja.Image = teurastajaKuva;
84        teurastaja.Tag = "lassi";
85        teurastaja.Size = new Vector(60.0, 100.0);
86        teurastaja.CanRotate = false;
87
88        Timer liikutinajastin = new Timer();
89        liikutinajastin.Interval = 0.1;
90        liikutinajastin.Timeout += delegate
91        {
92            teurastaja.Push(new Vector(-2000.0, 0.0));
93        };
94        liikutinajastin.Start();
95
96        Add(teurastaja);
97    }
98
99    void LisaaBeach(Vector paikka, double leveys, double korkeus) 
100{
101        GameObject beach = new GameObject(Screen.Width, Screen.Height);
102        beach.Image = beachKuva;
103        Add(beach, -3);
104        Layers[-3].RelativeTransition = new Vector(0.4, 0.5);
105
106}
107
108    void LisaaAk(Vector paikka, double leveys, double korkeus)
109    {
110        PhysicsObject ak = PhysicsObject.CreateStaticObject(leveys, korkeus);
111        ak.IgnoresCollisionResponse = true;
112        ak.Position = paikka;
113        ak.Image = ak47Kuva;
114        ak.Tag = "ase";
115        ak.Size = new Vector(90.0, 70.0);
116        Add(ak);
117    }
118
119    void LisaaKebabelain(Vector paikka, double leveys, double korkeus)
120    {
121        kebabelain = new PlatformCharacter(leveys, korkeus);
122        kebabelain.Position = paikka;
123       // kebabelain.Mass = 4.0;
124        kebabelain.Size = new Vector(70.0, 70.0);
125        kebabelain.Image = kebabelaimenKuva;
126        AddCollisionHandler<PlatformCharacter, PhysicsObject>(kebabelain, "ase", TormaaAk);
127        Add(kebabelain);
128    }
129
130    void LisaaNappaimet()
131    {
132        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
133        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
134
135        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "kebu hyppää", kebabelain, hyppyNopeus);
136        Keyboard.Listen(Key.Space, ButtonState.Down, Ammuaseella, "kebu ampuu");
137        Keyboard.Listen(Key.E, ButtonState.Pressed, ThrowAwayGun, "heitä ase");
138    }
139
140    GameObject[] Taustat;
141
142    void LisaaTaustakuvat()
143    {
144        PhysicsObject Object = PhysicsObject.CreateStaticObject(Level.Width, 10);
145        Object.X = 0.0;
146        Object.Y = kebabelain.Y - kebabelain.Height/2.0;
147        Object.IsVisible = false;
148        Object.Color = Color.HotPink;
149        //Add(Object, -2);
150        Add(Object);
151        Taustat = new GameObject[3];
152       
153        for (int i = -1, l = 0; i < 2; i++, l++)
154        {
155            Taustat[l] = new GameObject(beachKuva.Width, Level.Height);
156            Taustat[l].Image = beachKuva;
157           
158            Taustat[l].Position = new Vector(i * beachKuva.Width, 0);
159            Add(Taustat[l], -3);
160        }
161    }
162
163    protected override void Update(Time time)
164    {
165        base.Update(time);
166
167        float deltaTime = (float)time.SinceLastUpdate.Milliseconds / 100.0f;
168
169        foreach (GameObject tausta in Taustat)
170            tausta.Position -= new Vector(10 * deltaTime, 0);
171
172        if (Taustat[0].Right <= Level.Left)
173        {
174            GameObject temp = Taustat[0];
175            Taustat[0] = Taustat[1];
176            Taustat[1] = Taustat[2];
177            Taustat[2] = temp;
178
179            Taustat[2].Position = new Vector(Taustat[1].Right + Taustat[2].Width / 2.0, 0);
180        }
181    }
182
183    void SeuraavaKentta()
184    {
185        ClearAll();
186
187        if (kenttaNro == 1) LuoKentta("kentta1");
188        else if (kenttaNro == 2) LuoKentta("kentta2");
189        else if (kenttaNro == 3) LuoKentta("kentta3");
190        else if (kenttaNro > 3) Exit();
191        Gravity = new Vector(0, -500);
192
193        LisaaNappaimet();
194
195        Camera.Follow(kebabelain);
196        Camera.ZoomFactor = 1.2;
197        Camera.StayInLevel = true;
198    }
199
200    void Liikuta(PlatformCharacter kebabelain, double nopeus)
201    {
202        kebabelain.Walk(nopeus);
203    }
204
205    void Hyppaa(PlatformCharacter kebabelain, double nopeus)
206    {
207        kebabelain.Jump(nopeus);
208    }
209
210    void TormaaAk(PlatformCharacter kebabelain, PhysicsObject ase)
211    {
212       
213        MessageDisplay.Add("sait aseen!");       
214        ase.Destroy();
215        kebabelain.Weapon = new AssaultRifle(70.0, 40.0);
216        kebabelain.Weapon.MaxAmmoLifetime = TimeSpan.FromSeconds(0.7);
217        kebabelain.Weapon.Ammo.Value = 3;
218
219    }
220
221    void LiikutaTaustaa()
222{
223   /*foreach (GameObject taustakuva in taustakuvat)
224   {
225      taustakuva.Y += scrollausnopeus;
226
227      if ( scrollausnopeus < 0 && taustakuva.Top < Level.Bottom )
228      {
229         taustakuva.Bottom = ekaTaustakuva.Top;
230         ekaTaustakuva = taustakuva;
231      }
232      else if ( scrollausnopeus > 0 && taustakuva.Bottom > Level.Top )
233      {
234         taustakuva.Top = ekaTaustakuva.Bottom;
235         ekaTaustakuva = taustakuva;
236      }
237   }*/
238   }
239
240    void LuoTaustakuvat()
241    {
242        //taustaAjastin = new Timer();
243        //taustaAjastin.Interval = 0.01;
244        //taustaAjastin.Timeout += LiikutaTaustaa;
245        //taustaAjastin.Start();
246
247        //taustakuvat = new List<GameObject>();
248        //LisaaTaustakuva("forest", 300, 300);
249        //LisaaTaustakuva("feald", 300, 300);
250        //LisaaTaustakuva("hills", 300, 300);
251        //LisaaTaustakuva("kitchen", 300, 300);
252        //KisaaTaustakuva("hell", 300, 300);
253    }
254 
255
256    void Ammuaseella()
257    {
258        PhysicsObject ammus = kebabelain.Weapon.Shoot();
259    }
260
261    void ThrowAwayGun()
262    {
263        kebabelain.Weapon = null;
264    }
265
266
267
268
269}
Note: See TracBrowser for help on using the repository browser.