source: 2016/koodauskerho/AaroA/FysiikkaPeli2/FysiikkaPeli2/FysiikkaPeli2/FysiikkaPeli2.cs @ 8381

Revision 8381, 3.7 KB checked in by tesatapa, 2 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class FysiikkaPeli2 : PhysicsGame
10{
11    PhysicsObject kissa = new PhysicsObject(100, 50);
12    Image kissankuva = LoadImage("MLGKissa");
13    Cannon kissanAse;
14    PhysicsObject vasenReuna;
15    PhysicsObject oikeaReuna;
16
17    public override void Begin()
18    {
19        IsMouseVisible = true;
20        LuoKentta();
21        LisaaOhjaimet();
22    }
23
24     void LuoKentta()
25     {
26            kissa = new PhysicsObject(40, 20);
27
28        kissa.CanRotate = false;
29            kissa.Image = kissankuva;
30            kissa.Shape = Shape.Circle;
31            kissa.Mass = 10.0;
32            kissa.Size = new Vector(150, 100);
33            Add(kissa);
34
35        kissanAse = new Cannon(50, 10);
36
37        kissanAse.ProjectileCollision = CollisionHandler.DestroyObject;
38
39        kissanAse.X = 10.0;
40        kissanAse.Y = -5.0;
41
42        kissanAse.FireRate = 3.0;
43
44        kissanAse.AmmoIgnoresExplosions = true;
45
46        //Ammusten määrä aluksi:
47        kissanAse.Ammo.Value = 1000;
48
49        //loputtomat ammukset:
50        kissanAse.InfiniteAmmo = true;
51
52        kissa.Add(kissanAse);
53
54        vasenReuna = Level.CreateLeftBorder();
55            vasenReuna.Restitution = 0.0;
56            vasenReuna.KineticFriction = 0.0;
57            vasenReuna.IsVisible = false;
58
59            oikeaReuna = Level.CreateRightBorder();
60            oikeaReuna.Restitution = 0.0;
61            oikeaReuna.KineticFriction = 0.0;
62            oikeaReuna.IsVisible = false;
63
64            PhysicsObject ylaReuna = Level.CreateTopBorder();
65            ylaReuna.Restitution = 0.0;
66            ylaReuna.KineticFriction = 0.0;
67            ylaReuna.IsVisible = false;
68
69            PhysicsObject alaReuna = Level.CreateBottomBorder();
70            alaReuna.Restitution = 0.0;
71            alaReuna.IsVisible = false;
72            alaReuna.KineticFriction = 0.0;
73
74        Level.Background.CreateStars( 10000 );
75        Camera.ZoomToLevel();
76    }
77    void AmmuAseella(Cannon ase)
78    {
79        PhysicsObject ammus = ase.Shoot();
80
81        if (ammus != null)
82        {
83            //ammus.Size *= 9;
84            //ammus.Image = ...
85            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
86        }
87    }
88    void LisaaOhjaimet()
89    {
90        Keyboard.Listen(Key.A, ButtonState.Down,
91          LiikutaPelaajaa, null, new Vector(-1000, 0));
92        Keyboard.Listen(Key.A, ButtonState.Released,
93          LiikutaPelaajaa, null, Vector.Zero);
94
95        Keyboard.Listen(Key.D, ButtonState.Down,
96          LiikutaPelaajaa, null, new Vector(1000, 0));
97        Keyboard.Listen(Key.D, ButtonState.Released,
98      LiikutaPelaajaa, null, Vector.Zero);
99
100        Keyboard.Listen(Key.W, ButtonState.Down,
101          LiikutaPelaajaa, null, new Vector(0, 1000));
102        Keyboard.Listen(Key.W, ButtonState.Released,
103      LiikutaPelaajaa, null, Vector.Zero);
104
105        Keyboard.Listen(Key.S, ButtonState.Down,
106          LiikutaPelaajaa, null, new Vector(0, -1000));
107        Keyboard.Listen(Key.S, ButtonState.Released,
108      LiikutaPelaajaa, null, Vector.Zero);
109
110        Mouse.Listen( MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu", kissanAse);
111
112        Mouse.ListenMovement(0.1, tahtaa, "tähtää");
113
114        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
115        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
116    }
117
118    void tahtaa(AnalogState a) {
119        Vector suunta = Mouse.PositionOnWorld - kissa.Position;
120        kissa.Angle = suunta.Angle;
121
122    }
123
124    void LiikutaPelaajaa(Vector vektori)
125    {
126        kissa.Velocity = vektori;
127
128    }
129}
Note: See TracBrowser for help on using the repository browser.