source: 2016/27/KonstantinosK/pong/pong/pong/pong.cs @ 7895

Revision 7895, 4.2 KB checked in by karkaite, 4 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{
11    PhysicsObject pallo;
12    Vector nopeusylos = new Vector(0, 200);
13    Vector nopeusalas = new Vector(0,-200);
14
15
16    PhysicsObject maila1;
17    PhysicsObject maila2;
18    IntMeter pelaajan1Pisteet;
19    IntMeter pelaajan2Pisteet;
20    PhysicsObject vasenReuna;
21    PhysicsObject oikeaReuna;
22
23    public override void Begin()
24    {
25        // TODO: Kirjoita ohjelmakoodisi tähän
26        LuoKentta();
27        aloitapeli();
28        AsetaOhjaimet();
29        LisaaLaskurit();
30    }
31    void LisaaLaskurit()
32    {
33        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0);
34        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0);
35
36    }
37    IntMeter LuoPisteLaskuri(double x, double y)
38    {
39        IntMeter laskuri = new IntMeter(0);
40        laskuri.MaxValue = 10;
41        Label naytto = new Label();
42        naytto.BindTo(laskuri);
43        naytto.X = x;
44        naytto.Y = y;
45        naytto.TextColor = Color.White;
46        naytto.BorderColor = Level.Background.Color;
47        naytto.Color = Level.Background.Color;
48        Add(naytto);
49
50
51
52        return laskuri;
53    }
54    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde)
55    {
56        if (kohde == oikeaReuna)
57        {
58            pelaajan1Pisteet.Value += 1;
59        }
60        else if (kohde == vasenReuna)
61        {
62            pelaajan2Pisteet.Value += 1;
63        }
64
65
66
67
68    }
69
70    void LuoKentta() {
71        pallo = new PhysicsObject(40.0, 40.0);
72        pallo.X = -200.0;
73        pallo.Y = 0.0;
74        pallo.Shape = Shape.Circle;
75        Add(pallo);
76     maila1 =   LuoMaila(Level.Left + 20.0, 0.0);
77     maila2 =   LuoMaila(Level.Right - 20.0, 0.0);
78        AddCollisionHandler(pallo, KasittelePallonTormays);
79        Vector impulssi = new Vector(500.0, 0.0);
80        pallo.Hit(impulssi);
81         vasenReuna = Level.CreateLeftBorder();
82        vasenReuna.Restitution = 1.0;
83        vasenReuna.IsVisible = false;
84        oikeaReuna = Level.CreateRightBorder();
85        oikeaReuna.Restitution = 1.0;
86        oikeaReuna.IsVisible = false;
87       
88
89
90        Level.Background.Color = Color.DarkGreen;
91        Camera.ZoomToLevel();
92    }
93    void aloitapeli()
94    {
95
96
97    }
98PhysicsObject  LuoMaila(double x, double y)
99    {
100        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0);
101        maila.Shape = Shape.Rectangle;
102        maila.X = x;
103        maila.Y = y;
104        maila.Restitution = 1.0;
105        Add(maila);
106        return maila;
107    }
108    void AsetaOhjaimet()
109    {
110        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "pelaaja 1: liikuta mailaa ylös", maila1, nopeusylos);
111        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
112        Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "pelaaja 1: liikuta mailaa alas", maila1, nopeusalas);
113        Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
114        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "pelaaja 2:liikuta maila ylös", maila2, nopeusylos);
115        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
116        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "pelaaja 2: liikuta mailaa ylös", maila2, nopeusalas);
117        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
118        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
119        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
120        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
121    }
122
123    void AsetaNopeus(PhysicsObject maila, Vector nopeus)
124    {
125
126        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom))
127        {
128            maila.Velocity = Vector.Zero;
129            return;
130        }
131        if ((nopeus.Y > 0) && (maila.Top > Level.Top))
132        {
133            maila.Velocity = Vector.Zero;
134            return;
135        }
136
137        maila.Velocity = nopeus;
138    }
139
140}
141
Note: See TracBrowser for help on using the repository browser.