source: 2017/27/EinoS/Pong_xD/Pong_xD/Pong_xD/Pong_xD.cs @ 8817

Revision 8817, 4.4 KB checked in by npo17_39, 2 years ago (diff)

pong peli

RevLine 
[8817]1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Pong_xD : PhysicsGame
10{
11    PhysicsObject pallo;
12    PhysicsObject maila1;
13    PhysicsObject maila2;
14
15    PhysicsObject vasenReuna;
16    PhysicsObject oikeaReuna;
17    PhysicsObject ylaReuna;
18    PhysicsObject alaReuna;
19
20    IntMeter pelaajan1Pisteet;
21    IntMeter pelaajan2Pisteet;
22
23    Vector nopeusYlos = new Vector(0, 200);
24    Vector nopeusAlas = new Vector(0, -200);
25    public override void Begin()
26    {
27        LuoKentta();
28        AloitaPeli();
29        AsetaOhjaimet();
30        LisaaLaskurit();
31    }
32    void AsetaNopeus(PhysicsObject maila, Vector nopeus)
33    {
34        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom))
35        {
36            maila.Velocity = Vector.Zero;
37            return;
38        }
39        if ((nopeus.Y > 0) && (maila.Top > Level.Top))
40        {
41            maila.Velocity = Vector.Zero;
42            return;
43        }
44     
45
46        maila.Velocity = nopeus;
47    }
48    void LisaaLaskurit()
49    {
50        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0);
51        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0);
52    }
53    IntMeter LuoPisteLaskuri(double x, double y)
54    {
55        IntMeter laskuri = new IntMeter(0);
56        laskuri.MaxValue = 11;
57
58        Label naytto = new Label();
59        naytto.BindTo(laskuri);
60        naytto.X = x;
61        naytto.Y = y;
62        naytto.TextColor = Color.White;
63        naytto.BorderColor = Level.Background.Color;
64        naytto.Color = Level.Background.Color;
65        Add(naytto);
66
67        return laskuri;
68    }
69    void AsetaOhjaimet()
70    {
71        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
72
73        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, null, maila1, nopeusYlos);
74        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
75        Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas);
76        Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
77
78        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos);
79        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
80        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas);
81        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
82
83        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
84    }
85    void AloitaPeli()
86    {
87        Vector impulssi = new Vector(500.0, 0.0);
88        pallo.Hit(impulssi);
89    }
90
91   PhysicsObject LuoMaila(double x, double y)
92    {
93        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0);
94        maila.Shape = Shape.Rectangle;
95        maila.X = x;
96        maila.Y = y;
97        maila.Restitution = 1.0;
98        Add(maila);
99        return maila;
100    }
101    void LuoKentta()
102    {
103        maila1 = LuoMaila(Level.Left + 20, 0);
104        maila2 = LuoMaila(Level.Right - 20, 0);
105        pallo = new PhysicsObject(69, 69);
106        pallo.X = -420.0;
107        pallo.Y = 0.0;
108        pallo.Shape = Shape.Circle;
109        pallo.Color = Color.Cyan;
110        pallo.Restitution = 1.0;
111        Add(pallo);
112
113       AddCollisionHandler(pallo, KasittelePallonTormays);
114
115        vasenReuna = Level.CreateLeftBorder();
116        vasenReuna.Restitution = 1.0;
117        vasenReuna.IsVisible = false;
118        oikeaReuna = Level.CreateRightBorder();
119        oikeaReuna.Restitution = 1.0;
120        oikeaReuna.IsVisible = false;
121        ylaReuna = Level.CreateTopBorder();
122        ylaReuna.Restitution = 1.0;
123        ylaReuna.IsVisible = false;
124        alaReuna = Level.CreateBottomBorder();
125        alaReuna.Restitution = 1.0;
126        alaReuna.IsVisible = false;
127        Level.Background.Color = Color.Black;
128
129        Camera.ZoomToLevel();
130    }
131    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde)
132    {
133        if (kohde == oikeaReuna)
134        {
135            pelaajan1Pisteet.Value += 1;
136        }
137        else if (kohde == vasenReuna)
138        {
139            pelaajan2Pisteet.Value += 1;
140        }
141    }
142}
Note: See TracBrowser for help on using the repository browser.