source: 2010/23/rikaroih/Autopeli1/Peli.cs @ 10337

Revision 760, 7.6 KB checked in by rikaroih, 10 years ago (diff)

valmis peli

Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5
6namespace Autopeli1
7{
8    public class Peli : TopDownPhysicsGame
9    {
10        Sound musaa;
11
12        Angle kaantokulma = Angle.Degrees(5);
13
14        Automobile auto;
15        Automobile auto2;
16        Automobile auto3;
17
18        PhysicsObject pallo;
19        PhysicsObject pallo2;
20        PhysicsObject pallo3;
21        PhysicsObject pallo4;
22
23        SoundEffect taustamusiikki;
24
25        int TyyppejaHengissa = 0;
26
27        protected override void Begin()
28        {
29            KineticFriction = 10.0; // Asetetaan kitka
30            Camera.ZoomToLevel();
31            aloitaPeliAlusta();
32            AloitaMusiikkiAlusta(new Timer());
33     
34        }
35
36        void AloitaMusiikkiAlusta(Timer t)
37        {
38            taustamusiikki = LoadSoundEffect("taustamusiikki");
39            taustamusiikki.Play();
40        }
41
42        void lisaaAjastin()
43        {
44            Timer ajastin = new Timer();
45            ajastin.Interval = 40;
46            ajastin.Trigger += PeliVoitettu;
47            Add(ajastin);
48            ajastin.Start();
49        }
50
51        /// <summary>
52        /// Tapahtuu kun ajastin on kulkenut riittävästi ja peli päättyy.
53        /// </summary>
54        /// <param name="t"></param>
55        void PeliVoitettu(Timer t)
56        {
57            MessageDisplay.TextColor = Color.White;
58            if (TyyppejaHengissa > 0)
59            {
60                Level.Background.Image = LoadImage("starwars2");
61            }
62            else
63            {
64                Level.Background.Image = LoadImage("terminator100"); 
65            }
66        }
67
68        void aloitaPeliAlusta()
69        {
70            ClearAll();
71            lisaaAjastin();
72            lisaaAutotJaPallot();
73            lisaaNappaimet();
74            AddText();
75            AddCollisionHandler(auto, collisionOfAuto);
76            AddCollisionHandler(auto2, collisionOfAuto);
77            AddCollisionHandler(auto3, collisionOfAuto);
78            Level.CreateBorders();
79            Level.BackgroundColor = Color.Black;
80            Level.Background.Image = LoadImage("avaruus");
81
82        }
83
84        void AddText()
85        {
86            TextDisplay MISSION = new TextDisplay();
87            MISSION.TextColor = Color.Red;
88            MISSION.Text = "TEHTÄVÄ:\n" +
89                "VÄISTELE METEORIITTEJÄ TAI NOUTAJA TULEE!!!";
90            MISSION.X = Screen.Center.X + 250;
91            MISSION.Y = Screen.Center.Y - 300;
92
93            Add(MISSION);
94        }
95
96        void lisaaAutotJaPallot()
97        {
98            pallo = new PhysicsObject(150.0, 150.0);
99            pallo.Image = LoadImage("FUUU meteor");
100            pallo.Shape = Shapes.Circle;
101            pallo.Color = Color.Pink;
102            pallo.X = -200.0;
103            pallo.Y = 0.0;
104            pallo.Restitution = 1.0;
105            Vector impulssi = new Vector(-50.0, -50.0);
106            pallo.Hit(impulssi);
107            Add(pallo);
108
109            pallo4 = new PhysicsObject(150.0, 150.0);
110            pallo4.Image = LoadImage("FUUU meteor");
111            pallo4.Shape = Shapes.Circle;
112            pallo4.Color = Color.Brown;
113            pallo4.X = -250.0;
114            pallo4.Y = 100.0;
115            pallo4.Restitution = 1.0;
116            Vector impulssi4 = new Vector(-50.0, -50.0);
117            pallo4.Hit(impulssi);
118            Add(pallo4);
119
120            pallo2 = new PhysicsObject(150.0, 150.0);
121            pallo2.Image = LoadImage("FUUU meteor");
122            pallo2.Shape = Shapes.Circle;
123            pallo2.Color = Color.Violet;
124            pallo2.X = -200.0;
125            pallo2.Y = 200.0;
126            pallo2.Restitution = 1.0;
127            Vector impulssi2 = new Vector(50.0, 50.0);
128            pallo2.Hit(impulssi2);
129            Add(pallo2);
130
131            pallo3 = new PhysicsObject(150.0, 150.0);
132            pallo3.Image = LoadImage("FUUU meteor");
133            pallo3.Shape = Shapes.Circle;
134            pallo3.X = -200.0;
135            pallo3.Color = Color.Red;
136            pallo3.Y = -200.0;
137            pallo3.Restitution = 1.0;
138            Vector impulssi3 = new Vector(50.0, -50.0);
139            pallo3.Hit(impulssi3);
140            Add(pallo3);
141
142
143
144
145            auto = LuoAuto("UFO3000", 50, 100);
146            auto2 = LuoAuto("UFO4000", 200, 100);
147            auto3 = LuoAuto("UFO2000", -100, 100);
148
149            TyyppejaHengissa = 3;
150        }
151
152        Automobile LuoAuto(string tekstuuri, double x, double y)
153        {
154            Automobile uusiauto = new Automobile(80, 80);
155            uusiauto.Image = LoadImage(tekstuuri);
156            uusiauto.Mass = 2.0;
157            uusiauto.Color = new Color(192, 192, 255);
158            uusiauto.Maneuverability = Angle.Degrees(120);
159            Add(uusiauto);
160            uusiauto.Y = x;
161            uusiauto.X = y;
162            return uusiauto;
163        }
164
165        void lisaaNappaimet()
166        {
167            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
168            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
169           
170            // Pelaaja 1
171            Keyboard.Listen(Key.Up, ButtonState.Down, kiihdyta, "Kiihdytä", auto);
172            Keyboard.Listen(Key.Left, ButtonState.Down, kaanny, "Käänny vasemmalle", auto, kaantokulma);
173            Keyboard.Listen(Key.Right, ButtonState.Down, kaanny, "Käänny oikealle", auto, -kaantokulma);
174            Keyboard.Listen(Key.Down, ButtonState.Down, jarruta, "Jarruta", auto);
175
176            Keyboard.Listen(Key.W, ButtonState.Down, kiihdyta, "Kiihdytä", auto2);
177            Keyboard.Listen(Key.A, ButtonState.Down, kaanny, "Käänny vasemmalle", auto2, kaantokulma);
178            Keyboard.Listen(Key.D, ButtonState.Down, kaanny, "Käänny oikealle", auto2, -kaantokulma);
179            Keyboard.Listen(Key.S, ButtonState.Down, jarruta, "Jarruta", auto2);
180
181            Keyboard.Listen(Key.Enter, ButtonState.Pressed, aloitaPeliAlusta, "Aloita peli alusta");
182            ControllerOne.Listen(Button.Start, ButtonState.Pressed, aloitaPeliAlusta, "Aloita peli alusta");
183
184            ControllerOne.Listen(Button.RightTrigger, ButtonState.Down, kiihdyta, "kiihdyta", auto3);
185            ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, kaanny, "Käänny vasemmalle", auto3, kaantokulma);
186            ControllerOne.Listen(Button.DPadRight, ButtonState.Down, kaanny, "Käänny oikealle", auto3, -kaantokulma);
187            ControllerOne.Listen(Button.LeftTrigger, ButtonState.Down, jarruta, "Jarruta", auto3);
188        }
189
190        void kiihdyta(Automobile auto)
191        {
192            auto.Accelerate(Time.SinceLastUpdate.TotalSeconds);
193        }
194
195        void jarruta(Automobile auto)
196        {
197            auto.Brake(Time.SinceLastUpdate.TotalSeconds);
198        }
199
200        void kaanny(Automobile auto, Angle kaannos)
201        {
202            auto.Turn(kaannos, Time.SinceLastUpdate.TotalSeconds);
203        }
204        void collisionOfAuto(PhysicsObject auto, PhysicsObject target)
205        {
206            if (target.Equals(pallo) || target.Equals(pallo2) || target.Equals(pallo3) || target.Equals(pallo4))
207            {
208                TyyppejaHengissa -= 1;
209                Explosion rajahdys = new Explosion(200);
210                rajahdys.Position = auto.Position;
211                rajahdys.Force = 100;
212                Add(rajahdys);
213                auto.Destroy(); 
214               
215                if (TyyppejaHengissa == 0)
216                {
217                    PeliVoitettu(new Timer());
218                    return;
219                }
220            }
221        }
222       
223    }   
224}
Note: See TracBrowser for help on using the repository browser.