source: 2014/koodauskerho/38/PietuR/MagicalFlowerParty/MagicalFlowerParty/MagicalFlowerParty/MagicalFlowerParty.cs @ 7801

Revision 7801, 6.6 KB checked in by karkaite, 4 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
9class Pelaaja: PhysicsObject
10{
11    public bool stamina = true;
12
13    public bool osunut = false;
14
15    public DoubleMeter kerroin { get;}
16
17    public Pelaaja(double width, double height)
18        : base(width, height){
19        kerroin = new DoubleMeter(100, 0, 300);
20    }
21}
22public class MagicalFlowerParty : PhysicsGame
23{
24   
25
26    Pelaaja pelaaja1;
27    Pelaaja pelaaja2;
28    Pelaaja pelaaja3;
29    Pelaaja pelaaja4;
30    public override void Begin()
31    {
32
33        Image finnypic = LoadImage("Finny");
34        Image wibblypic = LoadImage("Wibbly");
35        Image puffypic = LoadImage("Puffy");
36        Image kookypic = LoadImage("Kooky");
37        Image arenapic = LoadImage("Arena");
38
39        PhysicsObject arena = new PhysicsObject(1100, 1100);
40        arena.Shape = Shape.FromImage(arenapic);
41        arena.Image = arenapic;
42        arena.IgnoresCollisionResponse = true;
43        Add(arena, -1);
44
45
46
47        pelaaja1 = new Pelaaja(60, 60);
48        pelaaja1.Position = new Vector(-100, 100);
49        pelaaja1.CanRotate = false;
50        pelaaja1.LinearDamping = 0.95;
51        pelaaja1.Image = finnypic;
52        pelaaja1.Shape = Shape.Circle;
53        pelaaja1.Tag = "pallero";
54        AddCollisionHandler(pelaaja1, "pallero", PelaajaOsuu);
55        Add(pelaaja1);
56
57        LuoKerroin(pelaaja1);
58
59        pelaaja2 = new Pelaaja(60, 60);
60        pelaaja2.Position = new Vector(100, 100);
61        pelaaja2.CanRotate = false;
62        pelaaja2.LinearDamping = 0.95;
63        pelaaja2.Image = wibblypic;
64        pelaaja2.Shape = Shape.Circle;
65        pelaaja2.Tag = "pallero";
66        AddCollisionHandler(pelaaja2, "pallero", PelaajaOsuu);
67        Add(pelaaja2);
68       
69        LuoKerroin(pelaaja2);
70
71        pelaaja3 = new Pelaaja(60, 60);
72        pelaaja3.Position = new Vector(-100, -100);
73        pelaaja3.CanRotate = false;
74        pelaaja3.LinearDamping = 0.95;
75        pelaaja3.Image = puffypic;
76        pelaaja3.Shape = Shape.Circle;
77        pelaaja3.Tag = "pallero";
78        AddCollisionHandler(pelaaja3, "pallero", PelaajaOsuu);
79        Add(pelaaja3);
80
81        LuoKerroin(pelaaja3);
82
83        pelaaja4 = new Pelaaja(60, 60);
84        pelaaja4.Position = new Vector(100, -100);
85        pelaaja4.CanRotate = false;
86        pelaaja4.LinearDamping = 0.95;
87        pelaaja4.Image = kookypic;
88        pelaaja4.Shape = Shape.Circle;
89        pelaaja4.Tag = "pallero";
90        AddCollisionHandler(pelaaja4, "pallero", PelaajaOsuu);
91        Add(pelaaja4);
92
93        LuoKerroin(pelaaja4);
94
95
96        Keyboard.Listen(Key.Left, ButtonState.Down,
97          MovePlayer, null, new Vector(-1000, 0), pelaaja1);
98        Keyboard.Listen(Key.Right, ButtonState.Down,
99          MovePlayer, null, new Vector(1000, 0), pelaaja1);
100        Keyboard.Listen(Key.Up, ButtonState.Down,
101          MovePlayer, null, new Vector(0, 1000), pelaaja1);
102        Keyboard.Listen(Key.Down, ButtonState.Down,
103          MovePlayer, null, new Vector(0, -1000), pelaaja1);
104        Keyboard.Listen(Key.RightControl, ButtonState.Pressed,
105          Dash, null, new Vector(0, -10000), pelaaja1);
106
107        Keyboard.Listen(Key.A, ButtonState.Down,
108          MovePlayer, null, new Vector(-1000, 0), pelaaja2);
109        Keyboard.Listen(Key.D, ButtonState.Down,
110          MovePlayer, null, new Vector(1000, 0), pelaaja2);
111        Keyboard.Listen(Key.W, ButtonState.Down,
112          MovePlayer, null, new Vector(0, 1000), pelaaja2);
113        Keyboard.Listen(Key.S, ButtonState.Down,
114          MovePlayer, null, new Vector(0, -1000), pelaaja2);
115        Keyboard.Listen(Key.LeftControl, ButtonState.Pressed,
116          Dash, null, new Vector(0, -10000), pelaaja2);
117
118        Keyboard.Listen(Key.NumPad4, ButtonState.Down,
119          MovePlayer, null, new Vector(-1000, 0), pelaaja3);
120        Keyboard.Listen(Key.NumPad6, ButtonState.Down,
121          MovePlayer, null, new Vector(1000, 0), pelaaja3);
122        Keyboard.Listen(Key.NumPad8, ButtonState.Down,
123          MovePlayer, null, new Vector(0, 1000), pelaaja3);
124        Keyboard.Listen(Key.NumPad5, ButtonState.Down,
125          MovePlayer, null, new Vector(0, -1000), pelaaja3);
126        Keyboard.Listen(Key.NumPad9, ButtonState.Pressed,
127          Dash, null, new Vector(0, -10000), pelaaja3);
128
129        Keyboard.Listen(Key.H, ButtonState.Down,
130          MovePlayer, null, new Vector(-1000, 0), pelaaja4);
131        Keyboard.Listen(Key.K, ButtonState.Down,
132          MovePlayer, null, new Vector(1000, 0), pelaaja4);
133        Keyboard.Listen(Key.U, ButtonState.Down,
134          MovePlayer, null, new Vector(0, 1000), pelaaja4);
135        Keyboard.Listen(Key.J, ButtonState.Down,
136          MovePlayer, null, new Vector(0, -1000), pelaaja4);
137        Keyboard.Listen(Key.Y, ButtonState.Pressed,
138          Dash, null, new Vector(0, -10000), pelaaja4);
139
140
141
142
143        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
144        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
145    }
146    void MovePlayer(Vector vector, PhysicsObject pelaaja)
147    {
148        pelaaja.Push(vector);
149    }
150
151    void Dash(Vector vector, Pelaaja pelaaja)
152    {
153        if (pelaaja.stamina == true && pelaaja.Velocity.Magnitude != 0)
154        {
155            pelaaja.Hit(pelaaja.Velocity.Normalize() * 500);
156
157            pelaaja.stamina = false;
158
159            Timer.SingleShot(3.0,delegate { pelaaja.stamina = true; });
160        }
161   
162    }
163    void PelaajaOsuu(PhysicsObject tormaaja, PhysicsObject kohde)
164    {
165        Pelaaja pelaaja = tormaaja as Pelaaja;
166        Pelaaja osuttu = kohde as Pelaaja;
167        if (osuttu == null)
168        return;
169       
170        if (pelaaja.Velocity.Magnitude > kohde.Velocity.Magnitude && !osuttu.osunut && !pelaaja.osunut)
171        {
172            double vahinko = (pelaaja.Velocity - kohde.Velocity).Magnitude / 60.0 * 2.0;
173            osuttu.osunut = true;
174            osuttu.kerroin.Value += vahinko;
175            osuttu.Hit(pelaaja.Velocity * osuttu.kerroin.Value / 100.0 * 2.0);
176            pelaaja.Stop();
177
178            //Color.Lerp(Color.Green, Color.Red)
179            ((Label)osuttu.Objects[0]).TextColor = Color.Lerp(Color.White, Color.Red, (osuttu.kerroin.Value - 100) / 200.0);
180
181            Timer.SingleShot(0.05, () => osuttu.osunut = false);
182        }
183    }
184    void LuoKerroin(Pelaaja pelaaja)
185    {
186        Label kerroinarvo = new Label(pelaaja.kerroin);
187        kerroinarvo.Position = new Vector(0, 50);
188        kerroinarvo.TextColor = Color.White;
189        kerroinarvo.Color = new Color(0, 0, 0, 128);
190        pelaaja.Add(kerroinarvo);
191
192    }
193}
Note: See TracBrowser for help on using the repository browser.