source: 2015/27/JimiS/Pong/Pong/Pong/Pong.cs @ 6554

Revision 6554, 6.4 KB checked in by jivesuor, 6 years ago (diff)

Pongista poistettu kuvat ja nostettu max.pistemäärä 10 > 20

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    //vektorit
12    Vector nopeusYlos = new Vector(0, 200);
13    Vector nopeusAlas = new Vector(0, -200);
14    //reunat
15    PhysicsObject vasenReuna;
16    PhysicsObject oikeaReuna;
17    //pallo
18    PhysicsObject pallo;
19    //mailat
20    PhysicsObject maila1;
21    PhysicsObject maila2;
22    //pisteet
23    IntMeter pelaajan1Pisteet;
24    IntMeter pelaajan2Pisteet;
25
26    public override void Begin()
27    {
28        LuoKenttä();
29        AsetaOhjaimet();
30        LisaaLaskurit();
31        AloitaPeli();
32        ohjeteksti();
33    }
34    void LuoKenttä()
35    {
36        pallo = new PhysicsObject(40.0, 40.0);
37        Add(pallo);
38        pallo.Shape = Shape.Circle;
39        pallo.X = 200.0;
40        pallo.Y = 0.0;
41        //Kentän reunat, vasen
42        vasenReuna = Level.CreateLeftBorder();
43        vasenReuna.Restitution = 1.0;
44        vasenReuna.IsVisible = false;
45        // oikea
46        oikeaReuna = Level.CreateRightBorder();
47        oikeaReuna.Restitution = 1.0;
48        oikeaReuna.IsVisible = false;
49        //ala
50        PhysicsObject alaReuna = Level.CreateBottomBorder();
51        alaReuna.Restitution = 1.0;
52        alaReuna.IsVisible = false;
53        //ylä
54        PhysicsObject yläReuna = Level.CreateTopBorder();
55        yläReuna.Restitution = 1.0;
56        yläReuna.IsVisible = false;
57        //reunat loppuu
58        pallo.Restitution = 1.0;
59        Level.Background.Color = Color.Yellow;
60        pallo.Color = Color.Green;
61        Camera.ZoomToLevel();
62        maila1 = LuoMaila(Level.Left + 20.0, 0.0);
63        maila2 = LuoMaila(Level.Right - 20.0, 0.0);
64        AddCollisionHandler(pallo, KasittelePallonTormays);
65    }
66    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde)
67    {
68        if (kohde == oikeaReuna)
69        {
70            pelaajan1Pisteet.Value += 1;
71        }
72        else if (kohde == vasenReuna)
73        {
74            pelaajan2Pisteet.Value += 1;
75        }
76    }
77    void LisaaLaskurit()
78    {
79        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0);
80        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0);
81    }
82    void AloitaPeli()
83    {
84        Vector impulssi = new Vector(-500.0, 500.0);
85        pallo.Hit(impulssi);
86    }
87    PhysicsObject LuoMaila(double x, double y)
88    {
89        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0);
90        maila.Shape = Shape.Rectangle;
91        maila.X = x;
92        maila.Y = y;
93        maila.Restitution = 1.0;
94        Add(maila);
95        maila.Color = Color.Blue;
96        return maila;
97    }
98    void AsetaOhjaimet()
99    {
100        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta maila ylös", maila1, nopeusYlos);
101        Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
102        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas);
103        Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
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: Liikuta 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        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila1, nopeusYlos);
114        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
115        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila1, nopeusAlas);
116        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
117
118        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila2, nopeusYlos);
119        ControllerTwo.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
120        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila2, nopeusAlas);
121        ControllerTwo.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
122
123        ControllerOne.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
124        ControllerTwo.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
125    }
126    IntMeter LuoPisteLaskuri(double x, double y)
127    {
128        IntMeter laskuri = new IntMeter(0);
129        laskuri.MaxValue = 20;
130        Label naytto = new Label();
131        naytto.BindTo(laskuri);
132        naytto.X = x;
133        naytto.Y = y;
134        naytto.TextColor = Color.Black;
135        naytto.BorderColor = Color.Red;
136        naytto.Color = Color.White;
137        Add(naytto);
138
139        return laskuri;
140    }
141    void ohjeteksti()
142    {
143        Label ohje = new Label("ohje painamalla F1");
144        ohje.X = Level.Left + 5.0;
145        ohje.Y = Level.Top - 100.0;
146        ohje.TextColor = Color.Black;
147        ohje.BorderColor = Level.Background.Color;
148        ohje.Color = Level.Background.Color;
149        ohje.TextScale *= 1;
150        Add(ohje);
151    }
152
153    void AsetaNopeus(PhysicsObject maila, Vector nopeus)
154    {
155        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom))
156        {
157            maila.Velocity = Vector.Zero;
158            return;
159        }
160        if ((nopeus.Y > 0) && (maila.Top > Level.Top))
161        {
162            maila.Velocity = Vector.Zero;
163            return;
164        }
165        maila.Velocity = nopeus;
166    }
167    const double PALLON_MIN_NOPEUS = 300;
168
169    protected override void Update(Time time)
170    {
171        if (pallo != null && Math.Abs(pallo.Velocity.X) < PALLON_MIN_NOPEUS)
172        {
173            pallo.Velocity = new Vector(pallo.Velocity.X * 1.1, pallo.Velocity.Y);
174        }
175        base.Update(time);
176    }
177}
Note: See TracBrowser for help on using the repository browser.