source: 2013/27/JoonasM/RnGPlatformShooter/RnGPlatformShooter/RnGPlatformShooter/RnGPlatformShooter.cs @ 4362

Revision 4362, 6.7 KB checked in by joarmuho, 8 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class RnGPlatformShooter : PhysicsGame
10{
11    const double nopeus = 300;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    double VanhaTaso = 0;
16    int CameraSpeed = 30;
17
18    PlatformCharacter pelaaja1;
19
20    Image pelaajanKuva = LoadImage("norsu");
21    Image tahtiKuva = LoadImage("tahti");
22    Image WumpaFruit = LoadImage("Wumpa");
23
24    IntMeter pisteLaskuri;
25
26    SoundEffect maaliAani = LoadSoundEffect("maali");
27
28    AssaultRifle pelaajan1Ase;
29
30    public override void Begin()
31    {
32        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "High Score", "Lopeta");
33        alkuValikko.AddItemHandler(0, StartGame);
34        alkuValikko.AddItemHandler(1, SeeHighScore);
35        alkuValikko.AddItemHandler(2, Exit);
36        Add(alkuValikko);
37    }
38
39    void StartGame()
40    {
41        Gravity = new Vector(0, -1500);
42
43        Camera.X = 200;
44        Camera.Velocity = new Vector(CameraSpeed, 0);
45        Camera.ZoomFactor = 1.5;
46
47        LuoKentta();
48        LisaaNappaimet();
49    }
50
51    void LuoKentta()
52    {
53        VanhaTaso = 0;
54        PhysicsObject StartingPlatform = PhysicsObject.CreateStaticObject(80, 20);
55        StartingPlatform.Y = 100;
56        StartingPlatform.Color = Color.Red;
57        Add(StartingPlatform);
58        pisteLaskuri = new IntMeter(0);
59        LisaaPelaaja();
60
61        Level.Background.CreateGradient(RandomGen.NextColor(), RandomGen.NextColor());
62
63        Timer Ajastin = new Timer();
64        Ajastin.Interval = 0.5;
65        Ajastin.Timeout += delegate
66        {
67            pisteLaskuri.Value += 1;
68            if (Camera.Velocity.X < 210)
69            {
70                Camera.Velocity *= 1.05;
71            }
72           
73            if (pelaaja1.Y < -400)
74            {
75                HighScore();
76            }
77
78            if (pelaaja1.X < Camera.ScreenToWorld(new Vector(Screen.Left, 0)).X)
79            {
80                HighScore();
81            }
82
83        };
84        Ajastin.Start();
85
86       
87       
88        Label pisteNaytto = new Label();
89        pisteNaytto.X = Screen.Right - 100;
90        pisteNaytto.Y = Screen.Top - 100;
91        pisteNaytto.TextColor = Color.Black;
92        pisteNaytto.Color = Color.White;
93        pisteNaytto.Title = "Pisteet";
94
95        pisteNaytto.BindTo(pisteLaskuri);
96        Add(pisteNaytto);
97    }
98
99    void LisaaTaso(bool ensimmainenKerta = false)
100    {
101        PhysicsObject taso = PhysicsObject.CreateStaticObject(64, 20);
102        taso.X = RandomGen.NextInt(150, 325) + VanhaTaso;
103        taso.Y = RandomGen.NextInt(-200, 75);
104        taso.Color = RandomGen.NextColor();
105        taso.Oscillate(Vector.UnitY, RandomGen.NextInt(50, 200), 0.5);
106        VanhaTaso = taso.X;
107        Add(taso);
108
109        if (ensimmainenKerta == false)
110        {
111            if (RandomGen.NextInt(1, 7) == 1)
112            {
113                PhysicsObject vihu = PhysicsObject.CreateStaticObject(32, 32);
114                vihu.X = taso.X;
115                vihu.Y = RandomGen.NextInt(0, 10) + taso.Y;
116                vihu.Image = tahtiKuva;
117                vihu.Tag = "vihu";
118                vihu.AngularVelocity = 10.0;
119                Add(vihu);
120            }
121        }
122        if (RandomGen.NextInt(1, 10) == 1)
123        {
124            PhysicsObject wumpaf = PhysicsObject.CreateStaticObject(32, 32);
125            wumpaf.X = (taso.X + RandomGen.NextInt(50,100));
126            wumpaf.Y = taso.Y+ RandomGen.NextInt(50,200);
127            wumpaf.Image = WumpaFruit;
128            wumpaf.Tag = "wumpa";
129            Add(wumpaf);
130        }
131    }
132
133    void LisaaPelaaja()
134    {
135        pelaaja1 = new PlatformCharacter(64, 64);
136        pelaaja1.Y = 150;
137        pelaaja1.Mass = 4.0;
138        pelaaja1.Image = pelaajanKuva;
139        Add(pelaaja1);
140        pelaajan1Ase = new AssaultRifle(30, 10);
141        pelaaja1.Add(pelaajan1Ase);
142        AddCollisionHandler(pelaaja1, "wumpa", CollisionHandler.DestroyTarget);
143        AddCollisionHandler(pelaaja1, "wumpa", CollisionHandler.AddMeterValue(pisteLaskuri, 50));
144        AddCollisionHandler(pelaaja1, "vihu", TormaysHighScore);
145        LisaaTaso(true);
146    }
147
148    void LisaaNappaimet()
149    {
150        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
151        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
152
153        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää pelin");
154
155        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
156
157        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
158        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
159        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
160
161        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
162
163        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
164        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
165        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
166
167        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
168    }
169
170    void Liikuta(PlatformCharacter hahmo, double nopeus)
171    {
172        hahmo.Walk(nopeus);
173    }
174
175    void Hyppaa(PlatformCharacter hahmo, double nopeus)
176    {
177        hahmo.Jump(nopeus);
178        LisaaTaso();
179    }
180
181    void AmmuAseella(AssaultRifle ase)
182    {
183        PhysicsObject ammus = ase.Shoot();
184        if (ammus!=null)
185        {
186            AddCollisionHandler(ammus, "vihu", CollisionHandler.AddMeterValue(pisteLaskuri, 100));
187            AddCollisionHandler(ammus, "vihu", CollisionHandler.ExplodeTarget(50, true));
188            AddCollisionHandler(ammus, CollisionHandler.DestroyObject);
189        }
190    }
191
192
193    void TormaysHighScore(PhysicsObject Tormaaja, PhysicsObject Kohde)
194    {
195        HighScore();
196    }
197
198    void HighScore()
199    {
200        ClearAll();
201        EasyHighScore topLista = new EasyHighScore();
202        topLista.EnterAndShow(pisteLaskuri.Value);
203        topLista.HighScoreWindow.Closed += delegate { Begin(); };
204    }
205    void SeeHighScore()
206    {
207        EasyHighScore topLista = new EasyHighScore();
208        topLista.Show();
209        topLista.HighScoreWindow.Closed += delegate { Begin(); };
210    }
211
212}
Note: See TracBrowser for help on using the repository browser.