source: 2016/25/MatiasA/Pong 03/Pong 03/Pong_03/Pong_03.cs @ 10337

Revision 7469, 5.0 KB checked in by tesatapa, 5 years ago (diff)

valmis

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_03 : PhysicsGame
10{
11    PhysicsObject pallo;
12    Vector nopeusYlos = new Vector(0, 200);
13    Vector nopeusalas = new Vector(0, -200);
14
15    IntMeter pelaajan1Pisteet;
16    IntMeter pelaajan2Pisteet;
17
18    const double PALLON_MIN_NOPEUS = 10000000;
19    PhysicsObject maila1;
20    PhysicsObject maila2;
21    IntMeter pelaajan1pisteet;
22    IntMeter pelaajan2pisteet;
23
24    PhysicsObject vasenReuna;
25    PhysicsObject oikeaReuna;
26
27
28    public override void Begin()
29    {
30        LuoKentta();
31        AsetaOhjaimet();
32        LisaaLaskurit();
33        AloitaPeli();
34
35
36        Vector impulssi = new Vector(500.0, 0.0); pallo.Hit(impulssi);
37
38        Level.CreateBorders(1.0, false);
39
40
41        Level.Background.CreateGradient(Color.Black, Color.Gold);
42
43        Camera.ZoomToLevel();
44
45
46        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
47        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
48    }
49
50
51
52    void LuoKentta()
53    {
54         vasenReuna = Level.CreateLeftBorder();
55        vasenReuna.Restitution = 1.0;
56        vasenReuna.IsVisible = false;
57
58         oikeaReuna = Level.CreateRightBorder();
59        oikeaReuna.Restitution = 1.0;
60        oikeaReuna.IsVisible = false;
61
62        PhysicsObject ylaReuna = Level.CreateTopBorder();
63        ylaReuna.Restitution = 1.0;
64        ylaReuna.IsVisible = false;
65
66        PhysicsObject alaReuna = Level.CreateBottomBorder();
67        alaReuna.Restitution = 1.0;
68        alaReuna.IsVisible = false;
69
70        pallo = new PhysicsObject(50, 50);
71        pallo.Shape = Shape.Circle;
72        pallo.Color = Color.Gold;
73        Add(pallo);
74        pallo.X = -200.0;
75        pallo.Y = 0.0;
76        pallo.Restitution = 1.0;
77        AddCollisionHandler(pallo, KasittelePallonTormays);
78
79
80        maila1 = LuoMaila(Level.Left + 20.0, 0.0);
81        maila2 = LuoMaila(Level.Right - 20.0, 0.0);
82
83
84        Level.CreateBorders(1.0, false);
85        Level.Background.Color = Color.Black;
86    }
87
88    void AloitaPeli()
89    {
90        Vector impulssi = new Vector(500.0, 0.0);
91        pallo.Hit(impulssi);
92    }
93
94
95
96
97    void AsetaOhjaimet()
98    {
99        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos);
100        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
101        Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "pelaaja 1", maila1, nopeusalas);
102        Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
103        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
104
105        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos);
106        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
107        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "pelaaja 2: Likuta mailaa alas", maila2, nopeusalas);
108        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
109
110        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
111        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
112    }
113
114
115    void AsetaNopeus(PhysicsObject maila, Vector nopeus)
116    {
117
118
119        if ((maila.Top > 0) && (Level.Top > Level.Top))
120        {
121            maila.Velocity = Vector.Zero;
122            return;
123        }
124
125        maila.Velocity = nopeus;
126
127
128    }
129
130
131
132    PhysicsObject LuoMaila(double x, double y)
133    {
134        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 120.0);
135        maila.Shape = Shape.Rectangle;
136        maila.X = x;
137        maila.Y = y;
138        maila.Restitution = 1.0;
139        Add(maila);
140        return maila;
141    }
142    void LiikutaMailaaYlos(PhysicsObject maila)
143    {
144
145
146    }
147
148    void LisaaLaskurit()
149    {
150        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0);
151        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0);
152    }
153
154    IntMeter LuoPisteLaskuri(double x, double y)
155    {
156        IntMeter laskuri = new IntMeter(0);
157        laskuri.MaxValue = 10;
158
159        Label naytto = new Label();
160        naytto.BindTo(laskuri);
161        naytto.X = x;
162        naytto.Y = y;
163        naytto.TextColor = Color.White;
164        naytto.BorderColor = Level.BackgroundColor;
165        naytto.Color = Level.BackgroundColor;
166        Add(naytto);
167
168        return laskuri;
169    }
170
171    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde)
172    {
173        if (kohde == oikeaReuna)
174        {
175            pelaajan1Pisteet.Value += 1;
176        }
177        else if (kohde == vasenReuna)
178        {
179            pelaajan2Pisteet.Value += 1;
180        }
181    }
182}
183
184
Note: See TracBrowser for help on using the repository browser.