source: 2016/30/luennot/Pallopeli/Pallopeli/Pallopeli/Pallopeli.cs @ 8146

Revision 8146, 3.5 KB checked in by jotapoti, 3 years ago (diff)

Tasoloikkapeliin ExplosionSystem?-esimerkki ja alkuvalikko.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Pallopeli : PhysicsGame
10{
11    PhysicsObject pelaaja1;
12    Image pelaajanKuva = LoadImage("pinkman");
13    Image vihollisenKuva = LoadImage("vihu");
14
15    public override void Begin()
16    {
17        SmoothTextures = false;
18        Level.CreateBorders();
19
20        LisaaPelaaja();
21        LisaaViholliset();
22
23        //LuoPallo(-100.0, -20.5, Color.HotPink);
24        //LuoPallo(200.0, 0.0, Color.MidnightBlue);
25        //LuoPallo(150.0, 0.0, Color.Green);
26        //LuoPallo(150.0, 400.0, Color.MediumVioletRed);
27
28        // Palloja, joita voi syödä:
29        LisaaSyotavatPallot();
30       
31        AsetaOhjaimet();
32
33    }
34
35    void LisaaSyotavatPallot()
36    {
37        for (int i = 0; i < 25; i++)
38        {
39            double satunnainenX = RandomGen.NextDouble(Level.Left + 50.0, Level.Right - 50.0);
40            double satunnainenY = RandomGen.NextDouble(Level.Bottom + 50.0, Level.Top - 50.0);
41            LuoPallo(satunnainenX, satunnainenY, Color.Brown);
42        }
43    }
44
45    void LisaaViholliset()
46    {
47        // Vihollisia peliin useampia:
48        for (int i = 0; i < 2; i++)
49        {
50            LuoVihollinen();
51        }
52    }
53
54    void AsetaOhjaimet()
55    {
56        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
57        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, "Liiku vasemmalle", new Vector(-1000, 0));
58        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, "Liiku oikealle", new Vector(1000, 0));
59        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, "Liiku ylös", new Vector(0, 1000));
60        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, "Liiku alas", new Vector(0, -1000));
61    }
62
63    void LiikutaPelaajaa(Vector vektori)
64    {
65        pelaaja1.Push(vektori);
66    }
67    void LisaaPelaaja()
68    {
69        pelaaja1 = new PhysicsObject(40.0, 40.0);
70        pelaaja1.CanRotate = false;
71        pelaaja1.Image = pelaajanKuva;
72        Add(pelaaja1);
73        AddCollisionHandler(pelaaja1, "pallura", PelaajaTormaaPalloon);
74        AddCollisionHandler(pelaaja1, "vihu", PelaajaTormaaVihuun);
75    }
76
77    void PelaajaTormaaPalloon(PhysicsObject pelaajahahmo, PhysicsObject pallonen)
78    {
79        pallonen.Destroy();
80        pelaajahahmo.Width += 20.0;
81        pelaajahahmo.Height += 20.0;
82    }
83
84    void PelaajaTormaaVihuun(PhysicsObject pelaajahahmo, PhysicsObject pahis)
85    {
86        pahis.Size *= 1.5;
87        pelaajahahmo.Size *= 0.5;
88    }
89
90    void LuoPallo(double xkoordinaatti, double ykoordinaatti, Color vari)
91    {
92        PhysicsObject pallo = new PhysicsObject(50.0, 50.0, Shape.Circle);
93        pallo.Color = vari;
94        pallo.X = xkoordinaatti;
95        pallo.Y = ykoordinaatti;
96        pallo.Tag = "pallura";
97        Add(pallo);
98    }
99
100    void LuoVihollinen()
101    {
102        PhysicsObject vihollinen = new PhysicsObject(50.0, 50.0);
103        vihollinen.X = RandomGen.NextDouble(Level.Left, Level.Right);
104        vihollinen.Y = RandomGen.NextDouble(Level.Bottom, Level.Top);
105        vihollinen.Image = vihollisenKuva;
106        vihollinen.Tag = "vihu";
107        Add(vihollinen);
108
109        // TODO tee jokin keino tappaa vihollinen..?
110
111        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
112        vihollinen.Brain = seuraajanAivot;
113    }
114}
Note: See TracBrowser for help on using the repository browser.