source: 2011/31/AkseliR/Pong/Pong/Pong/Pong/Peli.cs @ 10334

Revision 2537, 4.8 KB checked in by akrauhan, 8 years ago (diff)

BOMS LOL

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