source: 2010/27/Vekakart/Pong/Peli.cs @ 1105

Revision 1105, 4.7 KB checked in by paaaanro, 9 years ago (diff)

Valmistelin Pong pelin ja pirrsin suunittelu kuvaa

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5
6public class Peli : PhysicsGame
7{
8    Vector NopeusYlos = new Vector(0.0, 200.0);
9    Vector NopeusAlas = new Vector(0.0, -200.0);
10
11    PhysicsObject Pallo;
12    PhysicsObject Maila1;
13    PhysicsObject Maila2;
14
15    PhysicsObject oikeareuna;
16    PhysicsObject vasenreuna;
17
18    IntMeter Pelaajan1Pisteet;
19    IntMeter Pelaajan2Pisteet;
20    protected override void Begin()
21    {
22        LuoKentta();
23        AsetaOhjaimet();
24        ALoitaPeli();
25        LisaaLaskurit();
26    }
27
28    void LuoKentta()
29    {
30        Pallo = new PhysicsObject(40, 40);
31        Pallo.Shape = Shapes.Circle;
32        Pallo.X = -200.0;
33        Pallo.Y = 0.0;
34        Pallo.Restitution = 1.0;
35        Add(Pallo);
36        AddCollisionHandler(Pallo, KasittelePallonTormays);
37
38        Maila1 = LuoMaila(Level.Left + 20.0, 0.0);
39        Maila2 = LuoMaila(Level.Right - 20.0, 0.0);
40
41
42        vasenreuna = Level.CreateLeftBorder ();
43        vasenreuna.Restitution = 1.0;
44        vasenreuna.IsVisible = false;
45        oikeareuna = Level.CreateRightBorder();
46        oikeareuna.Restitution = 1.0;
47        oikeareuna.IsVisible = false;
48        PhysicsObject ylaReuna = Level.CreateTopBorder();
49        ylaReuna.Restitution = 1.0;
50        ylaReuna.IsVisible = false;
51        PhysicsObject alaReuna = Level.CreateBottomBorder();
52        alaReuna.Restitution = 1.0;
53        alaReuna.IsVisible = false;
54       
55        Level.BackgroundColor = Color.Black;
56
57        Camera.ZoomToLevel(1.0);
58    }
59
60    void ALoitaPeli()
61    {
62        Vector impulssi = new Vector(500.0, 0.0);
63        Pallo.Hit (impulssi);
64    }
65
66    PhysicsObject LuoMaila(double x, double y)
67    {
68        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0);
69        maila.Shape = Shapes.Rectangle;
70        maila.X = x;
71        maila.Y = y;
72        maila.Restitution = 1.0;
73        Add(maila);
74        return maila;
75    }
76
77    void LiikutaMailaaYlos(PhysicsObject maila)
78    {
79        if (maila.Y >=Level.Top)
80        {
81        maila.Velocity = Vector.Zero;
82        return;
83        }
84        Vector nopeus = new Vector(0.0, 200.0);
85        maila.Velocity = nopeus;
86    }
87
88    void LiikutaMailaaAlas(PhysicsObject maila)
89    {
90        Vector nopeus = new Vector(0.0, -200.0);
91        maila.Velocity = nopeus;
92    }
93
94    void PysaytaMaila(PhysicsObject maila)
95    {
96        maila.Velocity = Vector.Zero;
97    }
98
99    void AsetaOhjaimet()
100    {
101        Keyboard.Listen (Key.W, ButtonState.Down, AsetaNopeus, "pelaaja 1: Liikuta mailaa ylös", Maila1, NopeusYlos);
102        Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, Maila1, Vector.Zero);
103        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", Maila1, NopeusAlas);
104        Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, Maila1, Vector.Zero);
105
106        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "pelaaja 2: Liikuta mailaa ylös", Maila2, NopeusYlos);
107        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, Maila2, Vector.Zero);
108        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", Maila2, NopeusAlas);
109        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, Maila2, Vector.Zero);
110
111        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
112        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
113
114    }
115
116    void AsetaNopeus(PhysicsObject maila, Vector nopeus)
117    {
118        if ((nopeus.Y < 0) && (maila.Y < Level.Bottom))
119        {
120            maila.Velocity = Vector.Zero;
121            return;
122        }
123        if ((nopeus.Y > 0) && (maila.Y > Level.Top))
124        {
125            maila.Velocity = Vector.Zero;
126            return;
127        }
128
129            maila.Velocity = nopeus;
130
131    }
132
133    void LisaaLaskurit()
134    {
135        Pelaajan1Pisteet = Luopistelaskuri(Screen.Left + 100.0, Screen.Top - 100.0);
136        Pelaajan2Pisteet = Luopistelaskuri(Screen.Right - 100.0, Screen.Top - 100.0);
137    }
138
139    IntMeter Luopistelaskuri(double x, double y)
140    {
141        IntMeter laskuri = new IntMeter(0);
142        laskuri.MaxValue = 10;
143        Label naytto = new Label ();
144        naytto.BindTo (laskuri);
145        naytto.X = x;
146        naytto.Y = y;
147        naytto.TextColor = Color.White;
148        Add(naytto);
149        return laskuri;
150
151
152    }
153
154    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde)
155    {
156        if (kohde == oikeareuna)
157        {
158            Pelaajan1Pisteet.Value += 1;
159    }
160        else if (kohde == vasenreuna)
161        {
162            Pelaajan2Pisteet.Value += 1;
163        }
164    }
165
166
167
168}
Note: See TracBrowser for help on using the repository browser.