source: 2014/24/PietuR/Ukkelipeli/Ukkelipeli/Ukkelipeli/Ukkelipeli.cs @ 4962

Revision 4962, 9.0 KB checked in by pimaeeru, 6 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 Ukkelipeli : PhysicsGame
10{
11    bool voikoHypata = true;
12    PhysicsObject Pallo = new PhysicsObject(30, 30);
13
14    PhysicsObject Ukkeli = new PhysicsObject(45, 80);
15
16    PhysicsObject Miekka;
17
18    Image Tikarinkuva = LoadImage("Tikari");
19
20    FollowerBrain seuraajanAivot;
21
22    AxleJoint liitos;
23
24    public override void Begin()
25    {
26
27        Image Ukkelinkuva = LoadImage("Ukkeli");
28        Image Miekankuva = LoadImage("Miekka");
29        Image Tahtaimenkuva = LoadImage("Tahtain");
30        Image Tikarinkuva = LoadImage("Tikari");
31
32        TileMap ruudut = TileMap.FromLevelAsset("Kentta");
33        ruudut.SetTileMethod('P', LuoUkkeli);
34        ruudut.SetTileMethod('A', LuoPalikka, "");
35        ruudut.SetTileMethod('L', LuoPalikka, "lattia");
36        ruudut.Execute();
37
38        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
39        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
40        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
41
42
43
44        Level.Background.CreateGradient(RandomGen.NextColor(), RandomGen.NextColor());
45
46        /*PhysicsStructure Tyyppi = new PhysicsStructure();
47        Tyyppi.Position = new Vector(0, -290);
48
49        PhysicsObject Ukkeli = new PhysicsObject(45, 80);
50        Ukkeli.Mass = 15;
51        Ukkeli.Position = new Vector(0, 0);
52        Ukkeli.Image = Ukkelinkuva;
53        Ukkeli.CanRotate = false;
54        Ukkeli.Shape = Shape.FromImage(Ukkelinkuva);
55        Ukkeli.CollisionIgnoreGroup = 1;
56        Tyyppi.Add(Ukkeli);
57
58
59        PhysicsObject Miekka = new PhysicsObject(139.5, 15);
60        Miekka.Mass = 0.01;
61        Miekka.Shape = Shape.FromImage(Miekankuva);
62        Miekka.Image = Miekankuva;
63        Miekka.Position = new Vector(70, -20);
64        Miekka.IgnoresCollisionResponse = true;
65        Miekka.CollisionIgnoreGroup = 1;
66        Tyyppi.Add(Miekka);
67
68        Pallo.Mass = 0.1;
69        Pallo.Image = Tahtaimenkuva;
70        Pallo.Shape = Shape.FromImage(Tahtaimenkuva);
71        Pallo.Position = new Vector(140, -15);
72        Pallo.CollisionIgnoreGroup = 1;
73        Add(Pallo);
74        Pallo.IsVisible = true;
75        Pallo.CanRotate = true;
76        Pallo.IgnoresCollisionResponse = true;
77        Pallo.IgnoresGravity = true;
78        Mouse.IsCursorVisible = false;
79        Mouse.ListenMovement(0.1, KuunteleLiiketta, null);
80
81
82        FollowerBrain seuraajanAivot = new FollowerBrain(Pallo);
83        Miekka.Brain = seuraajanAivot;
84        seuraajanAivot.Speed = 10000;
85
86        //LiitaYhteen(Miekka, Ukkeli, new Vector(-69.75, 0));
87        //LiitaYhteen(Miekka, Pallo, new Vector(69.75, 0));
88
89
90        TileMap ruudut = TileMap.FromLevelAsset("kentta");
91        */
92
93
94        //Surfaces s = Level.CreateBorders(1.0, true, RandomGen.NextColor());
95        //ruudut.Tag = "lattia";
96        AddCollisionHandler(Ukkeli, "lattia", delegate(PhysicsObject tormaaja, PhysicsObject kohde) { voikoHypata = true; });
97        //AddCollisionHandler(Pallo, "lattia", lattianlapi);
98
99
100        Gravity = new Vector(0, -2000);
101
102        Keyboard.Listen(Key.A, ButtonState.Down,
103        LiikutaKohdetta, null, new Vector(-10000, 0), Ukkeli);
104        Keyboard.Listen(Key.D, ButtonState.Down,
105        LiikutaKohdetta, null, new Vector(10000, 0), Ukkeli);
106        Keyboard.Listen(Key.S, ButtonState.Down,
107        LiikutaKohdetta, null, new Vector(0, -10000), Ukkeli);
108
109        Keyboard.Listen(Key.W, ButtonState.Pressed,
110        Hyppää, null, new Vector(0, 7500), Ukkeli);
111
112        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, delegate { 
113            seuraajanAivot.Active = false;
114            Miekka.AngularVelocity = -100;
115        }, null);
116
117        Mouse.Listen(MouseButton.Right, ButtonState.Pressed, delegate
118        {
119            seuraajanAivot.Active = false;
120            Miekka.AngularVelocity = 100;
121        }, null);
122        Mouse.Listen(MouseButton.Right, ButtonState.Released, delegate
123        {
124            seuraajanAivot.Active = true;
125        }, null);
126        Mouse.Listen(MouseButton.Left, ButtonState.Released, delegate { seuraajanAivot.Active = true; }, null);
127
128        Timer ajastin = new Timer();
129        ajastin.Interval = 0.5;
130        ajastin.Timeout += delegate { LuoAse(Tikarinkuva, 91, 15); };
131        ajastin.Start();
132
133    }
134
135        void Osuma(PhysicsObject tormaaja, PhysicsObject ase)
136        {
137            if (ase.Tag.ToString() == "Ase")
138            {
139                tormaaja.Destroy();
140                seuraajanAivot.Active = false;
141            }
142        }
143    void LiikutaKohdetta(Vector vektori, PhysicsObject Kohde)
144    {
145        Kohde.Push(vektori);
146    }
147
148    void Hyppää(Vector vektori, PhysicsObject Ukkeli)
149    {
150        if (voikoHypata)
151        {
152            Ukkeli.Hit(vektori);
153            voikoHypata = false;
154        }
155    }
156    AxleJoint LiitaYhteen(PhysicsObject ens, PhysicsObject toin, Vector sidosKohta)
157    {
158        liitos = new AxleJoint(ens, toin, ens.Position + new Vector(0.0, 5.0));
159        liitos.Softness = 0.5;
160        Add(liitos);
161        return liitos;
162    }
163    void KuunteleLiiketta(AnalogState hiirenTila)
164    {
165
166        Pallo.X = Mouse.PositionOnWorld.X;
167        Pallo.Y = Mouse.PositionOnWorld.Y;
168
169        Vector hiirenLiike = hiirenTila.MouseMovement;
170    }
171
172    void LuoPalikka(Vector paikka, double leveys, double korkeus, String tag)
173    {
174        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
175        taso.Position = paikka;
176        taso.Color = Color.Black;
177        taso.CollisionIgnoreGroup = 3;
178        taso.Tag = tag;
179        Add(taso);
180    }
181    void LuoUkkeli(Vector paikka, double leveys, double korkeus)
182    {
183        Image Ukkelinkuva = LoadImage("Ukkeli");
184        Image Miekankuva = LoadImage("Miekka");
185        Image Tahtaimenkuva = LoadImage("Tahtain");
186        Image Tikarinkuva = LoadImage("Tikari");
187
188        //PhysicsStructure Tyyppi = new PhysicsStructure();
189        //Tyyppi.Position = paikka;
190
191        //PhysicsObject Ukkeli = new PhysicsObject(45, 80);
192        Ukkeli.Mass = 15;
193        Ukkeli.KineticFriction = 0.0;
194        Ukkeli.Position = new Vector(0, 0);
195        Ukkeli.Image = Ukkelinkuva;
196        Ukkeli.CanRotate = false;
197        //Ukkeli.Shape = Shape.FromImage(Ukkelinkuva);
198        Ukkeli.Shape = Shape.Rectangle;
199        Ukkeli.CollisionIgnoreGroup = 1;
200        Add(Ukkeli);
201        //Tyyppi.Add(Ukkeli);
202
203       
204
205
206        Miekka = new PhysicsObject(139.5, 15);
207        Miekka.Mass = 0.01;
208        Miekka.Shape = Shape.FromImage(Miekankuva);
209        Miekka.Image = Miekankuva;
210        Miekka.Position = new Vector(70, -20);
211        Miekka.IgnoresCollisionResponse = true;
212        Miekka.CollisionIgnoreGroup = 1;
213        Add(Miekka);
214        LiitaYhteen(Ukkeli, Miekka, Vector.Zero);
215
216        AddCollisionHandler(Ukkeli, Osuma);
217
218
219
220        //Tyyppi.Add(Miekka);
221
222        Pallo.Mass = 0.1;
223        Pallo.Image = Tahtaimenkuva;
224        Pallo.Shape = Shape.FromImage(Tahtaimenkuva);
225        Pallo.Position = new Vector(140, -15);
226        Pallo.CollisionIgnoreGroup = 1;
227        Add(Pallo);
228        Pallo.IsVisible = true;
229        Pallo.CanRotate = false;
230        Pallo.IgnoresCollisionResponse = true;
231        Pallo.CollisionIgnoreGroup = 3;
232        Pallo.IgnoresGravity = true;
233        Mouse.IsCursorVisible = false;
234        Mouse.ListenMovement(0.1, KuunteleLiiketta, null);
235
236
237        seuraajanAivot = new FollowerBrain(Pallo);
238        Miekka.Brain = seuraajanAivot;
239        seuraajanAivot.Speed = 2000;
240        seuraajanAivot.StopWhenTargetClose = true;
241        seuraajanAivot.DistanceClose = 100;
242        seuraajanAivot.Active = true;
243        //seuraajanAivot.TurnWhileMoving = true;
244       
245    }
246
247    protected override void Update(Time time)
248    {
249        if (!Miekka.IsInsideRect(Pallo.Position))
250        {
251            //Angle kulma = (Pallo.AbsolutePosition - Miekka.AbsolutePosition).Angle;
252            //Miekka.Angle = kulma;
253        }
254
255        base.Update(time);
256    }
257    void LuoAse(Image kuva, double korkeus, double leveys)
258    {
259        PhysicsObject Ase = new PhysicsObject(korkeus, leveys);
260        Ase.Image = kuva;
261        Ase.Shape = Shape.FromImage(kuva);
262        Ase.IgnoresGravity = true;
263        Ase.CollisionIgnoreGroup = 3;
264        Ase.Tag = "Ase";
265        Ase.Position = new Vector(RandomGen.NextDouble(Level.Left - 200, Level.Right + 200), RandomGen.NextDouble(Level.Bottom - 200, Level.Top + 200));
266        Add(Ase);
267        Ase.Hit(new Vector(RandomGen.NextDouble(Level.Left - 200, Level.Right + 200), RandomGen.NextDouble(Level.Bottom - 200, Level.Top + 200)));
268
269        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(200);
270        satunnaisAivot.ChangeMovementSeconds = 100000000;
271        Ase.Brain = satunnaisAivot;
272        satunnaisAivot.TurnWhileMoving = true;
273
274    }
275}
Note: See TracBrowser for help on using the repository browser.