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

Revision 1471, 6.9 KB checked in by jumakall, 10 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5using System.Collections.Generic;
6using Jypeli.ScreenObjects;
7
8public class Peli : TopDownPhysicsGame
9{
10    PhysicsObject laatikko;
11    Automobile auto;
12    Dictionary<PhysicsObject, int> ihmisiaPysakilla;
13    int matkustajat;
14    DoubleMeter voimaMittari;
15    PhysicsObject[] talotaulukko = new PhysicsObject[100];
16    int talojenlukumäärä = 0;
17    int huijauskoodi = 0;
18    Timer huijaustimer;
19
20    protected override void Begin()
21    {
22        Timer huijaustimer = new Timer();
23        KineticFriction = 0.8; // Asetetaan kitka
24        Widget ruutu2 = new Widget(10.00, 10.00);
25
26        ihmisiaPysakilla = new Dictionary<PhysicsObject, int>();
27
28        Automobile auto = new Automobile(40, 20);
29        auto.Mass = 200.0;
30        auto.Color = new Color(192, 192, 255);
31        Add(auto);
32
33        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
34        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
35        Keyboard.Listen(Key.Up, ButtonState.Down, kiihdyta, "Kiihdytä", auto);
36        Keyboard.Listen(Key.Down, ButtonState.Down, jarruta, "Jarruta", auto);
37        Keyboard.Listen(Key.Left, ButtonState.Down, kaanny, "Käänny vasemmalle", auto, Angle.Degrees(1));
38        Keyboard.Listen(Key.Right, ButtonState.Down, kaanny, "Käänny oikealle", auto, Angle.Degrees(-1));
39        Keyboard.Listen(Key.B, ButtonState.Pressed, huijaus, "", Key.B);
40        Keyboard.Listen(Key.A, ButtonState.Pressed, huijaus, "", Key.A);
41        Keyboard.Listen(Key.L, ButtonState.Pressed, huijaus, "", Key.L);
42
43
44        ShowControlHelp();
45
46        Aloita();
47        MessageDisplay.Add("Debug viestit käytössä");
48       
49
50
51        AddCollisionHandler(auto, kasittele);
52        matkustajat = 0;
53
54        //Auton täyttömittari
55        voimaMittari = new DoubleMeter(10);
56        voimaMittari.MaxValue = 30;
57        Jypeli.Widgets.BarGauge voimaPalkki = new Jypeli.Widgets.BarGauge(20, 150);
58        voimaPalkki.BindTo(voimaMittari);
59        Add(voimaPalkki);
60
61
62        voimaPalkki.X = (0.88 * Screen.RightSafe);
63        voimaPalkki.Y = (0.94 * Screen.TopSafe);
64        voimaPalkki.BarColor = Color.Green;
65        voimaPalkki.BorderColor = Color.White;
66        voimaPalkki.Angle = Angle.Degrees(90);
67
68        voimaMittari.Value = 0;
69
70        Label tekstikentta = new Label(50.0, 20.0, "Auton tila:");
71        Add(tekstikentta);
72        tekstikentta.X = Screen.Right - 78;
73        tekstikentta.Y = Screen.Top - 10;
74        Mouse.IsCursorVisible = true;     
75
76
77
78       
79    }
80
81    void huijaus(Key nappain)
82    {
83        if (nappain == Key.B && huijauskoodi == 0)
84        {
85            huijauskoodi++;
86            Timer.SingleShot(2.0, nollaahuijaus);
87            /*
88            huijaustimer.Interval = 2;
89            huijaustimer.Trigger += nollaahuijaus;
90            huijaustimer.Start();*/
91        }
92
93        if (nappain == Key.A && huijauskoodi == 1)
94        {
95            huijauskoodi++;
96        }       
97
98        if (nappain == Key.L && huijauskoodi == 2)
99        {
100            huijauskoodi++;
101        }
102       
103        if (nappain == Key.L && huijauskoodi == 3)
104        {
105            int a = 0;//huijaaus
106            MessageDisplay.Add("Huijari!!!");
107            huijauskoodi = 0;
108        }       
109    }
110    void nollaahuijaus()
111    {
112        huijauskoodi = 0;
113    }
114    void kiihdyta(Automobile auto)
115    {
116        auto.Accelerate(Time.SinceLastUpdate.TotalSeconds);
117    }
118
119    void jarruta(Automobile auto)
120    {
121        auto.Brake(Time.SinceLastUpdate.TotalSeconds);
122    }
123
124    void kaanny(Automobile auto, Angle kaannos)
125    {
126        auto.Turn(kaannos, Time.SinceLastUpdate.TotalSeconds);
127    }
128
129    void LuoLaatikko()
130    {
131        PhysicsObject laatikko = new PhysicsObject(40.0, 40.0);
132        laatikko.Position = RandomGen.NextVector(Level.Right, Level.Bottom, Level.Left, Level.Top);
133        laatikko.Tag = "laatikko";
134        Add(laatikko);
135        int ihmisia = 0;
136        for (int a = 0; a < talojenlukumäärä; a++)
137        {
138            double talonXetaisyys = laatikko.Position.X - talotaulukko[a].Position.X;
139            double talonYetaisyys = laatikko.Position.Y - talotaulukko[a].Position.Y;
140           
141            if (talonXetaisyys < 0)
142            {
143                talonXetaisyys = talonXetaisyys * -1;
144            }
145            if (talonYetaisyys < 0)
146            {
147                talonYetaisyys = talonYetaisyys * -1;
148            }
149            double talonEtaisyys = talonXetaisyys + talonYetaisyys;
150            if (talonEtaisyys < 300)
151            {
152                ihmisia++;
153            }
154        }       
155        ihmisiaPysakilla.Add(laatikko, ihmisia);
156    }
157
158    void Aloita()
159    {
160       
161
162        PhysicsObject vasenReuna = Level.CreateLeftBorder();
163        vasenReuna.Restitution = 1.0;
164        vasenReuna.IsVisible = false;
165        PhysicsObject  oikeaReuna= Level.CreateRightBorder();
166        oikeaReuna.Restitution = 1.0;
167        oikeaReuna.IsVisible = false;
168        PhysicsObject ylaReuna = Level.CreateTopBorder();
169        ylaReuna.Restitution = 1.0;
170        ylaReuna.IsVisible = false;
171        PhysicsObject alaReuna = Level.CreateBottomBorder();
172        alaReuna.Restitution = 1.0;
173        alaReuna.IsVisible = false;
174        for (int a = 0; a < 10; a++)
175        {
176            LuoTalo();
177        }
178       
179        LuoLaatikko();
180        LuoLaatikko();
181        LuoLaatikko();
182        Camera.ZoomToLevel();
183       
184    }
185
186    void kasittele(PhysicsObject auto, PhysicsObject kohde)
187    {
188
189        /*Explosion rajahdys = new Explosion(10000.0);
190        rajahdys.Position = auto.Position;
191        Add(rajahdys);*/
192
193
194        if (kohde.Tag == "laatikko")
195        {
196            MessageDisplay.Add("Ihmisia pysäkillä" + ihmisiaPysakilla[kohde].ToString());
197            MessageDisplay.Add("Matkustajia linja-autossa" + matkustajat.ToString());
198
199            if (ihmisiaPysakilla[kohde] > 0)
200            {
201                matkustajat = matkustajat + ihmisiaPysakilla[kohde];
202                ihmisiaPysakilla[kohde] = 0;
203                voimaMittari.Value = matkustajat;
204            }
205            else
206            {
207                MessageDisplay.Add("Tämä pysäkki on tyhjä");
208            }
209            MessageDisplay.Add("Ihmisia pysäkillä" + ihmisiaPysakilla[kohde].ToString());
210            MessageDisplay.Add("Matkustajia linja-autossa" + matkustajat.ToString());
211
212        }
213    }
214
215    void LuoTalo()
216    {
217        PhysicsObject talo = new PhysicsObject(40.0, 40.0);
218        talo.Position = RandomGen.NextVector(Level.Right, Level.Bottom, Level.Left, Level.Top);
219        talo.Tag = "talo";
220        talo.Color = Color.Yellow;
221        talotaulukko[talojenlukumäärä] = talo;
222        talojenlukumäärä++;
223        Add(talo);
224    }
225}
Note: See TracBrowser for help on using the repository browser.