source: 2015/27/JimiS/tasohyppely/hyppely/hyppely/hyppely/hyppely.cs @ 6596

Revision 6596, 6.4 KB checked in by jivesuor, 5 years ago (diff)

Vihollisille lisätty kuva ja aivot.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class hyppely : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PhysicsObject alaReuna;
16    PhysicsObject vasenReuna;
17    PhysicsObject oikeaReuna;
18 
19
20    PlatformCharacter pelaaja1;
21
22    Image pelaajanKuva = LoadImage("pelaajahahmo");
23    Image tahtiKuva = LoadImage("tahti");
24    Image vihukuva = LoadImage("vihu");
25
26    IntMeter pelaajan1Elamat;
27
28    Vector pelaajanaloituspaikka;
29   
30
31    SoundEffect maaliAani = LoadSoundEffect("maali");
32
33    public override void Begin()
34    {
35        Gravity = new Vector(0, -1000);
36
37        LuoKentta();
38        LisaaNappaimet();
39
40        AddCollisionHandler(pelaaja1, alaReuna, KasittelePelaajanPutoaminen);
41
42        Camera.Follow(pelaaja1);
43        Camera.ZoomFactor = 1.0;
44        Camera.StayInLevel = 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('A', LisaaPalikka);
54        kentta.SetTileMethod('V', LisaaVihu);
55        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
56       
57     
58        alaReuna = Level.CreateBottomBorder();
59        alaReuna.Restitution = 1.0;
60        alaReuna.IsVisible = false;
61
62        vasenReuna = Level.CreateLeftBorder();
63        vasenReuna.Restitution = 1.0;
64        alaReuna.IsVisible = false;
65
66        oikeaReuna = Level.CreateRightBorder();
67        oikeaReuna.Restitution = 1.0;
68        oikeaReuna.IsVisible = false;
69       
70
71        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
72    }
73
74    void LisaaVihu(Vector paikka, double leveys, double korkeus)
75    {
76        PlatformCharacter vihu = new PlatformCharacter(leveys, korkeus);
77        vihu.Position = paikka;
78        vihu.Color = Color.Black;
79        vihu.Tag = "pahis";
80        vihu.Image = vihukuva;
81        Add(vihu);
82
83        PlatformWandererBrain tasoaivot = new PlatformWandererBrain();
84        tasoaivot.Speed = 100;
85        tasoaivot.FallsOffPlatforms = true;
86        tasoaivot.JumpSpeed = 400;
87        tasoaivot.TriesToJump = true;
88
89        vihu.Brain = tasoaivot;
90
91    }
92
93    void LisaaPalikka(Vector paikka, double leveys, double korkeus)
94    {
95        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
96        palikka.Position = paikka;
97        palikka.Color = Color.Black;
98        Add(palikka);
99    }
100
101    void LisaaTaso(Vector paikka, double leveys, double korkeus)
102    {
103        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
104        taso.Position = paikka;
105        taso.Color = Color.Green;
106        Add(taso);
107    }
108
109    void LisaaTahti(Vector paikka, double leveys, double korkeus)
110    {
111        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
112        tahti.IgnoresCollisionResponse = true;
113        tahti.Position = paikka;
114        tahti.Image = tahtiKuva;
115        tahti.Tag = "tahti";
116        Add(tahti);
117    }
118
119    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
120    {
121        pelaaja1 = new PlatformCharacter(leveys, korkeus);
122        pelaaja1.Position = paikka;
123        pelaajanaloituspaikka = paikka;
124        pelaaja1.Mass = 4.0;
125        pelaaja1.Image = pelaajanKuva;
126        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
127        AddCollisionHandler(pelaaja1, "pahis", TormaaVihuun);
128        Add(pelaaja1);
129
130        pelaajan1Elamat = new IntMeter(3);
131        pelaajan1Elamat.MaxValue = 20;
132        Label naytto = new Label();
133        naytto.BindTo(pelaajan1Elamat);
134       
135        naytto.Y += pelaaja1.Height;
136        naytto.TextColor = Color.Black;
137        naytto.BorderColor = Color.Black;
138        naytto.Color = Color.White;
139        naytto.Size *= 0.5;
140        naytto.TextScale = new Vector(0.5, 0.5);
141        pelaaja1.Add(naytto);
142    }
143
144    void TormaaVihuun(PhysicsObject pelaaja, PhysicsObject vihu)
145    {
146        MessageDisplay.Add("Auts! Törmäsit Vihuun!");
147
148        pelaajan1Elamat.Value -= 1;
149
150        pelaaja1.Position = pelaajanaloituspaikka;
151
152        if (pelaajan1Elamat == 0)
153        {
154            pelaaja1.Destroy();
155            MessageDisplay.Add("Pelaaja 1 hävisi pelin.");
156            Timer.SingleShot(3.0, Exit);
157        }
158    }
159
160
161    void KasittelePelaajanPutoaminen(PhysicsObject pelaaja1, PhysicsObject kohde)
162    {
163 
164            pelaajan1Elamat.Value -= 1;
165
166            pelaaja1.Position = pelaajanaloituspaikka;
167
168            if (pelaajan1Elamat == 0)
169            { 
170                pelaaja1.Destroy();
171                MessageDisplay.Add("Pelaaja 1 hävisi pelin.");
172                Timer.SingleShot(3.0, Exit);
173            }
174       
175    }
176
177   
178
179    void LisaaNappaimet()
180    {
181        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
182        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
183
184        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
185        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
186        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
187
188        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
189
190        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
191        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
192        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
193
194        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
195    }
196
197    void Liikuta(PlatformCharacter hahmo, double nopeus)
198    {
199        hahmo.Walk(nopeus);
200    }
201
202    void Hyppaa(PlatformCharacter hahmo, double nopeus)
203    {
204        hahmo.Jump(nopeus);
205    }
206
207    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
208    {
209        maaliAani.Play();
210        MessageDisplay.Add("Keräsit tähden!");
211        tahti.Destroy();
212    }
213}
Note: See TracBrowser for help on using the repository browser.