source: 2016/30/JuhaniP/Gunjump/Gunjump/Gunjump/Gunjump.cs @ 8246

Revision 8246, 6.9 KB checked in by ukjupenn, 5 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 Gunjump : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14    PlatformCharacter pelaaja1;
15    PhysicsObject vihollinen;
16    Image pelaajanKuva = LoadImage("norsu");
17    Image tahtiKuva = LoadImage("tahti");
18    Image mutantman = LoadImage("mutantman");
19    SoundEffect maaliAani = LoadSoundEffect("maali");
20    Image ovenkuva = LoadImage("ruskeaovi");
21    public override void Begin()
22    {
23        Aloitapeli();
24       
25    }
26    void Aloitapeli()
27    {
28        ClearAll();
29        Gravity = new Vector(0, -1000);
30        LuoKentta();
31        LisaaNappaimet();
32        Camera.Follow(pelaaja1);
33        Camera.ZoomFactor = 1.2;
34        Camera.StayInLevel = true;
35    }
36    void LuoKentta()
37    {
38        TileMap kentta = TileMap.FromLevelAsset("kentta1");
39        kentta.SetTileMethod('#', LisaaTaso);
40        kentta.SetTileMethod('N', LisaaPelaaja);
41        kentta.SetTileMethod('*', LisaaTahti);
42        kentta.SetTileMethod('V', LisaaVihollinen);
43        kentta.SetTileMethod('L', Lisaaovi);
44
45        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
46        Level.CreateBorders();
47        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
48    }
49
50    void LisaaTaso(Vector paikka, double leveys, double korkeus)
51    {
52        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
53        taso.Position = paikka;
54        taso.Color = Color.Green;
55        Add(taso);
56    }
57
58    void LisaaTahti(Vector paikka, double leveys, double korkeus)
59    {
60        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
61        tahti.IgnoresCollisionResponse = true;
62        tahti.Position = paikka;
63        tahti.Image = tahtiKuva;
64        tahti.Tag = "tahti";
65        Add(tahti);
66    }
67
68
69    // Aliohjelma joka ajetaan kun olio on tarpeeksi lähellä kohdetta.
70    void mitaTapahtuuKunOllaanLahella(AssaultRifle vihollisenase)
71    {
72        VihollinenAmmuPyssylla(vihollisenase);
73
74
75    }
76    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
77
78    {
79        pelaaja1 = new PlatformCharacter(leveys, korkeus);
80        pelaaja1.Position = paikka;
81        pelaaja1.Tag = "soturi";
82        pelaaja1.Mass = 4.0;
83        pelaaja1.Image = pelaajanKuva;
84        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
85        AddCollisionHandler(pelaaja1, "voitto", TormaaOveen);
86        Add(pelaaja1);
87        pelaaja1.Weapon = new AssaultRifle(30, 10);
88
89    }
90    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
91    {
92
93        vihollinen = new PhysicsObject(leveys, korkeus);
94        vihollinen.Image = mutantman;
95        vihollinen.Tag = "mutantman";
96        vihollinen.Position = paikka;
97        vihollinen.CanRotate = false;
98        // RandomMoverBrain satunnaisAivot = new RandomMoverBrain(200);
99        Add(vihollinen);
100        AssaultRifle vihollisenase = new AssaultRifle(40, 40);
101        vihollisenase.FireRate = 5.0;
102        vihollisenase.ProjectileCollision = ammusosuu;
103
104        vihollinen.Add(vihollisenase);
105        FollowerBrain seuraajanAivot = new FollowerBrain("soturi");
106
107        seuraajanAivot.Active = true;
108        seuraajanAivot.Speed = 300;                 // Millä nopeudella kohdetta seurataan
109        seuraajanAivot.DistanceFar = 600;           // Etäisyys jolla aletaan seurata kohdetta
110        seuraajanAivot.DistanceClose = 200;         // Etäisyys jolloin ollaan lähellä kohdetta
111        seuraajanAivot.StopWhenTargetClose = true;  // Pysähdytään kun ollaan lähellä kohdetta
112                                                    //seuraajanAivot.FarBrain = satunnaisAivot;   // Käytetään satunnaisaivoja kun ollaan kaukana
113        seuraajanAivot.TargetClose += delegate { mitaTapahtuuKunOllaanLahella(vihollisenase); };
114
115        vihollinen.Brain = seuraajanAivot;
116        vihollinen.Brain.Active = true;
117    }
118
119    void LisaaNappaimet()
120    {
121        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
122        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
123
124        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
125        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
126        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
127
128        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
129        Keyboard.Listen(Key.Space, ButtonState.Down, PelaajaAmmuAseella, "Ammu", pelaaja1);
130        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
131        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
132        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
133
134        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
135    }
136
137    void Liikuta(PlatformCharacter hahmo, double nopeus)
138    {
139        hahmo.Walk(nopeus);
140    }
141
142    void Hyppaa(PlatformCharacter hahmo, double nopeus)
143    {
144        hahmo.Jump(nopeus);
145    }
146
147    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
148    {
149        maaliAani.Play();
150        MessageDisplay.Add("Keräsit tähden!");
151        tahti.Destroy();
152    }
153
154    void PelaajaAmmuAseella(PlatformCharacter pelaaja)
155
156    {
157        PhysicsObject ammus = pelaaja.Weapon.Shoot();
158
159        if (ammus != null)
160        {
161            AddCollisionHandler(ammus, "mutantman", ammusosuu);
162            //ammus.Size *= 3;
163            //ammus.Image = ...
164            ammus.MaximumLifetime = TimeSpan.FromSeconds(1.0);
165        }
166
167    }
168    //ammus.Destroy();
169    void ammusosuu(PhysicsObject ammus, PhysicsObject kohde)
170    {
171
172        kohde.Destroy();
173    }
174
175    void VihollinenAmmuPyssylla(AssaultRifle ase)
176
177    {
178        PhysicsObject ammus = ase.Shoot();
179
180        if (ammus != null)
181        {
182            MessageDisplay.Add("Pumpam");
183            AddCollisionHandler(ammus, "soturi", ammusosuu);
184            //ammus.Size *= 3;
185            //ammus.Image = ...
186            ammus.MaximumLifetime = TimeSpan.FromSeconds(1.0);
187        }
188
189    }
190
191    void Lisaaovi(Vector paikka,double leveys,double korkeus)
192    { 
193        PhysicsObject ovi = new PhysicsObject(leveys, korkeus);
194        ovi.Shape = Shape.Rectangle;
195        ovi.Position = paikka;
196        ovi.Image = ovenkuva;
197        ovi.Tag = "voitto";
198        Add(ovi);
199
200    }
201   void TormaaOveen(PhysicsObject pelaaja, PhysicsObject ovi)
202    {
203        Aloitapeli();
204       
205    }
206
207} 
208   
209   
Note: See TracBrowser for help on using the repository browser.