source: 2013/23/JoniK/pp/pp/pp/pp.cs @ 3985

Revision 3985, 7.4 KB checked in by anlakane, 8 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8class enemy : PhysicsObject
9{
10    private IntMeter health = new IntMeter(3, 0, 3);
11    public IntMeter Health { get { return health; } }
12    public enemy(double leveys, double korkeus)
13        : base(leveys, korkeus)
14    {
15        Velocity = Vector.Zero;
16    }
17}
18public class pp : PhysicsGame
19{
20   
21    int verti = 300;
22    int hori = 300;
23    PhysicsObject ball;
24    PhysicsObject octopus;
25    PhysicsObject rightborder;
26    PhysicsObject leftborder;
27    PhysicsObject topborder;
28    PhysicsObject bottomborder;
29    PhysicsObject followball1;
30    PhysicsObject followball2;
31    Image greenball = LoadImage("ball main");
32    Image bulletpic = LoadImage("bullet");
33    Image octopi = LoadImage("octomonster");
34    Vector up = new Vector(0, 300);
35    Vector down = new Vector(0, -300);
36    Vector right = new Vector(300, 0);
37    Vector left = new Vector(-300, 0);
38    IntMeter bulletdelay = new IntMeter(0);
39    //Vector velocity = new Vector (300,300);
40   
41   
42    public override void Begin()
43    {
44        Mouse.IsCursorVisible = true;
45        octopus = new enemy(95, 96);
46        octopus.Image = octopi;
47        octopus.X = 200;
48        octopus.Y = 200;
49        octopus.Mass = 100;
50        octopus.CanRotate = false;
51       
52        Add(octopus);
53        ball = new PhysicsObject(50,50);
54        ball.Image = greenball;
55        ball.X = 200;
56        ball.Y = 200;
57        ball.CanRotate = false;
58        ball.CollisionIgnoreGroup = 1;
59        followball1 = new PhysicsObject(50, 50);
60        followball1.Shape = Shape.Circle;
61        followball1.Color = Color.Blue;
62        followball1.X = 0;
63        followball1.Y = 0;
64        followball1.CollisionIgnoreGroup = 1;
65       
66        followball2 = new PhysicsObject(50, 50);
67        followball2.Shape = Shape.Circle;
68        followball2.Color = Color.Yellow;
69        followball2.X = 0;
70        followball2.Y = 0;
71        followball2.CollisionIgnoreGroup = 1;
72        Add(followball2);
73        Add(followball1);
74        Add(ball);
75        creategeneralstuff();
76        Keyboard.Listen(Key.W, ButtonState.Down, set_velocity, "move player 1 up", ball, up);
77        Keyboard.Listen(Key.W, ButtonState.Released, set_velocity, null, ball, Vector.Zero);
78        Keyboard.Listen(Key.S, ButtonState.Down, set_velocity, "move player 1 down", ball, down);
79        Keyboard.Listen(Key.S, ButtonState.Released, set_velocity, null, ball, Vector.Zero);
80        Keyboard.Listen(Key.A, ButtonState.Down, set_velocity_x, "move player 1 left", ball, left);
81        Keyboard.Listen(Key.A, ButtonState.Released, set_velocity_x, null, ball, Vector.Zero);
82        Keyboard.Listen(Key.D, ButtonState.Down, set_velocity_x, "move player 1 right", ball, right);
83        Keyboard.Listen(Key.D, ButtonState.Released, set_velocity_x, null, ball, Vector.Zero);
84        Keyboard.Listen(Key.Space, ButtonState.Down, create_bullet, null);
85        Keyboard.Listen(Key.G, ButtonState.Pressed, test_function, null);
86        // TODO: Kirjoita ohjelmakoodisi tähän
87
88        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
89        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
90    }
91    void creategeneralstuff()
92    {
93        leftborder = Level.CreateLeftBorder();
94        leftborder.Restitution = 1;
95        leftborder.X = -769;
96        leftborder.Width = 1000;
97        leftborder.IsVisible = true;
98        leftborder.Color = Color.Black;
99
100        rightborder = Level.CreateRightBorder();
101        rightborder.X = 769;
102        rightborder.Restitution = 1;
103        rightborder.Width = 1000;
104        rightborder.IsVisible = true;
105        rightborder.Color = Color.Black;
106
107        topborder = Level.CreateTopBorder();
108        topborder.Restitution = 1.0;
109        topborder.Y = 500;
110        topborder.KineticFriction = 0.0;
111        topborder.Width = 1600;
112        topborder.IsVisible = true;
113        topborder.Color = Color.Black;
114
115        bottomborder = Level.CreateBottomBorder();
116        bottomborder.Restitution = 1.0;
117        bottomborder.Y = -500;
118        bottomborder.Width = 1600;
119        bottomborder.IsVisible = true;
120        bottomborder.KineticFriction = 0.0;
121        bottomborder.Color = Color.Black;
122
123        Add(bottomborder);
124        Add(topborder);
125        Add(leftborder);
126        Add(rightborder);
127        AddCollisionHandler(rightborder, "bullet", bullet_Destroy);
128        AddCollisionHandler(octopus, "bullet", octopus_hit);
129        Level.BackgroundColor = Color.Azure;
130
131    }
132    void octopus_hit(PhysicsObject octopus, PhysicsObject hit)
133    {
134        if (!(octopus is enemy))
135            return;
136        enemy octo = (enemy)octopus;
137        octo.Health.Value -= 1;
138        if (octo.Health.Value == 0)
139            octo.Destroy();
140        hit.Destroy();
141    }
142    void set_velocity_x(PhysicsObject ball, Vector speed)
143    {
144        ball.Velocity = new Vector(speed.X, ball.Velocity.Y);
145    }
146    void set_velocity(PhysicsObject ball, Vector speed)
147    {
148
149        //if(!onkoMenossaRajanYli)
150           
151        ball.Velocity = new Vector(ball.Velocity.X, speed.Y);
152       
153
154        if ((ball.Top > topborder.Top) && (speed.Y > 0))
155        {
156            ball.Velocity = Vector.Zero;
157            return;
158        }
159        if ((ball.Bottom < bottomborder.Bottom) && (speed.Y < 0))
160        {
161            ball.Velocity = Vector.Zero;
162            return;
163        }
164        if ((ball.Left < leftborder.Left) && (speed.X < 0))
165        {
166            ball.Velocity = Vector.Zero;
167            return;
168        }
169        if ((ball.Right > rightborder.Right) && (speed.X > 0))
170        {
171            ball.Velocity = Vector.Zero;
172            return;
173        }
174        //ball.Velocity = speed;
175
176    }
177    void bullet_Destroy(PhysicsObject rightborder, PhysicsObject impact)
178    {
179            impact.Destroy();
180
181    }
182    void create_bullet()
183    {
184        Vector suunta = new Vector(Mouse.PositionOnScreen.X - ball.X, Mouse.PositionOnScreen.Y - ball.Y);
185
186        PhysicsObject bullet = new PhysicsObject(20, 20);
187        bullet.X = ball.X;
188        bullet.Y = ball.Y;
189        bullet.Tag = "bullet";
190        bullet.Shape = Shape.Circle;
191        bullet.Color = Color.BloodRed;
192        bullet.LifetimeLeft = TimeSpan.FromMilliseconds(3500);
193        //bullet.Velocity = new Vector(Mouse.PositionOnScreen.X - bullet.X, Mouse.PositionOnScreen.Y - bullet.Y);
194        bullet.Velocity = Vector.FromLengthAndAngle(1000, suunta.Angle);
195        bullet.CollisionIgnoreGroup = 1;
196       
197       
198        if (bulletdelay == 10)
199        {
200            Add(bullet);
201            bulletdelay.Value = 0;
202        }
203    }
204    void test_function()
205    {
206        octopus = new enemy(95, 96);
207        octopus.Image = octopi;
208        octopus.Mass = 100;
209        octopus.X = hori;
210        octopus.Y = verti;
211        octopus.CanRotate = false;
212        AddCollisionHandler(octopus, "bullet", octopus_hit);
213
214        Add(octopus);
215    }
216    protected override void Update(Time time)
217    {
218        if (bulletdelay < 10)
219            bulletdelay.Value += 1;
220
221        base.Update(time);
222        followball1.Velocity = new Vector((ball.X - followball1.X) * 10, (ball.Y - followball1.Y) * 10);
223        followball2.Velocity = new Vector((followball1.X- followball2.X) * 10, (followball1.Y - followball2.Y) * 10);
224       
225    }
226}
Note: See TracBrowser for help on using the repository browser.