source: 2016/24/PanuK/Pong/Pong/Pong/Pong.cs @ 7303

Revision 7303, 5.6 KB checked in by paerjuko, 7 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
19    IntMeter pelaajan1Pisteet;
20    IntMeter pelaajan2Pisteet;
21    private PhysicsObject vasenReuna;
22    private PhysicsObject oikeaReuna;
23
24   
25
26    public override void Begin()
27    {
28        LuoKentta();
29        AsetaOhjaimet();
30        LisaaLaskurit();
31        AloitaPeli();
32    }
33    void AsetaOhjaimet()
34    {
35        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos);
36        Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
37        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas);
38        Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
39
40        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos);
41        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
42        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas);
43        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
44
45        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
46        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
47        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila1, nopeusYlos);
48        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
49        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila1, nopeusAlas);
50        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
51
52        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila2, nopeusYlos);
53        ControllerTwo.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
54        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila2, nopeusAlas);
55        ControllerTwo.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
56
57        ControllerOne.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
58        ControllerTwo.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
59
60    }
61
62    void AsetaNopeus(PhysicsObject maila, Vector nopeus)
63    {
64        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom))
65        {
66            maila.Velocity = Vector.Zero;
67            return;
68        }
69        if ((nopeus.Y > 0) && (maila.Top > Level.Top))
70        {
71            maila.Velocity = Vector.Zero;
72            return;
73        }
74        maila.Velocity = nopeus;
75    }
76
77    void LuoKentta()
78    {
79        Pallo = new PhysicsObject(30.0, 30.0);
80        Pallo.Shape = Shape.Circle;
81        Pallo.X = -31.0;
82        Pallo.Y = 3.0;
83        Pallo.Restitution = 0.9;
84        Add(Pallo);
85
86        maila1 = LuoMaila(Level.Left + 20.0, 0.0);
87        maila2 = LuoMaila(Level.Right - 20.0, 0.0);
88
89        Level.Background.Color = Color.ForestGreen;
90        PhysicsObject vasenReuna = Level.CreateLeftBorder();
91        vasenReuna.Restitution = 1.0;
92        vasenReuna.IsVisible = false;
93
94        PhysicsObject oikeaReuna = Level.CreateRightBorder();
95        oikeaReuna.Restitution = 1.0;
96        oikeaReuna.IsVisible = false;
97
98        PhysicsObject ylaReuna = Level.CreateTopBorder();
99        ylaReuna.Restitution = 1.0;
100        ylaReuna.IsVisible = false;
101
102        PhysicsObject alaReuna = Level.CreateBottomBorder();
103        alaReuna.Restitution = 1.0;
104        alaReuna.IsVisible = false;
105
106        Camera.ZoomToLevel(1.0);
107
108        AddCollisionHandler(Pallo, KasittelePallonTormays);
109
110
111    }
112
113    void AloitaPeli()
114    {
115        Vector impulssi = new Vector(3000.0, 390.0);
116        Pallo.Hit(impulssi);
117    }
118
119    PhysicsObject LuoMaila(double x, double y)
120    {
121        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0);
122        maila.Shape = Shape.Rectangle;
123        maila.X = x;
124        maila.Y = y;
125        maila.Restitution = 1.0;
126        Add(maila);
127        return maila;
128    }
129    void LisaaLaskurit()
130    {
131        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0);
132        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0);
133    }
134
135    IntMeter LuoPisteLaskuri(double x, double y)
136    {
137        IntMeter laskuri = new IntMeter(0);
138        laskuri.MaxValue = 10;
139
140        Label naytto = new Label();
141        naytto.BindTo(laskuri);
142        naytto.X = x;
143        naytto.Y = y;
144        naytto.TextColor = Color.White;
145        naytto.BorderColor = Level.Background.Color;
146        naytto.Color = Level.Background.Color;
147        Add(naytto);
148
149        return laskuri;
150    }
151
152    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde)
153    {
154        if (kohde == oikeaReuna)
155        {
156            pelaajan1Pisteet.Value += 1;
157        }
158        else if (kohde == vasenReuna)
159        {
160            pelaajan2Pisteet.Value += 1;
161        }
162    }
163}
Note: See TracBrowser for help on using the repository browser.