source: 2016/30/TaavettiV/pong/pong/pong/pong.cs @ 10335

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