source: 2017/utsjoki/JounaL/Pong/Pong/Pong/Pong.cs @ 9061

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