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

Revision 8395, 4.6 KB checked in by jotapoti, 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    LaserGun 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        kissa.Tag = "pelaaja";
35        kissanAse = new LaserGun(20, 5);
36
37        //kissanAse.ProjectileCollision = CollisionHandler.DestroyObject;
38
39        kissanAse.X = 10.0;
40        kissanAse.Y = -5.0;
41
42        kissanAse.FireRate = 5.0;
43
44        kissanAse.AmmoIgnoresExplosions = true;
45
46        kissanAse.ProjectileCollision = AmmusOsui;
47
48        //loputtomat ammukset:
49        kissanAse.InfiniteAmmo = true;
50
51        kissa.Add(kissanAse);
52
53        Timer ajastin = new Timer();
54        ajastin.Interval = 1;
55        ajastin.Timeout += LuoBot;
56        ajastin.Start();
57        Level.Width = 1500;
58        Level.Height = 1500;
59        vasenReuna = Level.CreateLeftBorder();
60        vasenReuna.Restitution = 0.0;
61        vasenReuna.KineticFriction = 0.0;
62        vasenReuna.IsVisible = false;
63
64        oikeaReuna = Level.CreateRightBorder();
65        oikeaReuna.Restitution = 0.0;
66        oikeaReuna.KineticFriction = 0.0;
67        oikeaReuna.IsVisible = false;
68
69        PhysicsObject ylaReuna = Level.CreateTopBorder();
70        ylaReuna.Restitution = 0.0;
71        ylaReuna.KineticFriction = 0.0;
72        ylaReuna.IsVisible = false;
73
74        PhysicsObject alaReuna = Level.CreateBottomBorder();
75        alaReuna.Restitution = 0.0;
76        alaReuna.IsVisible = false;
77        alaReuna.KineticFriction = 0.0;
78
79        Level.Background.CreateStars(10000);
80        Camera.ZoomToLevel();
81    }
82    void AmmuAseella(LaserGun ase)
83    {
84        PhysicsObject ammus = ase.Shoot();
85
86        if (ammus != null)
87        {
88            //ammus.Size *= 9;
89            //ammus.Image = ...
90            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
91        }
92    }
93    void LisaaOhjaimet()
94    {
95        Keyboard.Listen(Key.A, ButtonState.Down,
96          LiikutaPelaajaa, null, new Vector(-1000, 0));
97        Keyboard.Listen(Key.A, ButtonState.Released,
98          LiikutaPelaajaa, null, Vector.Zero);
99
100        Keyboard.Listen(Key.D, ButtonState.Down,
101          LiikutaPelaajaa, null, new Vector(1000, 0));
102        Keyboard.Listen(Key.D, ButtonState.Released,
103      LiikutaPelaajaa, null, Vector.Zero);
104
105        Keyboard.Listen(Key.W, ButtonState.Down,
106          LiikutaPelaajaa, null, new Vector(0, 1000));
107        Keyboard.Listen(Key.W, ButtonState.Released,
108      LiikutaPelaajaa, null, Vector.Zero);
109
110        Keyboard.Listen(Key.S, ButtonState.Down,
111          LiikutaPelaajaa, null, new Vector(0, -1000));
112        Keyboard.Listen(Key.S, ButtonState.Released,
113      LiikutaPelaajaa, null, Vector.Zero);
114
115        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu", kissanAse);
116
117        Mouse.ListenMovement(0.1, tahtaa, "tähtää");
118
119        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
120        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
121    }
122
123    void tahtaa(AnalogState a)
124    {
125        Vector suunta = Mouse.PositionOnWorld - kissa.Position;
126        kissa.Angle = suunta.Angle;
127
128    }
129
130    void LiikutaPelaajaa(Vector vektori)
131    {
132        kissa.Velocity = vektori;
133
134    }
135    void LuoBot()
136    {
137        Botti bot = new Botti(50, 50);
138        Add(bot);
139        bot.Tag = "Botti";
140        bot.Shape = Shape.Circle;
141        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
142        bot.Brain = seuraajanAivot;
143    }
144    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
145    {
146        ammus.Destroy();
147        if (kohde.Tag.Equals("Botti"))
148        {
149            (kohde as Botti).Elamalaskuri.Value--;
150
151            if ((kohde as Botti).Elamalaskuri.Value == (kohde as Botti).Elamalaskuri.MinValue)
152            {
153                Explosion rajahdys = new Explosion(50);
154                rajahdys.Position = kohde.Position;
155                Add(rajahdys);
156            }
157               
158        }
159    }
160
161}
Note: See TracBrowser for help on using the repository browser.