source: 2013/23/LauriH/Pong/Pong/Pong/Pong.cs @ 4746

Revision 3979, 4.9 KB checked in by lanijohe, 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;
8
9public class Pong : PhysicsGame
10{
11    PhysicsObject pallo;
12
13    Vector NopeusYlos = new Vector(0, 200);
14    Vector NopeusAlas = new Vector(0, -200);
15
16    PhysicsObject maila1;
17    PhysicsObject maila2;
18    PhysicsObject oikeaReuna;
19    PhysicsObject vasenReuna;
20
21    IntMeter pelaajan1Pisteet;
22    IntMeter pelaajan2Pisteet;
23   
24
25
26    public override void Begin()
27    {
28
29        LuoKentta();
30        maila1 = LuoMaila(Level.Right - 20, 0);
31        maila2 = LuoMaila(Level.Left + 20, 0);
32        AsetaOhjaimet();
33        Laskurit();
34        AloitaPeli();
35
36
37    }
38   
39        void LuoKentta()
40        {
41            pallo = new PhysicsObject(100, 100);
42            Add(pallo);
43            pallo.Shape = Shape.Circle;
44            pallo.Color = Color.Red;
45            pallo.Restitution = 1.0;
46            pallo.KineticFriction = 5.0;
47
48            Vector Impulssi = new Vector(500.0, 0.0);
49            pallo.Hit(Impulssi);
50
51            AddCollisionHandler(pallo, PallonTormays);
52
53            vasenReuna = Level.CreateLeftBorder();
54            vasenReuna.Restitution = 1.0;
55            vasenReuna.IsVisible = false;
56
57            oikeaReuna = Level.CreateRightBorder();
58            oikeaReuna.Restitution = 1.0;
59            oikeaReuna.IsVisible = false;
60
61            PhysicsObject alaReuna = Level.CreateBottomBorder();
62            alaReuna.Restitution = 1.0;
63            alaReuna.IsVisible = false;
64
65            PhysicsObject ylaReuna = Level.CreateTopBorder();
66            ylaReuna.Restitution = 1.0;
67            ylaReuna.IsVisible = false;
68
69            Level.BackgroundColor = Color.Blue;
70
71            Camera.ZoomToLevel();
72        }
73
74        void AloitaPeli()
75        {
76            PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
77        }
78
79        PhysicsObject LuoMaila(double X, double Y)
80        {
81            PhysicsObject maila = PhysicsObject.CreateStaticObject(10, 100);
82            Add(maila);
83            maila.Shape = Shape.Rectangle;
84            maila.X = X;
85            maila.Y = Y;
86            maila.Restitution = 1.0;
87            return maila;
88        }
89
90        void AsetaOhjaimet()
91        {
92            Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
93           
94            Keyboard.Listen(Key.NumPad8, ButtonState.Down, AsetaNopeus,"Pelaaja 1 liikuta mailaa ylös", maila1, NopeusYlos);
95            Keyboard.Listen(Key.NumPad8, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
96            Keyboard.Listen(Key.NumPad2, ButtonState.Down, AsetaNopeus, "Pelaaja 1 liikuta mailaa Alas", maila1, NopeusAlas);
97            Keyboard.Listen(Key.NumPad2, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
98
99            Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2 liikuta mailaa ylös", maila2, NopeusYlos);
100            Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
101            Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2 liikuta mailaa ylös", maila2, NopeusAlas);
102            Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
103        }
104
105        void AsetaNopeus(PhysicsObject maila, Vector Nopeus)
106        {
107            if ((Nopeus.Y > 0) && (maila.Top > Level.Top))
108            {
109                maila.Velocity = Vector.Zero;
110                return;
111            }
112
113            if ((Nopeus.Y < 0) && (maila.Bottom < Level.Bottom))
114            {
115                maila.Velocity = Vector.Zero;
116                return;
117            }
118
119            maila.Velocity = Nopeus;
120        }
121
122        void Laskurit()
123        {
124            pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100, Screen.Top -100); 
125            pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100, Screen.Top -100);
126           
127        }
128
129        IntMeter LuoPisteLaskuri(double x, double y)
130            {
131                IntMeter laskuri = new IntMeter (0); 
132                laskuri.MaxValue = 10;
133               
134                Label naytto = new Label();
135                naytto.BindTo(laskuri);
136                naytto.X = x;
137                naytto.Y = y;
138           
139                naytto.TextColor = Color.White;
140                naytto.BorderColor = Level.BackgroundColor;
141                naytto.Color = Level.BackgroundColor;
142                Add(naytto);
143
144                return laskuri;
145 
146            }
147
148        void PallonTormays(PhysicsObject pallo, PhysicsObject kohde)
149        { 
150            if(kohde == oikeaReuna)
151            {
152                pelaajan1Pisteet.Value += 1; 
153            }
154            else if (kohde == vasenReuna)
155            {
156                pelaajan2Pisteet.Value += 1;
157            }
158
159
160
161        }
162   
163        }
164       
165
166   
167
Note: See TracBrowser for help on using the repository browser.