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

Revision 1407, 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
73    void kiihdyta(Automobile auto)
74    {
75        auto.Accelerate(Time.SinceLastUpdate.TotalSeconds);
76    }
77
78    void jarruta(Automobile auto)
79    {
80        auto.Brake(Time.SinceLastUpdate.TotalSeconds);
81    }
82
83    void kaanny(Automobile auto, Angle kaannos)
84    {
85        auto.Turn(kaannos, Time.SinceLastUpdate.TotalSeconds);
86    }
87
88    void LuoLaatikko()
89    {
90        PhysicsObject laatikko = new PhysicsObject(40.0, 40.0);
91        laatikko.Position = RandomGen.NextVector(Level.Right, Level.Bottom, Level.Left, Level.Top);
92        laatikko.Tag = "laatikko";
93        Add(laatikko);
94        int ihmisia = 0;
95        for (int a = 0; a < talojenlukumäärä; a++)
96        {
97            double talonXetaisyys = laatikko.Position.X - talotaulukko[a].Position.X;
98            double talonYetaisyys = laatikko.Position.Y - talotaulukko[a].Position.Y;
99           
100            if (talonXetaisyys < 0)
101            {
102                talonXetaisyys = talonXetaisyys * -1;
103            }
104            if (talonYetaisyys < 0)
105            {
106                talonYetaisyys = talonYetaisyys * -1;
107            }
108            double talonEtaisyys = talonXetaisyys + talonYetaisyys;
109            if (talonEtaisyys < 300)
110            {
111                ihmisia++;
112            }
113        }       
114        ihmisiaPysakilla.Add(laatikko, ihmisia);
115    }
116
117    void Aloita()
118    {
119       
120
121        PhysicsObject vasenReuna = Level.CreateLeftBorder();
122        vasenReuna.Restitution = 1.0;
123        vasenReuna.IsVisible = false;
124        PhysicsObject  oikeaReuna= Level.CreateRightBorder();
125        oikeaReuna.Restitution = 1.0;
126        oikeaReuna.IsVisible = false;
127        PhysicsObject ylaReuna = Level.CreateTopBorder();
128        ylaReuna.Restitution = 1.0;
129        ylaReuna.IsVisible = false;
130        PhysicsObject alaReuna = Level.CreateBottomBorder();
131        alaReuna.Restitution = 1.0;
132        alaReuna.IsVisible = false;
133        for (int a = 0; a < 10; a++)
134        {
135            LuoTalo();
136        }
137       
138        LuoLaatikko();
139        LuoLaatikko();
140        LuoLaatikko();
141        Camera.ZoomToLevel();
142       
143    }
144
145    void kasittele(PhysicsObject auto, PhysicsObject kohde)
146    {
147
148        /*Explosion rajahdys = new Explosion(10000.0);
149        rajahdys.Position = auto.Position;
150        Add(rajahdys);*/
151
152
153        if (kohde.Tag == "laatikko")
154        {
155            MessageDisplay.Add("Ihmisia pysäkillä" + ihmisiaPysakilla[kohde].ToString());
156            MessageDisplay.Add("Matkustajia linja-autossa" + matkustajat.ToString());
157
158            if (ihmisiaPysakilla[kohde] > 0)
159            {
160                matkustajat = matkustajat + ihmisiaPysakilla[kohde];
161                ihmisiaPysakilla[kohde] = 0;
162                voimaMittari.Value = matkustajat;
163            }
164            else
165            {
166                MessageDisplay.Add("Tämä pysäkki on tyhjä");
167            }
168            MessageDisplay.Add("Ihmisia pysäkillä" + ihmisiaPysakilla[kohde].ToString());
169            MessageDisplay.Add("Matkustajia linja-autossa" + matkustajat.ToString());
170
171        }
172    }
173
174    void LuoTalo()
175    {
176        PhysicsObject talo = new PhysicsObject(40.0, 40.0);
177        talo.Position = RandomGen.NextVector(Level.Right, Level.Bottom, Level.Left, Level.Top);
178        talo.Tag = "talo";
179        talo.Color = Color.Yellow;
180        talotaulukko[talojenlukumäärä] = talo;
181        talojenlukumäärä++;
182        Add(talo);
183    }
184}
Note: See TracBrowser for help on using the repository browser.