source: 2017/23/AnttiH/FysiikkaPeli4/FysiikkaPeli4/FysiikkaPeli4/FysiikkaPeli4.cs @ 8468

Revision 8468, 11.7 KB checked in by nupeohje, 2 years ago (diff)

Helo guyes is ya boye annomely form swiedn

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class FysiikkaPeli4 : PhysicsGame
10{
11    int karttaNro = 1;
12    bool ctrlIsDown;
13    Label kohta1;
14    Label kohta2;
15    PlatformCharacter Player;
16    DoubleMeter palikkaLaskuri;
17    //Double MovementSpeed = 500;
18    List<Label> valikonKohdat;
19    bool OnkoErikoisominaisuusKaytetty = false;
20    PhysicsObject Palikka;
21    PhysicsObject maali;
22    Image Kuva = LoadImage("NAKKKM_standing");
23    private Animation P1walkanim;
24    Image[] P1walkPic = LoadImages("p1Walk/NAKKKM_sprint_", 0, 7, false);
25    Image[] LatausMittariPic = LoadImages("latausmittari/Lataus", 01, 12, true);
26    Image taustaKuva = LoadImage("KaupunkiTausta");
27    Image CrateKuva = LoadImage("Crate");
28    Image loadingKuva = LoadImage("LoadingScreen");
29
30    public override void Begin()
31    {
32        ClearAll();
33        IsMouseVisible = true;
34        IsFullScreen = true;
35        Valikko();
36
37        SmoothTextures = false;
38
39        AddBackGround();
40        //Level.Background.Image = taustaKuva;
41        //Level.Background.FitToLevel();
42    }
43
44    void AddControls()
45    {
46        //Keyboard.Listen(Key.Left, ButtonState.Down, MovePlayer, null, new Vector(-MovementSpeed, 0));
47        //Keyboard.Listen(Key.Left, ButtonState.Released, MovePlayer, null, new Vector(0, 0));
48        //Keyboard.Listen(Key.Right, ButtonState.Down, MovePlayer, null, new Vector(MovementSpeed, 0));
49        //Keyboard.Listen(Key.Right, ButtonState.Released, MovePlayer, null, new Vector(0, 0));
50        //Keyboard.Listen(Key.Up, ButtonState.Down, MovePlayer, null, new Vector(0, MovementSpeed));
51        //Keyboard.Listen(Key.Up, ButtonState.Released, MovePlayer, null, new Vector(0, 0));
52        //Keyboard.Listen(Key.Down, ButtonState.Down, MovePlayer, null, new Vector(0, -MovementSpeed));
53        //Keyboard.Listen(Key.Down, ButtonState.Released, MovePlayer, null, new Vector(0, 0));
54
55        Keyboard.Listen(Key.Left, ButtonState.Down, delegate { MovePlayer(-250.0); }, null);
56        Keyboard.Listen(Key.Right, ButtonState.Down, delegate { MovePlayer(250.0); }, null);
57
58        Keyboard.Listen(Key.Up, ButtonState.Down, Jump, null);
59
60        Keyboard.Listen(Key.Space, ButtonState.Pressed, delegate {
61            if (OnkoErikoisominaisuusKaytetty == false)
62            {
63                AddPalikka(new Vector(Player.Position.X, Player.Position.Y - 20), 20, 20, true);
64                OnkoErikoisominaisuusKaytetty = true;
65                palikkaLaskuri.Value -= 10;
66               // Timer.SingleShot(2.0, delegate { OnkoErikoisominaisuusKaytetty = false; MessageDisplay.Add("Valmis!"); });
67            }
68           
69        }, null);
70
71        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
72        Keyboard.Listen(Key.LeftControl, ButtonState.Pressed, delegate { ctrlIsDown = true; }, null);
73        Keyboard.Listen(Key.RightControl, ButtonState.Pressed, delegate { ctrlIsDown = true; }, null);
74        Keyboard.Listen(Key.LeftControl, ButtonState.Released, delegate { ctrlIsDown = false; }, null);
75        Keyboard.Listen(Key.RightControl, ButtonState.Released, delegate { ctrlIsDown = false; }, null);
76        Keyboard.Listen(Key.R, ButtonState.Pressed, delegate {
77            if (ctrlIsDown)
78            {
79              if (karttaNro > 3)
80              {
81                  Finish();
82              }
83              else
84              {
85                  Layers[3].RelativeTransition = new Vector(0, 0);
86                  Label loadingScreen = new Label(1080, 620);
87                  loadingScreen.Image = loadingKuva;
88                  Add(loadingScreen, 3);
89
90                  Timer.SingleShot(0.1, delegate
91                  {
92                      karttaNro++;
93                      NextLevel();
94                  });
95                  MessageDisplay.Add("kenttää on vaihdettu " + karttaNro);
96              }
97            }
98            else
99            {
100                Layers[3].RelativeTransition = new Vector(0, 0);
101                Label loadingScreen = new Label(1080, 620);
102                loadingScreen.Image = loadingKuva;
103                Add(loadingScreen, 3);
104               
105                Timer.SingleShot(0.1, delegate
106                {
107                    NextLevel();
108                });
109            }
110        }, null);
111
112
113    }
114
115    void CreateLevel(string kenttaTiedostonNimi)
116    {
117        ColorTileMap ruudut = ColorTileMap.FromLevelAsset(kenttaTiedostonNimi);
118
119        ruudut.SetTileMethod("#FFFF0000", AddPlayer);
120        ruudut.SetTileMethod("000000", AddPalikka, false);
121        ruudut.SetTileMethod("#FF00FF00", AddBombs);
122        ruudut.SetTileMethod("#FF00FF00", AddMaali);
123
124        ruudut.Execute(20, 20);
125
126        Surface alaReuna = Surface.CreateBottom(Level, 1, 100, 140);
127        alaReuna.Color = Color.Transparent;
128        Add(alaReuna);
129
130        AddCollisionHandler(alaReuna, Player, HitBounds);
131    }
132
133    Color RandomColor ()
134    {
135        byte[] buffer = new byte[3];
136        new Random(DateTime.Now.Millisecond * 1000000 + DateTime.Now.Second * 100000 + DateTime.Now.Minute * 10000).NextBytes(buffer);
137        return new Color(buffer[0], buffer[1], buffer[2]);
138    }
139
140    void AddPalikka(Vector paikka, double leveys, double korkeus, bool vari = false)
141    {
142        Palikka = new PhysicsObject(leveys, korkeus);
143        Palikka.Position = paikka;
144        Palikka.Color = Color.Gray;
145        Palikka.Image = CrateKuva;
146        Add(Palikka);
147        if (vari)
148        {
149            Timer randomcolortimer = new Timer();
150            randomcolortimer.Interval = 0.1;
151            randomcolortimer.Timeout += delegate
152            {
153                Color _randomColor = RandomColor();
154                Palikka.Color = _randomColor;
155            };
156            randomcolortimer.Start();
157        }
158    }
159
160    void AddMaali(Vector _pos, double x, double y)
161    {
162        maali = new PhysicsObject(x, y);
163        maali.Position = _pos;
164        Add(maali);
165
166        Timer randomcolortimer = new Timer();
167        randomcolortimer.Interval = 0.1;
168        randomcolortimer.Timeout += delegate
169        {
170            Color _randomColor = RandomColor();
171            maali.Color = _randomColor;
172        };
173        randomcolortimer.Start();
174
175        AddCollisionHandler(maali, Player, voita);
176
177    }
178
179    void voita(PhysicsObject collider, PhysicsObject target)
180    {
181        Layers[3].RelativeTransition = new Vector(0, 0);
182        Label loadingScreen = new Label(1080, 620);
183        loadingScreen.Image = loadingKuva; 
184        Add(loadingScreen, 3);
185
186        Timer.SingleShot(0.1, delegate
187        {
188            karttaNro++;
189            NextLevel();
190        });
191
192       
193    }
194
195    void AddPlayer(Vector paikka, double leveys, double korkeus)
196    {
197        Player = new PlatformCharacter(20, 20);
198        Player.Position = paikka;
199        Player.Shape = Shape.Circle;
200        Player.Color = Color.DarkAzure;
201        Player.LinearDamping = 0.99;
202        Player.IgnoresExplosions = true;
203        Player.Image = Kuva;
204        Add(Player);
205
206        P1walkanim = new Animation(P1walkPic);
207        Player.Animation = P1walkanim;
208        Player.AnimWalk = new Animation(P1walkanim);
209        Player.AnimIdle = new Animation(Kuva);
210        Player.AnimJump = new Animation(Kuva);
211        Player.AnimFall = new Animation(Kuva);
212
213        Timer ajastin = new Timer();
214        ajastin.Interval = 0.05;
215        ajastin.Timeout += delegate
216        {
217            Player.Velocity += new Vector(0, -10);
218        };
219        ajastin.Start();
220    }
221
222    void MovePlayer(double nopeus)
223    {
224        //Player.Push(vektori * 6);
225       
226        Player.Walk(nopeus);
227    }
228
229    void Jump()
230    {
231        Player.Jump(250);
232    }
233
234    void CameraControls()
235    {
236        Camera.Follow(Player);
237        Camera.Zoom(1.5);
238    }
239
240    void AddBackGround ()
241    {
242        GameObject CityBackGround = new GameObject(Screen.Width, Screen.Height);
243        CityBackGround.Image = taustaKuva;
244        Add(CityBackGround, -3);
245        Layers[-3].RelativeTransition = new Vector(0.1, 0.1);
246
247
248        Level.Background.Color = Color.LightGreen;
249    }
250
251    void NextLevel()
252    {
253        ClearAll();
254        ctrlIsDown = false;
255
256        if (karttaNro == 1) CreateLevel("Kartta1");
257        else if (karttaNro == 2) CreateLevel("Kartta2");
258        else if (karttaNro == 3) CreateLevel("Kartta3");
259        else if (karttaNro > 3) Finish();
260
261        AddControls();
262        CameraControls();
263        AddBackGround();
264        LuoAikaLaskuri();
265        LuoPalikkaLaskuri();
266    }
267
268    void AddBombs(Vector _pos, double x, double y)
269    {
270        Timer bombTimer = new Timer();
271        bombTimer.Interval = 0.1;
272        bombTimer.Timeout += delegate {
273           _pos = RandomGen.NextVector(Level.Left, Level.Bottom, Level.Right, Level.Top);
274           Color _randomColor = RandomColor();
275           Color _randomColor2 = RandomColor();
276            Explosion rajahdys = new Explosion(2000);
277            rajahdys.Position = _pos;
278            rajahdys.Speed = 10000;
279            Player.Color = _randomColor2;
280            //Add(rajahdys);
281        };
282        bombTimer.Start();
283    }
284
285    void HitBounds(PhysicsObject collider, PhysicsObject target)
286    {
287        Begin();
288    }
289
290    void LuoPalikkaLaskuri()
291    {
292        OnkoErikoisominaisuusKaytetty = false;
293        palikkaLaskuri = new DoubleMeter(
294            10);
295        palikkaLaskuri.MaxValue = 10;
296        palikkaLaskuri.UpperLimit += delegate { OnkoErikoisominaisuusKaytetty = false;};
297
298        ProgressBar palikkaPalkki = new ProgressBar(300, 200);
299        palikkaPalkki.BarColor = Color.Red;
300        palikkaPalkki.X = Screen.Right - 150;
301        palikkaPalkki.Y = Screen.Bottom + 100;
302        palikkaPalkki.BindTo(palikkaLaskuri);
303        Add(palikkaPalkki);
304        //MessageDisplay.Add("palkki lisätty");
305
306        palikkaPalkki.Image = LoadImage("LatausBaariEmpty");
307        palikkaPalkki.BarImage = LoadImage("LatausBaariFull");
308
309    }
310
311    void LuoAikaLaskuri()
312    { 
313         Timer aikalaskuri = new Timer();
314         aikalaskuri.Interval = 1;
315         aikalaskuri.Timeout += delegate 
316         {
317             if(OnkoErikoisominaisuusKaytetty == true)
318            palikkaLaskuri.Value += 1; 
319            //MessageDisplay.Add("palikka laskuriin lisätty: " + 1);
320         };
321         aikalaskuri.Start();
322    }
323
324    void Finish()
325    {
326        ClearAll();
327        MessageWindow naytto = new MessageWindow("Voitit!");
328        naytto.Closed += delegate { Exit(); };
329        Add(naytto);
330    }
331
332    void Valikko()
333    {
334        ClearAll();
335
336
337
338        valikonKohdat = new List<Label>();
339
340        Label kohta1 = new Label("Aloita peli");
341        kohta1.Position = new Vector(0, 40);
342        valikonKohdat.Add(kohta1);
343
344        Label kohta2 = new Label("Lopeta peli");
345        kohta2.Position = new Vector(0, 0);
346        valikonKohdat.Add(kohta2);
347
348        foreach (Label valikonKohta in valikonKohdat)
349        {
350            Add(valikonKohta);
351        }
352
353
354        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, NextLevel, null);
355        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
356        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
357
358    }
359
360    void ValikossaLiikkuminen(AnalogState hiirenTila)
361    {
362        foreach (Label kohta in valikonKohdat)
363        {
364            if (Mouse.IsCursorOn(kohta))
365            {
366                kohta.TextColor = Color.Red;
367            }
368            else
369            {
370                kohta.TextColor = Color.Black;
371            }
372
373        }
374    }
375}
Note: See TracBrowser for help on using the repository browser.