source: 2015/30/SonjaH/GorillaPeli/GorillaPeli/GorillaPeli/GorillaPeli.cs @ 7085

Revision 7085, 4.5 KB checked in by soonhuot, 4 years ago (diff)

Uusi versio apinapelistä.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class GorillaPeli : PhysicsGame
10{
11
12    Vector nopeusVasemmalle = new Vector(0, 200);
13    Vector nopeusOikealle = new Vector(0, -200);
14    PhysicsObject gorilla;
15
16
17    PhysicsObject vasenReuna;
18    PhysicsObject oikeaReuna;
19 
20
21    /// <summary>
22    /// Pelin pääohjelma.
23    /// </summary>
24    public override void Begin()
25    {
26
27        LuoKentta();
28        LuoOhjaimet();
29        AloitaPeli();
30    }
31
32
33    /// <summary>
34    /// Aliohjelma, jossa luodaan kenttä.
35    /// </summary>
36    public void LuoKentta()
37    {
38        vasenReuna = Level.CreateLeftBorder();
39        vasenReuna.Restitution = 1.0;
40        vasenReuna.KineticFriction = 0.0;
41        vasenReuna.IsVisible = false;
42
43        oikeaReuna = Level.CreateRightBorder();
44        oikeaReuna.Restitution = 1.0;
45        oikeaReuna.KineticFriction = 0.0;
46        oikeaReuna.IsVisible = false;
47
48        PhysicsObject ylaReuna = Level.CreateTopBorder();
49        ylaReuna.Restitution = 1.0;
50        ylaReuna.KineticFriction = 0.0;
51        ylaReuna.IsVisible = false;
52
53        PhysicsObject alaReuna = Level.CreateBottomBorder();
54        alaReuna.Restitution = 1.0;
55        alaReuna.IsVisible = false;
56        alaReuna.KineticFriction = 0.0;
57
58        Level.Background.Color = Color.Black;
59
60        Camera.ZoomToLevel();
61    }
62
63
64    ///<summary>
65    ///Aliohjelma, jossa aloitetaan peli.
66    /// </summary>
67    public void AloitaPeli()
68    {
69
70
71        LuoGorilla(200);
72
73        // Luodaan banaaneja.
74        Timer ajastinBanaani = new Timer();
75        ajastinBanaani.Interval = 2.5;
76        ajastinBanaani.Timeout += LisaaBanaaneja;
77        ajastinBanaani.Start();
78
79    }
80
81
82
83
84    /// <summary>
85    /// Aliohjelma, jossa luodaan banaani.
86    /// </summary>
87    /// <param name="bananinLeveys">Banaanin leveys</param>
88    /// <param name="banaaniKorkeus">Banaanin korkeus</param>
89    /// <param name="y">Banaanin y-koordinaatti</param>
90    /// <returns>Banaani</returns>
91    private PhysicsObject LuoBanaani(double leveys, double korkeus, double y)
92    {
93        PhysicsObject banaani = new PhysicsObject(leveys, korkeus, Shape.Rectangle);
94        banaani.X = RandomGen.NextDouble(Level.Left, Level.Right);
95        banaani.Y = y; 
96        Gravity = new Vector(0, -100);
97        banaani.Restitution = 0.0;
98        banaani.CollisionIgnoreGroup = 1;
99        banaani.IgnoresExplosions = true;
100
101        Add(banaani);
102
103        return banaani;
104    }
105
106
107    /// <summary>
108    /// Aliohjelma, jossa luodaan monta banaania.
109    /// </summary>
110    private void LisaaBanaaneja()
111    {
112        LuoBanaani(53, 81, Level.Top);
113    }
114
115
116    /// <summary>
117    /// Aliohjelma, jossa luodaan gorilla.
118    /// </summary>
119    /// <param name="x">Gorillan x-koordinaatti</param>
120    /// <returns>Gorilla</returns>
121    private PhysicsObject LuoGorilla(double x)
122    {
123        gorilla = new PhysicsObject(119, 110, Shape.Rectangle);
124        gorilla.Shape = Shape.Circle;
125        gorilla.Color = Color.Blue;
126        gorilla.X = x;
127        gorilla.Y = Level.Bottom + 60;
128        gorilla.Restitution = 0.0;
129        gorilla.IgnoresCollisionResponse = true;
130        gorilla.IgnoresExplosions = true;
131        gorilla.IgnoresPhysicsLogics = true;
132        gorilla.Tag = "gorilla";
133
134
135        Add(gorilla);
136        return gorilla;
137    }
138
139
140    /// <summary>
141    /// Asetetaan gorillalle ohjaimet.
142    /// </summary>
143    public void LuoOhjaimet()
144    {
145
146        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta gorillaa vasemmalle", gorilla, nopeusVasemmalle);
147        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, gorilla, Vector.Zero);
148        Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta gorillaa oiekalle", gorilla, nopeusOikealle);
149        Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, gorilla, Vector.Zero);
150
151        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
152    }
153
154    void AsetaNopeus(PhysicsObject gorilla, Vector nopeus)
155    {
156        if ((nopeus.Y < 0) && (gorilla.Left < Level.Left))
157        {
158            gorilla.Velocity = Vector.Zero;
159            return;
160        }
161        if ((nopeus.Y > 0) && (gorilla.Right > Level.Right))
162        {
163            gorilla.Velocity = Vector.Zero;
164            return;
165        }
166
167        gorilla.Velocity = nopeus;
168
169    }
170
171   
172}
Note: See TracBrowser for help on using the repository browser.