source: 2013/24/EeroF/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1.cs @ 4082

Revision 4082, 8.0 KB checked in by eefadjuk, 6 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9
10
11public class FysiikkaPeli1 : PhysicsGame
12{
13    IntMeter pisteLaskuri;
14    PhysicsObject Mikko;
15    Image mikkokuva = LoadImage("Mikko3");
16    Image taustaKuva = LoadImage("ruoho4");
17    Image omenakuva = LoadImage("omena");
18    Image hamiskuva = LoadImage("Hamis");
19    DoubleMeter elamaLaskuri;
20    AssaultRifle pelaajan1Ase;
21    public override void Begin()     
22    {
23       
24     
25        LuoPelaaja();
26        LuoKentta();
27        AsetaOhjaimet();
28        LuoPistelaskuri();
29        LuoElamaLaskuri();
30     Level.Background.Image = taustaKuva;
31     Level.Background.TileToLevel();
32        Camera.Follow(Mikko);
33        AddCollisionHandler(Mikko, "Omena", CollisionHandler.DestroyTarget);
34        AddCollisionHandler(Mikko, "Parannus", CollisionHandler.DestroyTarget);
35        AddCollisionHandler(Mikko, "Parannus", Lisaa5Pistetta);
36        AddCollisionHandler(Mikko, "Parannus", ParannaAsetta);
37        AddCollisionHandler(Mikko, "Omena", LisaaPisteita);
38        AddCollisionHandler(Mikko, "Omena", LisaaElamaa);
39        AddCollisionHandler(Mikko, "Hamis", VahennaElamaa);
40
41    }
42
43    void LisaaPisteita(PhysicsObject tormaaja, PhysicsObject kohde)
44    {
45        pisteLaskuri.Value++;
46    }
47
48    void Lisaa5Pistetta(PhysicsObject tormaaja, PhysicsObject kohde)
49    {
50        pisteLaskuri.Value++;
51        pisteLaskuri.Value++;
52        pisteLaskuri.Value++;
53        pisteLaskuri.Value++;
54        pisteLaskuri.Value++;
55    }
56void LuoPistelaskuri()
57{
58    pisteLaskuri = new IntMeter(0);               
59     
60    Label pisteNaytto = new Label(); 
61    pisteNaytto.X = Screen.Left + 100;
62    pisteNaytto.Y = Screen.Top - 100;
63    pisteNaytto.TextColor = Color.Black;
64    pisteNaytto.Color = Color.White;
65    pisteNaytto.Title = "XP";
66
67    pisteNaytto.BindTo(pisteLaskuri);
68    Add(pisteNaytto);
69}
70   
71
72    void AsetaOhjaimet()
73    {   PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
74        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit,"Lopeta peli" );
75        Keyboard.Listen(Key.Up, ButtonState.Down, PelaajaKavelee,"Pelaaja liikkuu", Mikko);
76        Keyboard.Listen(Key.Up, ButtonState.Released, PysaytaPelaaja, null, Mikko);
77        Keyboard.Listen(Key.Left, ButtonState.Released, PysaytaPelaaja, null, Mikko);
78        Keyboard.Listen(Key.Right, ButtonState.Released, PysaytaPelaaja, null, Mikko);
79        Keyboard.Listen(Key.Right, ButtonState.Down, KaantyyOikealle, "Pelaaja kääntyy", Mikko);
80        Keyboard.Listen(Key.Left, ButtonState.Down, KaantyyVasemmalle, "Pelaaja kääntyy", Mikko);
81        Keyboard.Listen(Key.Space, ButtonState.Down, Ampuu, "Ampuu", Mikko);
82    }
83    void PelaajaKavelee(PhysicsObject Mikko)
84    {
85
86        Vector pelaajanSuunta = Vector.FromLengthAndAngle(250.0, Mikko.Angle);
87        Mikko.Velocity = pelaajanSuunta;
88
89    }
90    void PysaytaPelaaja(PhysicsObject Mikko)
91    {
92        Vector nopeus = Vector.Zero;
93        Mikko.Velocity = nopeus;
94        Mikko.AngularVelocity = 0.0;
95
96    }
97    void KaantyyOikealle(PhysicsObject Mikko)
98    {
99        Mikko.AngularVelocity = 7.5;
100    }
101    void KaantyyVasemmalle(PhysicsObject Mikko)
102    {
103        Mikko.AngularVelocity = -7.5;
104    }
105    void Ampuu(PhysicsObject Mikko)
106    {
107        PhysicsObject ammus = pelaajan1Ase.Shoot();
108
109        if (ammus != null)
110        {
111            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
112            ammus.Mass = 100;
113        }
114    }
115
116    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
117    {
118        ammus.Destroy();
119       
120        if (kohde is Vihu)
121        {
122            Vihu hamis = kohde as Vihu;
123            hamis.ElamaLaskuri.Value -= 1;
124        }
125    }
126
127
128    void LuoKentta()
129    {
130        Level.Width = 10000;
131        Level.Height = 10000;
132
133
134        for (int i = 0; i < 100; i++)
135        {
136            LuoOmena();
137        }
138
139        for (int i = 0; i < 10; i++)
140        {
141
142            LuoHamis();
143
144
145        }
146        for (int i = 0; i < 5; i++)
147        {
148            LuoParannus();
149        }
150
151
152
153    }
154    void LuoOmena()
155    {
156
157        int luku = RandomGen.NextInt(-5000, 5000);
158      int luku2 = RandomGen.NextInt( -5000, 5000 );
159       PhysicsObject  Omena = new PhysicsObject (15, 15);
160      Omena.Image = omenakuva;
161       Omena.Tag = "Omena";
162       Omena.Shape = Shape.Circle;
163       Omena.Color = Color.Red;
164       Omena.X = luku;
165       Omena.Y = luku2;
166       Omena.Mass = 100000000000;
167       Add(Omena);
168       
169       
170       
171    }
172    void LuoElamaLaskuri()
173    {
174        elamaLaskuri = new DoubleMeter(10);
175        elamaLaskuri.MaxValue = 100;
176        elamaLaskuri.LowerLimit += ElamaLoppui;
177
178        ProgressBar elamaPalkki = new ProgressBar(150, 20);
179        elamaPalkki.X = Screen.Left + 150;
180        elamaPalkki.Y = Screen.Top - 20;
181        elamaPalkki.BindTo(elamaLaskuri);
182        elamaPalkki.Color = Color.Transparent;
183        elamaPalkki.BarColor = Color.Red;
184        elamaPalkki.BorderColor = Color.Black;
185        Add(elamaPalkki);
186    }
187    void LuoElamaLaskurivihkulle( Vihu vihu )
188    {
189        ProgressBar elamaPalkki = new ProgressBar(150, 20);
190        elamaPalkki.Y = 40;
191        elamaPalkki.BindTo(vihu.ElamaLaskuri);
192        elamaPalkki.Color = Color.Transparent;
193        elamaPalkki.BarColor = Color.Blue;
194        elamaPalkki.BorderColor = Color.Black;
195        vihu.Add(elamaPalkki);
196    }
197    void ElamaLoppui()
198    {
199        MessageDisplay.Add("Elämät loppuivat, voi voi.");
200        Mikko.Destroy();
201    }
202    void LisaaElamaa(PhysicsObject tormaaja, PhysicsObject kohde)
203    {
204        elamaLaskuri.Value++;
205    }
206    void VahennaElamaa(PhysicsObject tormaaja, PhysicsObject kohde)
207    {
208        elamaLaskuri.Value--;
209    }
210    void LuoHamis()
211    {
212        Vihu Hamis = new Vihu(30, 30);
213        Hamis.Color = Color.Black;
214        Hamis.Tag = "Hamis";
215
216        FollowerBrain aivot = new FollowerBrain(Mikko);
217        Hamis.Brain = aivot;
218        aivot.Speed = 100;
219        aivot.Active = true;
220
221        Hamis.Image=hamiskuva;
222        Hamis.Mass = 0.0000001;
223     
224        int luku = RandomGen.NextInt(-5000, 5000);
225        int luku2 = RandomGen.NextInt(-5000, 5000);
226        Hamis.X = luku;
227        Hamis.Y = luku2;
228        Add (Hamis);
229
230        LuoElamaLaskurivihkulle(Hamis);
231    }
232    void LuoParannus()
233    {
234        int luku = RandomGen.NextInt(-5000, 5000);
235        int luku2 = RandomGen.NextInt(-5000, 5000);
236        PhysicsObject Parannus = new PhysicsObject(15, 15);
237       // Parannus.Image = ;
238        Parannus.Tag = "Parannus";
239        Parannus.Shape = Shape.Star;
240        Parannus.Color = Color.Yellow;
241        Parannus.X = luku;
242        Parannus.Y = luku2;
243        Add(Parannus);
244    }
245
246    void LuoPelaaja()
247    {
248        Mikko = new PhysicsObject(70, 52.5);
249        Mikko.Image = mikkokuva;
250        Add(Mikko);
251        pelaajan1Ase = new AssaultRifle(30, 10);
252      //  pelaajan1Ase.
253        pelaajan1Ase.ProjectileCollision = AmmusOsui;
254        pelaajan1Ase.FireRate = 2;
255
256        pelaajan1Ase.Power.DefaultValue = 300;
257        Mikko.Add(pelaajan1Ase);
258        pelaajan1Ase.Y = -10;
259        pelaajan1Ase.IsVisible = false;
260    }
261    void ParannaAsetta(PhysicsObject tormaaja, PhysicsObject kohde)
262    {
263        pelaajan1Ase.FireRate += 1;
264        pelaajan1Ase.Power.Value += 10;
265        pelaajan1Ase.Power.DefaultValue += 10;
266    }
267
268
269    void Randomgen()
270    {
271        //  int luku = RandomGen.NextInt( 100 ); (pienempi kuin 100)
272        //int luku = RandomGen.NextInt( 50, 1000 ); (väliltä 50-999)
273    }
274
275
276}
277class Vihu : PhysicsObject
278{
279    private IntMeter elamaLaskuri = new IntMeter(5, 0, 5);
280    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
281
282    public Vihu(double leveys, double korkeus)
283        : base(leveys, korkeus)
284    {
285        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
286   
287    }
288}
Note: See TracBrowser for help on using the repository browser.