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

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

Refaktorointia

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       
32
33        AsetaOhjaimet();
34
35    }
36
37    void LisaaSyotavatPallot()
38    {
39        for (int i = 0; i < 25; i++)
40        {
41            double satunnainenX = RandomGen.NextDouble(Level.Left + 50.0, Level.Right - 50.0);
42            double satunnainenY = RandomGen.NextDouble(Level.Bottom + 50.0, Level.Top - 50.0);
43            LuoPallo(satunnainenX, satunnainenY, Color.Brown);
44        }
45    }
46
47    void LisaaViholliset()
48    {
49        // Vihollisia peliin useampia:
50        for (int i = 0; i < 2; i++)
51        {
52            LuoVihollinen();
53        }
54    }
55
56    void AsetaOhjaimet()
57    {
58        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
59        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, "Liiku vasemmalle", new Vector(-1000, 0));
60        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, "Liiku oikealle", new Vector(1000, 0));
61        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, "Liiku ylös", new Vector(0, 1000));
62        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, "Liiku alas", new Vector(0, -1000));
63    }
64
65    void LiikutaPelaajaa(Vector vektori)
66    {
67        pelaaja1.Push(vektori);
68    }
69    void LisaaPelaaja()
70    {
71        pelaaja1 = new PhysicsObject(40.0, 40.0);
72        pelaaja1.CanRotate = false;
73        pelaaja1.Image = pelaajanKuva;
74        Add(pelaaja1);
75        AddCollisionHandler(pelaaja1, "pallura", PelaajaTormaaPalloon);
76        AddCollisionHandler(pelaaja1, "vihu", PelaajaTormaaVihuun);
77    }
78
79    void PelaajaTormaaPalloon(PhysicsObject pelaajahahmo, PhysicsObject pallonen)
80    {
81        pallonen.Destroy();
82        pelaajahahmo.Width += 20.0;
83        pelaajahahmo.Height += 20.0;
84    }
85
86    void PelaajaTormaaVihuun(PhysicsObject pelaajahahmo, PhysicsObject pahis)
87    {
88        pahis.Size *= 1.5;
89        pelaajahahmo.Size *= 0.5;
90    }
91
92    void LuoPallo(double xkoordinaatti, double ykoordinaatti, Color vari)
93    {
94        PhysicsObject pallo = new PhysicsObject(50.0, 50.0, Shape.Circle);
95        pallo.Color = vari;
96        pallo.X = xkoordinaatti;
97        pallo.Y = ykoordinaatti;
98        pallo.Tag = "pallura";
99        Add(pallo);
100    }
101
102    void LuoVihollinen()
103    {
104        PhysicsObject vihollinen = new PhysicsObject(50.0, 50.0);
105        vihollinen.X = RandomGen.NextDouble(Level.Left, Level.Right);
106        vihollinen.Y = RandomGen.NextDouble(Level.Bottom, Level.Top);
107        vihollinen.Image = vihollisenKuva;
108        vihollinen.Tag = "vihu";
109        Add(vihollinen);
110
111        // TODO tee jokin keino tappaa vihollinen..?
112
113        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
114        vihollinen.Brain = seuraajanAivot;
115    }
116}
Note: See TracBrowser for help on using the repository browser.