source: 2010/30/jumakall/The_Bus_Game_Codetest/Peli.cs @ 1403

Revision 1403, 4.4 KB checked in by jumakall, 11 years ago (diff)

The Bus Gamen kehittelyä

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5using System.Collections.Generic;
6
7public class Peli : TopDownPhysicsGame
8{
9    PhysicsObject laatikko;
10    Automobile auto;
11    Dictionary<PhysicsObject, int> ihmisiaPysakilla;
12    int matkustajat;
13    DoubleMeter voimaMittari;
14
15    protected override void Begin()
16    {
17        KineticFriction = 0.8; // Asetetaan kitka
18
19        ihmisiaPysakilla = new Dictionary<PhysicsObject, int>();
20
21        Automobile auto = new Automobile(40, 20);
22        auto.Mass = 200.0;
23        auto.Color = new Color(192, 192, 255);
24        Add(auto);
25
26        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
27        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
28        Keyboard.Listen(Key.Up, ButtonState.Down, kiihdyta, "Kiihdytä", auto);
29        Keyboard.Listen(Key.Down, ButtonState.Down, jarruta, "Jarruta", auto);
30        Keyboard.Listen(Key.Left, ButtonState.Down, kaanny, "Käänny vasemmalle", auto, Angle.Degrees(1));
31        Keyboard.Listen(Key.Right, ButtonState.Down, kaanny, "Käänny oikealle", auto, Angle.Degrees(-1));
32
33        ShowControlHelp();
34
35        Aloita();
36        MessageDisplay.Add("Debug viestit käytössä");
37       
38
39
40        AddCollisionHandler(auto, kasittele);
41        matkustajat = 0;
42
43        //Auton täyttömittari
44        voimaMittari = new DoubleMeter(10);
45        voimaMittari.MaxValue = 30;
46        BarGauge voimaPalkki = new BarGauge(20, 150);
47        voimaPalkki.BindTo(voimaMittari);
48        Add(voimaPalkki);
49
50
51        voimaPalkki.X = (0.88 * Screen.RightSafe);
52        voimaPalkki.Y = (0.94 * Screen.TopSafe);
53        voimaPalkki.BarColor = Color.Green;
54        voimaPalkki.BorderColor = Color.White;
55        voimaPalkki.Angle = Angle.Degrees(90);
56
57        voimaMittari.Value = 0;
58
59        Label tekstikentta = new Label(50.0, 20.0, "Auton tila:");
60        Add(tekstikentta);
61        tekstikentta.X = Screen.Right - 78;
62        tekstikentta.Y = Screen.Top - 10;
63
64
65
66
67       
68    }
69
70    void kiihdyta(Automobile auto)
71    {
72        auto.Accelerate(Time.SinceLastUpdate.TotalSeconds);
73    }
74
75    void jarruta(Automobile auto)
76    {
77        auto.Brake(Time.SinceLastUpdate.TotalSeconds);
78    }
79
80    void kaanny(Automobile auto, Angle kaannos)
81    {
82        auto.Turn(kaannos, Time.SinceLastUpdate.TotalSeconds);
83    }
84
85    void LuoLaatikko()
86    {
87        PhysicsObject laatikko = new PhysicsObject(40.0, 40.0);
88        laatikko.Position = RandomGen.NextVector(Level.Right, Level.Bottom, Level.Left, Level.Top);
89        laatikko.Tag = "laatikko";
90        Add(laatikko);
91
92        ihmisiaPysakilla.Add(laatikko, 10);
93    }
94
95    void Aloita()
96    {
97       
98
99        PhysicsObject vasenReuna = Level.CreateLeftBorder();
100        vasenReuna.Restitution = 1.0;
101        vasenReuna.IsVisible = false;
102        PhysicsObject  oikeaReuna= Level.CreateRightBorder();
103        oikeaReuna.Restitution = 1.0;
104        oikeaReuna.IsVisible = false;
105        PhysicsObject ylaReuna = Level.CreateTopBorder();
106        ylaReuna.Restitution = 1.0;
107        ylaReuna.IsVisible = false;
108        PhysicsObject alaReuna = Level.CreateBottomBorder();
109        alaReuna.Restitution = 1.0;
110        alaReuna.IsVisible = false;
111
112        LuoLaatikko();
113        LuoLaatikko();
114        LuoLaatikko();
115        Camera.ZoomToLevel();
116    }
117
118    void kasittele(PhysicsObject auto, PhysicsObject kohde)
119    {
120
121        Explosion rajahdys = new Explosion(10000.0);
122        rajahdys.Position = auto.Position;
123        Add(rajahdys);
124
125
126        if (kohde.Tag == "laatikko")
127        {
128            MessageDisplay.Add("Ihmisia pysäkillä" + ihmisiaPysakilla[kohde].ToString());
129            MessageDisplay.Add("Matkustajia linja-autossa" + matkustajat.ToString());
130
131            if (ihmisiaPysakilla[kohde] > 0)
132            {
133                matkustajat = matkustajat + ihmisiaPysakilla[kohde];
134                ihmisiaPysakilla[kohde] = 0;
135                voimaMittari.Value = matkustajat;
136            }
137            else
138            {
139                MessageDisplay.Add("Tämä pysäkki on tyhjä");
140            }
141            MessageDisplay.Add("Ihmisia pysäkillä" + ihmisiaPysakilla[kohde].ToString());
142            MessageDisplay.Add("Matkustajia linja-autossa" + matkustajat.ToString());
143
144        }
145    }
146}
Note: See TracBrowser for help on using the repository browser.