source: 2016/25/SaanaR/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 7479

Revision 7479, 6.4 KB checked in by koannak, 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 Tasohyppelypeli1 : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 850;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    int kolikoidenMaara = 0;
17    string[] kentat = new string[] { "kentta1", "kentta2", "kentta3" };
18    int kenttaMenossa = 0;
19    Image pelaajanKuva = LoadImage("kärpänen");
20    Image tahtiKuva = LoadImage("Piste");
21    Image AmpiaisenKuva = LoadImage("Ampiainen");
22
23    SoundEffect maaliAani = LoadSoundEffect("Kolikko");
24    SoundEffect hyppyAani = LoadSoundEffect("hyppy");
25    Image pilvenreunat = LoadImage("Pilvi");
26    public override void Begin()
27    {
28        LuoAlkuvalikko();
29    }
30    void LuoAlkuvalikko ()
31    {
32        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
33"Aloita peli", "Lopeta");
34        Add(alkuValikko);
35        alkuValikko.AddItemHandler(0, AloitaPeli);
36        alkuValikko.AddItemHandler(1, Exit);
37        alkuValikko.Color = Color.BlueGray;
38    }
39    void AloitaPeli ()
40    {
41        Gravity = new Vector(0, -1000);
42
43        LuoKentta();
44        LisaaNappaimet();
45
46        Camera.Follow(pelaaja1);
47        Camera.ZoomFactor = 1.2;
48        Camera.StayInLevel = true;
49    }
50    void LisaaAse (Vector paikka, double leveys, double korkeus)
51    {
52        PhysicsObject ase = new PhysicsObject(leveys, korkeus);
53        ase.Position = paikka;
54        ase.Tag = "ase";
55        Add(ase);
56    }
57    void LuoKentta()
58    {
59        TileMap kentta = TileMap.FromLevelAsset(kentat[kenttaMenossa]);
60        kentta.SetTileMethod('#', LisaaTaso);
61        kentta.SetTileMethod('*', LisaaTahti);
62        kentta.SetTileMethod('A', LisaaAmpiainen);
63        kentta.SetTileMethod('N', LisaaPelaaja);
64        kentta.SetTileMethod('-', LisaaAse);
65        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
66        Level.CreateBorders();
67        Level.Background.CreateGradient(Color.LightBlue, Color.SkyBlue);
68    }
69    void LisaaAmpiainen(Vector paikka, Double  leveys, double korkeus)
70    {
71        PhysicsObject ampiainen = new PhysicsObject(leveys, korkeus);
72        ampiainen.Position = paikka;
73        ampiainen.IgnoresGravity = true;
74        Add(ampiainen);
75        ampiainen.Image = AmpiaisenKuva;
76        PathFollowerBrain aivot = new PathFollowerBrain(paikka, paikka+new Vector(-680,0));
77        ampiainen.Brain = aivot;
78        ampiainen.Tag = "ampiainen";
79        aivot.Loop = true;
80    }
81    void LisaaTaso(Vector paikka, double leveys, double korkeus)
82    {
83        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
84        taso.Position = paikka;
85        taso.Shape = Shape.FromImage(pilvenreunat);
86        taso.Image = pilvenreunat;
87        taso.Color = Color.White;
88       
89       
90        Add(taso);
91    }
92
93    void LisaaTahti(Vector paikka, double leveys, double korkeus)
94    {
95        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
96        tahti.IgnoresCollisionResponse = true;
97        tahti.Position = paikka;
98        tahti.Image = tahtiKuva;
99        tahti.Tag = "Piste";
100        kolikoidenMaara++;
101        Add(tahti);
102    }
103
104    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
105    {
106        pelaaja1 = new PlatformCharacter(leveys, korkeus);
107        pelaaja1.Position = paikka;
108        pelaaja1.Mass = 4.0;
109        pelaaja1.Image = pelaajanKuva;
110        AddCollisionHandler(pelaaja1, "Piste", TormaaTahteen);
111        AddCollisionHandler(pelaaja1, "ampiainen", TörmääAmpiaiseen);
112        AddCollisionHandler(pelaaja1, "ase", OtaAse);
113
114        Add(pelaaja1);
115    }
116    void OtaAse (PhysicsObject pelaaja, PhysicsObject ase)
117    {
118        pelaaja1.Weapon = new AssaultRifle(20, 10);
119        ase.Destroy();
120        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
121    }
122    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
123    {
124        ammus.Destroy();
125        if (kohde.Tag.Equals("ampiainen")) kohde.Destroy();
126    }
127    void TörmääAmpiaiseen (PhysicsObject pelaaja, PhysicsObject ampiainen)
128    {
129        AloitaAlusta();
130
131    }
132    void AloitaAlusta ()
133    {
134        ClearAll();
135        Begin();
136    }
137    void LisaaNappaimet()
138
139    {
140        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
141        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
142
143        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
144        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
145        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
146
147        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
148
149        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
150        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
151        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
152        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
153
154        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
155    }
156
157    void Liikuta(PlatformCharacter hahmo, double nopeus)
158    {
159        hahmo.Walk(nopeus);
160    }
161    void AmmuAseella(PlatformCharacter pelaaja)
162    {
163        PhysicsObject ammus = pelaaja.Weapon.Shoot();
164
165        if (ammus != null)
166        {
167            //ammus.Size *= 3;
168            //ammus.Image = ...
169            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
170        }
171    }
172
173    void Hyppaa(PlatformCharacter hahmo, double nopeus)
174    {
175        hahmo.Jump(nopeus);
176        hyppyAani.Play();
177    }
178
179    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
180    {
181        maaliAani.Play();
182        MessageDisplay.Add("You get the coin!");
183        tahti.Destroy();
184        kolikoidenMaara--;
185
186        if (kolikoidenMaara <= 00) SiirrySeuraavaanKenttaan();
187    }
188    void SiirrySeuraavaanKenttaan ()
189    {
190        ClearAll();
191        kenttaMenossa++;
192        if (kenttaMenossa >= kentat.Length) LuoAlkuvalikko();
193        AloitaPeli();
194    }
195
196}
Note: See TracBrowser for help on using the repository browser.