source: 2015/koodauskerho/AarreP/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 7166

Revision 7166, 6.8 KB checked in by sieerinn, 6 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 = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("originalhahmo");
18    Image kukkaKuva = LoadImage("ampujakukka");
19    Image tahtiKuva = LoadImage("sydansydan");
20    Image vihuKuva = LoadImage("originalvihu");
21    Image KuolemaKuva = LoadImage("kuolema");
22    Image AmpujaKuva = LoadImage("ampujahahmo");
23    Image[] animaatioKuvat = LoadImages("originalhahmo", "hahmosydan","hahmosyosydan");
24    Image ammuttuvihuKuva = LoadImage("ammuttuvihu");
25    Image ammusKuva = LoadImage("ammushahmo");
26    SoundEffect maaliAani = LoadSoundEffect("maali");
27
28 
29        AssaultRifle pelaajan1Ase;
30
31            //...
32        public override void Begin()
33    {
34        Gravity = new Vector(0, -1000);
35
36        LuoKentta();
37        LisaaNappaimet();
38
39        Camera.Follow(pelaaja1);
40        Camera.ZoomFactor = 1.2;
41        Camera.StayInLevel = true;
42
43        MediaPlayer.Play("musa");
44        MediaPlayer.IsRepeating = true;
45    }
46
47    void LuoKentta()
48    {
49        TileMap kentta = TileMap.FromLevelAsset("kentta1");
50        kentta.SetTileMethod('#', LisaaTaso);
51        kentta.SetTileMethod('*', LisaaTahti);
52        kentta.SetTileMethod('N', LisaaPelaaja);
53        kentta.SetTileMethod('v', LisaaVihu);
54        kentta.SetTileMethod('A', LisaaKukka);
55        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
56        Level.CreateBorders();
57        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
58    }
59
60    void LisaaTaso(Vector paikka, double leveys, double korkeus)
61    {
62        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
63        taso.Position = paikka;
64        taso.Color = Color.Green;
65        Add(taso);
66    }
67
68    void LisaaTahti(Vector paikka, double leveys, double korkeus)
69    {
70        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
71        tahti.IgnoresCollisionResponse = true;
72        tahti.Position = paikka;
73        tahti.Image = tahtiKuva;
74        tahti.Tag = "tahti";
75        Add(tahti);
76    }
77
78        void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
79    {
80        ammus.Destroy();
81        if (kohde.Tag.ToString() == "vihu")
82        {
83            AmpuuVihun(kohde);
84        }
85    }
86
87    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
88    {
89        pelaaja1 = new PlatformCharacter(50, 70);
90        pelaaja1.Position = paikka;
91        pelaaja1.Mass = 9.0;
92        pelaaja1.Image = pelaajanKuva;
93        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
94        AddCollisionHandler(pelaaja1, "vihu", TormaaVihuun);
95        AddCollisionHandler(pelaaja1, "Kukka", TormaaKukkaan);
96        Add(pelaaja1);
97        pelaajan1Ase = new AssaultRifle(30, 10);
98
99    }
100    void LisaaVihu(Vector paikka, double leveys, double korkeus)
101    {
102        PlatformCharacter vihu = new PlatformCharacter(50, 70);
103        vihu.Position = paikka;
104        vihu.Mass = 9.0;
105        vihu.Image = vihuKuva;
106        vihu.Tag = "vihu";
107        Add(vihu);
108    }
109
110    void LisaaKukka(Vector paikka, double leveys, double korkeus)
111    {
112        PlatformCharacter kukka = new PlatformCharacter(50, 70);
113        kukka.Position = paikka;
114        kukka.Mass = 9.0;
115        kukka.Image = kukkaKuva;
116        kukka.Tag = "Kukka";
117        Add(kukka);
118    }
119
120    void Tahtaa(AnalogState hiirenLiike)
121    {
122        Vector suunta = (Mouse.PositionOnWorld - pelaajan1Ase.AbsolutePosition).Normalize();
123        pelaajan1Ase.Angle = suunta.Angle;
124    }
125    void LisaaNappaimet()
126    {
127
128        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
129        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
130
131        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
132        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
133        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
134        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
135
136        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
137
138        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
139        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
140        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
141
142        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
143    }
144
145    void Liikuta(PlatformCharacter hahmo, double nopeus)
146    {
147        hahmo.Walk(nopeus);
148    }
149
150    void Hyppaa(PlatformCharacter hahmo, double nopeus)
151    {
152        hahmo.Jump(nopeus);
153    }
154
155    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
156    {
157        maaliAani.Play();
158        MessageDisplay.Add("Söit sydämen!");
159        tahti.Destroy();
160
161        Animation animaatio = new Animation(animaatioKuvat);
162        animaatio.FPS = 2;
163        pelaaja1.PlayAnimation(animaatio);
164    }
165 
166        void AmpuuVihun(PhysicsObject vihu)
167    {
168        maaliAani.Play();
169        MessageDisplay.Add("ammuit vihun");
170        vihu.Destroy();
171
172        Animation animaatio = new Animation(animaatioKuvat);
173        animaatio.FPS = 2;
174        pelaaja1.PlayAnimation(animaatio);
175    }
176
177    void TormaaVihuun(PhysicsObject hahmo, PhysicsObject vihu)
178    {
179        maaliAani.Play();
180        MessageDisplay.Add("kuolit :(");
181        hahmo.Destroy();
182
183        PhysicsObject kuva = PhysicsObject.CreateStaticObject(500, 500);
184        kuva.Position = hahmo.Position;
185        kuva.Image = KuolemaKuva;
186        Add(kuva);
187    }
188    void TormaaKukkaan(PhysicsObject hahmo, PhysicsObject kukka)
189    {
190       // hahmo.Image = AmpujaKuva;
191
192        //Ammusten määrä aluksi:
193        pelaajan1Ase.Ammo.Value = 1000;
194       
195        //Mitä tapahtuu kun ammus osuu johonkin?
196        pelaajan1Ase.ProjectileCollision = AmmusOsui;
197
198
199        pelaaja1.Add(pelaajan1Ase);
200        Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella");
201    }
202    void AmmuAseella(AssaultRifle ase)
203    {
204        PhysicsObject ammus = ase.Shoot();
205       
206   
207
208        if (ammus != null)
209        {
210            ammus.Image = ammusKuva;
211            //ammus.Size *= 3;
212            //ammus.Image = ...
213            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
214        }
215    }
216}
Note: See TracBrowser for help on using the repository browser.