source: 2010/31/alisa@ala-konni.fi/Table Pong/Peli.cs @ 1646

Revision 1599, 4.6 KB checked in by paaaanro, 10 years ago (diff)

Oma peli aloitettu

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