source: 2010/31/rimapuha/Pong/Peli.cs @ 1525

Revision 1525, 5.3 KB checked in by paaaanro, 13 years ago (diff)

Muokkasin Pong peliä, ja loin uuden projektin maanantai_lisatehtava_1

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