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

Revision 1432, 5.7 KB checked in by jumakall, 10 years ago (diff)
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    PhysicsObject[] talotaulukko = new PhysicsObject[100];
15    int talojenlukumäärä = 0;
16
17    protected override void Begin()
18    {
19        KineticFriction = 0.8; // Asetetaan kitka
20        Widget ruutu2 = new Widget(10.00, 10.00);
21
22        ihmisiaPysakilla = new Dictionary<PhysicsObject, int>();
23
24        Automobile auto = new Automobile(40, 20);
25        auto.Mass = 200.0;
26        auto.Color = new Color(192, 192, 255);
27        Add(auto);
28
29        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
30        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
31        Keyboard.Listen(Key.Up, ButtonState.Down, kiihdyta, "Kiihdytä", auto);
32        Keyboard.Listen(Key.Down, ButtonState.Down, jarruta, "Jarruta", auto);
33        Keyboard.Listen(Key.Left, ButtonState.Down, kaanny, "Käänny vasemmalle", auto, Angle.Degrees(1));
34        Keyboard.Listen(Key.Right, ButtonState.Down, kaanny, "Käänny oikealle", auto, Angle.Degrees(-1));
35
36        ShowControlHelp();
37
38        Aloita();
39        MessageDisplay.Add("Debug viestit käytössä");
40       
41
42
43        AddCollisionHandler(auto, kasittele);
44        matkustajat = 0;
45
46        //Auton täyttömittari
47        voimaMittari = new DoubleMeter(10);
48        voimaMittari.MaxValue = 30;
49        BarGauge voimaPalkki = new BarGauge(20, 150);
50        voimaPalkki.BindTo(voimaMittari);
51        Add(voimaPalkki);
52
53
54        voimaPalkki.X = (0.88 * Screen.RightSafe);
55        voimaPalkki.Y = (0.94 * Screen.TopSafe);
56        voimaPalkki.BarColor = Color.Green;
57        voimaPalkki.BorderColor = Color.White;
58        voimaPalkki.Angle = Angle.Degrees(90);
59
60        voimaMittari.Value = 0;
61
62        Label tekstikentta = new Label(50.0, 20.0, "Auton tila:");
63        Add(tekstikentta);
64        tekstikentta.X = Screen.Right - 78;
65        tekstikentta.Y = Screen.Top - 10;
66
67
68
69       
70    }
71
72    void kiihdyta(Automobile auto)
73    {
74        auto.Accelerate(Time.SinceLastUpdate.TotalSeconds);
75    }
76
77    void jarruta(Automobile auto)
78    {
79        auto.Brake(Time.SinceLastUpdate.TotalSeconds);
80    }
81
82    void kaanny(Automobile auto, Angle kaannos)
83    {
84        auto.Turn(kaannos, Time.SinceLastUpdate.TotalSeconds);
85    }
86
87    void LuoLaatikko()
88    {
89        PhysicsObject laatikko = new PhysicsObject(40.0, 40.0);
90        laatikko.Position = RandomGen.NextVector(Level.Right, Level.Bottom, Level.Left, Level.Top);
91        laatikko.Tag = "laatikko";
92        Add(laatikko);
93        int ihmisia = 0;
94        for (int a = 0; a < talojenlukumäärä; a++)
95        {
96            double talonXetaisyys = laatikko.Position.X - talotaulukko[a].Position.X;
97            double talonYetaisyys = laatikko.Position.Y - talotaulukko[a].Position.Y;
98           
99            if (talonXetaisyys < 0)
100            {
101                talonXetaisyys = talonXetaisyys * -1;
102            }
103            if (talonYetaisyys < 0)
104            {
105                talonYetaisyys = talonYetaisyys * -1;
106            }
107            double talonEtaisyys = talonXetaisyys + talonYetaisyys;
108            if (talonEtaisyys < 300)
109            {
110                ihmisia++;
111            }
112        }       
113        ihmisiaPysakilla.Add(laatikko, ihmisia);
114    }
115
116    void Aloita()
117    {
118       
119
120        PhysicsObject vasenReuna = Level.CreateLeftBorder();
121        vasenReuna.Restitution = 1.0;
122        vasenReuna.IsVisible = false;
123        PhysicsObject  oikeaReuna= Level.CreateRightBorder();
124        oikeaReuna.Restitution = 1.0;
125        oikeaReuna.IsVisible = false;
126        PhysicsObject ylaReuna = Level.CreateTopBorder();
127        ylaReuna.Restitution = 1.0;
128        ylaReuna.IsVisible = false;
129        PhysicsObject alaReuna = Level.CreateBottomBorder();
130        alaReuna.Restitution = 1.0;
131        alaReuna.IsVisible = false;
132        for (int a = 0; a < 10; a++)
133        {
134            LuoTalo();
135        }
136       
137        LuoLaatikko();
138        LuoLaatikko();
139        LuoLaatikko();
140        Camera.ZoomToLevel();
141       
142    }
143
144    void kasittele(PhysicsObject auto, PhysicsObject kohde)
145    {
146
147        /*Explosion rajahdys = new Explosion(10000.0);
148        rajahdys.Position = auto.Position;
149        Add(rajahdys);*/
150
151
152        if (kohde.Tag == "laatikko")
153        {
154            MessageDisplay.Add("Ihmisia pysäkillä" + ihmisiaPysakilla[kohde].ToString());
155            MessageDisplay.Add("Matkustajia linja-autossa" + matkustajat.ToString());
156
157            if (ihmisiaPysakilla[kohde] > 0)
158            {
159                matkustajat = matkustajat + ihmisiaPysakilla[kohde];
160                ihmisiaPysakilla[kohde] = 0;
161                voimaMittari.Value = matkustajat;
162            }
163            else
164            {
165                MessageDisplay.Add("Tämä pysäkki on tyhjä");
166            }
167            MessageDisplay.Add("Ihmisia pysäkillä" + ihmisiaPysakilla[kohde].ToString());
168            MessageDisplay.Add("Matkustajia linja-autossa" + matkustajat.ToString());
169
170        }
171    }
172
173    void LuoTalo()
174    {
175        PhysicsObject talo = new PhysicsObject(40.0, 40.0);
176        talo.Position = RandomGen.NextVector(Level.Right, Level.Bottom, Level.Left, Level.Top);
177        talo.Tag = "talo";
178        talo.Color = Color.Yellow;
179        talotaulukko[talojenlukumäärä] = talo;
180        talojenlukumäärä++;
181        Add(talo);
182    }
183}
Note: See TracBrowser for help on using the repository browser.