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

Revision 6611, 6.4 KB checked in by jivesuor, 6 years ago (diff)

Kenttää pidennetty ja vihollisia lisätty. Tasojen värit vaihdettu.

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