source: 2016/30/KasimirP/Pong/Pong/Pong/Pong.cs @ 8116

Revision 8116, 6.2 KB checked in by kaspalmu, 5 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    Vector nopeusYlos = new Vector(0, 200);
12    Vector nopeusAlas = new Vector(0, -200);
13
14    PhysicsObject pallo;
15
16    PhysicsObject maila1;
17    PhysicsObject maila2;
18
19    IntMeter pelaajan1Pisteet;
20    IntMeter pelaajan2Pisteet;
21
22    PhysicsObject oikeaReuna;
23    PhysicsObject vasenReuna;
24
25
26    IntMeter LuoPisteLaskuri(double x, double y)
27    {
28        IntMeter laskuri = new IntMeter(0);
29        laskuri.MaxValue = 10;
30
31        Label naytto = new Label();
32        naytto.BindTo(laskuri);
33        naytto.X = x;
34        naytto.Y = y;
35        naytto.TextColor = Color.RosePink;
36        naytto.BorderColor = Level.Background.Color;
37        naytto.Color = Level.Background.Color;
38        Add(naytto);
39
40        return laskuri;
41
42    }
43
44    public override void Begin()
45    {
46        ClearAll();
47        // TODO: Kirjoita ohjelmakoodisi tähän
48        LuoKentta();
49        AsetaOhjaimet();
50
51        AloitaPeli();
52        LisaaLaskurit();
53
54
55
56
57    }
58
59    void LuoKentta()
60    {
61        pallo = new PhysicsObject(40.0, 40.0);
62        pallo.Shape = Shape.Circle;
63        pallo.X = 0.0;
64        pallo.Y = -0.0;
65        pallo.Restitution = 1.5;
66        pallo.Color = Color.Yellow;
67        Add(pallo);
68        Camera.ZoomToLevel();
69        vasenReuna = Level.CreateLeftBorder();
70        vasenReuna.Restitution = 1.0;
71        vasenReuna.IsVisible = false;
72        oikeaReuna = Level.CreateRightBorder();
73        oikeaReuna.Restitution = 1.0;
74        oikeaReuna.IsVisible = false;
75        PhysicsObject alareuna = Level.CreateBottomBorder();
76        alareuna.Restitution = 1.0;
77        alareuna.IsVisible = false;
78        PhysicsObject yläreuna = Level.CreateTopBorder();
79        yläreuna.Restitution = 1.0;
80        yläreuna.IsVisible = false;
81
82
83
84
85
86
87
88        AddCollisionHandler(pallo, KasittelePallonTormays);
89
90
91
92        Level.Background.Color = Color.Black;
93        Camera.ZoomToLevel();
94
95        maila1 = LuoMaila(Level.Left + 20.0, 0.0);
96        maila2 = LuoMaila(Level.Right - 20.0, 0.0);
97
98
99
100
101
102
103    }
104    public void AloitaPeli()
105    {
106        pallo.Position = Vector.Zero;
107
108        Vector impulssi = new Vector(500.0, 0.0);
109        pallo.Hit(impulssi);
110
111    }
112    PhysicsObject LuoMaila(double x, double y)
113    {
114        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0);
115        maila.Shape = Shape.Rectangle;
116        maila.X = x;
117        maila.Y = y;
118        maila.Restitution = 1.0;
119        maila.Color = Color.Blue;
120        Add(maila);
121        return maila;
122
123
124    }
125
126    private void AloitaUudestaan()
127    {
128
129    }
130
131    void AsetaOhjaimet()
132    {
133        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "LiikutaMailaYlos, Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos);
134        Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
135
136        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Niko on noob");
137        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas);
138        Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
139
140        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos);
141        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
142
143        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas);
144        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
145
146        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet kek");
147        Keyboard.Listen(Key.R, ButtonState.Pressed, AloitaUudestaan, "Aloita uudestaan xd (niko on noob)");
148        Window.Fullscreen = true;
149
150        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila1, nopeusYlos);
151        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
152        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila1, nopeusAlas);
153        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
154
155        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila2, nopeusYlos);
156        ControllerTwo.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
157        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila2, nopeusAlas);
158        ControllerTwo.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
159
160        ControllerOne.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
161        ControllerTwo.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
162
163    }
164
165    void AsetaNopeus(PhysicsObject maila, Vector nopeus)
166    {
167        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom))
168        {
169            maila.Velocity = Vector.Zero;
170            return;
171        }
172
173
174        if ((nopeus.Y > 0) && (maila.Top > Level.Top))
175        {
176            maila.Velocity = Vector.Zero;
177            return;
178
179        }
180        maila.Velocity = nopeus;
181
182
183
184    }
185    void LisaaLaskurit()
186    {
187        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0);
188        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0);
189    }
190
191    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde)
192    {
193
194        if (kohde == oikeaReuna)
195        {
196            pelaajan1Pisteet.Value += 1;
197            //pallo.Position = Vector.Zero;
198
199            Vector impulssi = new Vector(500.0, 0.0);
200            //pallo.Hit(impulssi);
201        }
202        else if (kohde == vasenReuna)
203        {
204            pelaajan2Pisteet.Value += 1;
205            //Timer.SingleShot(0.01, AloitaPeli);
206        }
207    }
208
209
210
211}
Note: See TracBrowser for help on using the repository browser.