source: joonas_s/Tankkipeli1/Peli.cs @ 398

Revision 398, 7.6 KB checked in by josojakk, 11 years ago (diff)
Line 
1#region Usings
2using System;
3using System.Collections.Generic;
4using System.Linq;
5using Microsoft.Xna.Framework;
6using Microsoft.Xna.Framework.Audio;
7using Microsoft.Xna.Framework.Content;
8using Microsoft.Xna.Framework.Graphics;
9using Microsoft.Xna.Framework.Input;
10using Microsoft.Xna.Framework.Media;
11using Jypeli;
12using Jypeli.ScreenObjects;
13using Jypeli.Assets;
14using AdvanceMath;
15using Physics2DDotNet;
16using Physics2DDotNet.Shapes;
17#endregion
18
19namespace Tankkipeli1
20{
21    public class Peli : PhysicsGame
22    {
23        PhysicsObject runko;
24        PhysicsObject pyora1;
25        PhysicsObject pyora2;
26        public  double MaxTorque = -20000000;
27        public  double MaxTorque1 = 20000000;
28       
29        PhysicsObject kuski;
30        PhysicsObject hyppyri;
31        PhysicsObject maa;
32        int kentannumero = 1;
33        int jyrkkyys = 100;
34        HighScoreList lista;
35
36        protected override void LoadContent()
37        {
38            lista = HighScoreList.LoadOrCreate(this, "topten.txt", 10);
39            alustakentta();
40                     
41            Controls.Listen(Keys.Left, ButtonPosition.Down, aja, "Liiku vasemmalle",MaxTorque1);
42            Controls.Listen(Keys.Right, ButtonPosition.Down, aja, "Liiku oikealle", MaxTorque);
43            Controls.Listen(Keys.Enter, ButtonPosition.Down, aloitauusikentta, "Aloita peli alusta");
44           
45            }
46
47        void alustakentta()
48        {
49            Level = new Level(this, 8000, Level.Height);
50           
51            Camera.StayInLevel = true;
52            lista.Hide();
53            Level.Background.Image = Content.Load<Texture2D>("tausta");
54            Level.Background.FitToLevel(Level);
55           
56            MessageDisplay.Add("kentta"+kentannumero);
57           
58            runko = new PhysicsObject(100, Shapes.CreateCircle(30));
59            Level.CreateBorder();
60            Gravity = new Vector2D(0, -150);
61
62            pyora1 = new PhysicsObject(500, Shapes.CreateCircle(16));
63            pyora1.AngularDamping = 0.8;
64            pyora2 = new PhysicsObject(500, Shapes.CreateCircle(16));
65            pyora2.AngularDamping = 0.8;
66            kuski = new PhysicsObject(100, Shapes.CreateCircle(25));
67
68            Camera.Follow(runko);
69           
70            LuoBensakanisteri(-200,100);
71            LuoTehopaketti(300, 100);
72            LuoMaali(Level.Right-500, 100);
73            for (int i = 0; i < kentannumero-1; i++)
74            {
75                Luohyppyri(RandomGen.NextDouble(Level.Left+ 500,Level.Right-500), 500);
76
77            }
78
79            for (int h = 0; h < kentannumero; h++)
80            {
81                LuoTehopaketti(RandomGen.NextDouble(Level.Left, Level.Right - 500), 100);
82
83            }
84            runko.X = Level.Left + 200;
85            pyora1.X = Level.Left + 200;
86            pyora2. X = Level.Left + 200;
87            kuski.X = Level.Left + 200;
88            runko.Y = Level.Bottom + 400;
89            pyora1.Y = Level.Bottom + 400;
90            pyora2.Y = Level.Bottom + 400;
91            kuski.Y = Level.Bottom + 400 ;
92           
93            Level.Objects.Add(runko);
94            Level.Objects.Add(pyora1);
95            Level.Objects.Attach(runko, new Vector2D(-27,-14), pyora1, new Vector2D(0,0), 0.01);
96            Level.Objects.Add(pyora2);
97            Level.Objects.Attach(runko, new Vector2D(27, -22), pyora2, new Vector2D(0, 0), 0.05);
98            Level.Objects.Add(kuski);
99            Level.Objects.Attach(runko, new Vector2D(4, 20), kuski, new Vector2D(0, 0), 0.0);
100   
101            runko.Texture = Content.Load<Texture2D>("kokeilumopo2");
102            pyora1.Texture = Content.Load<Texture2D>("kokeilumopo");
103            pyora2.Texture = Content.Load<Texture2D>("kokeilumopo");
104            kuski.Texture = Content.Load<Texture2D>("kuski");
105
106            AddCollisionHandler(kuski, tormaamaahan);
107
108            // Luodaan maasto
109            maa=Level.CreateGround(100, jyrkkyys += 50, 15, Color.LightGreen);
110           
111        }
112        void Luohyppyri(double X, double Y)
113    {
114            IShape hyppyri = Shapes.CreateFromTexture(Content.Load<Texture2D>("hyppyri1"), new Vector2D(300, 100), 1);
115            PhysicsObject hyppyri2 = new PhysicsObject(100, hyppyri);
116            hyppyri2.Texture = Content.Load<Texture2D>("hyppyri1");
117            Level.Objects.Add(hyppyri2);
118
119            hyppyri2.X = X;
120            hyppyri2.Y = Y;
121       
122    }
123
124        bool aja(ControlEvent e)
125        {
126            double vaanto = e.Parameter0.ToDouble();
127            pyora1.Body.ApplyTorque(vaanto);
128            pyora2.Body.ApplyTorque(vaanto);
129           
130           
131            return false;
132        }
133        bool aloitauusikentta(ControlEvent e)
134        {
135            alustakentta();
136            return false;
137        }
138
139        void LuoBensakanisteri(double X, double Y)
140        {
141            IShape bensaa = Shapes.CreateFromTexture(Content.Load<Texture2D>("bensakanisteri"), new Vector2D(30, 30), 1);
142            PhysicsObject bensakanisteri1 = new PhysicsObject(10,bensaa );
143            Level.Objects.Add(bensakanisteri1);
144            bensakanisteri1.Texture = Content.Load<Texture2D>("bensakanisteri");
145
146           
147            bensakanisteri1.X = X;
148            bensakanisteri1.Y = Y;
149                   
150        }
151        void LuoTehopaketti(double X, double Y)
152        {
153            IShape tehopaketti = Shapes.CreateFromTexture(Content.Load<Texture2D>("tehopaketti"), new Vector2D(30, 30), 1);
154            PhysicsObject tehopaketti1 = new PhysicsObject(10,tehopaketti);
155            Level.Objects.Add(tehopaketti1);
156            tehopaketti1.Texture = Content.Load<Texture2D>("tehopaketti");
157            AddCollisionHandler(tehopaketti1, lisaateho);
158
159            tehopaketti1.X = X;
160            tehopaketti1.Y = Y;
161        }
162        void lisaateho(Collision collision)
163        {
164            if (collision.Other == pyora2 || collision.Other == pyora1 || collision.Other == runko || collision.Other == kuski)
165            {
166                MaxTorque1 = MaxTorque1 + 10000;
167                collision.Obj.Destroy();
168                MessageDisplay.Add("Sait lisaa tehoa");
169
170                Controls.Listen(Keys.Right, ButtonPosition.Down, aja, "Liiku oikealle", MaxTorque);
171            }
172        }
173        void LuoMaali(double X, double Y)
174        {
175            IShape maali = Shapes.CreateFromTexture(Content.Load<Texture2D>("maali"), new Vector2D(250, 250), 1);
176            PhysicsObject maali1 = new PhysicsObject(10, maali);
177            Level.Objects.Add(maali1);
178            maali1.Texture = Content.Load<Texture2D>("maali");
179            AddCollisionHandler(maali1, lopetus);
180         
181            maali1.X = X;
182            maali1.Y = Y;
183           
184        }
185       
186        void lopetus(Collision collision)
187        {
188            if (collision.Other == pyora2 || collision.Other == pyora1 || collision.Other == runko || collision.Other == kuski)
189            {
190                MessageDisplay.Add("Loistavaa!");
191                kentannumero += 1;
192                jyrkkyys += 50;
193                MessageDisplay.Clear();
194                alustakentta();
195            }
196           
197        }
198        void tormaamaahan(Collision c)
199        {
200            if (c.Other == maa)
201            {
202                MessageDisplay.Add("Hävisit pelin!");
203                jyrkkyys = 100;
204                MaxTorque1 = 20000000;
205                Level = new Level(this);
206                lista.Show(kentannumero);
207                kentannumero = 0;
208
209                //Listalle(kentannumero);
210            }
211        }
212
213        /*void Listalle(int i)
214        {
215        }*/
216
217
218
219
220
221
222
223
224
225    }
226}
Note: See TracBrowser for help on using the repository browser.