source: 2016/27/SamuelN/PlatformJumper/PlatformJumper/PlatformJumper/PlatformJumper.cs @ 7900

Revision 7900, 4.4 KB checked in by saalniit, 3 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
9
10public class PlatformJumper : PhysicsGame
11{
12    const double nopeus = 200;
13    const double hyppyNopeus = 750;
14    const int RUUDUN_KOKO = 40;
15
16    PlatformCharacter pelaaja1;
17
18    Image pelaajanKuva = LoadImage("player");
19    Image tahtiKuva = LoadImage("Diamond");
20    Image ruohokuva = LoadImage("ruoho");
21    Image vihukuva = LoadImage("pig");
22
23
24    SoundEffect maaliAani = LoadSoundEffect("maali");
25
26
27
28    public override void Begin()
29    {
30        Gravity = new Vector(0, -1000);
31
32        LuoKentta();
33        LisaaNappaimet();
34        LuoPistelaskuri();
35
36        Camera.Follow(pelaaja1);
37        Camera.ZoomFactor = 1.2;
38        Camera.StayInLevel = true;
39    }
40
41    void LuoKentta()
42    {
43        TileMap kentta = TileMap.FromLevelAsset("kentta1");
44        kentta.SetTileMethod('#', LisaaTaso);
45        kentta.SetTileMethod('t', LisaaTahti);
46        kentta.SetTileMethod('p', LisaaPelaaja);
47        kentta.SetTileMethod('v', LisaaVihu);
48        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
49        Level.CreateBorders();
50        Level.Background.CreateGradient(Color.Red, Color.Blue);
51    }
52
53    void LisaaTaso(Vector paikka, double leveys, double korkeus)
54    {
55        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
56        taso.Position = paikka;
57        taso.Color = Color.Green;
58        taso.Image = ruohokuva;
59        Add(taso);
60    }
61
62    void LisaaTahti(Vector paikka, double leveys, double korkeus)
63    {
64        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
65        tahti.IgnoresCollisionResponse = true;
66        tahti.Position = paikka;
67        tahti.Image = tahtiKuva;
68        tahti.Tag = "tahti";
69        Add(tahti);
70    }
71
72    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
73    {
74        pelaaja1 = new PlatformCharacter(leveys, korkeus);
75        pelaaja1.Position = paikka;
76        pelaaja1.Mass = 4.0;
77        pelaaja1.Image = pelaajanKuva;
78        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
79        Add(pelaaja1);
80    }
81
82    void LisaaNappaimet()
83    {
84        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
85        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
86
87        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
88        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
89        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
90
91        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
92
93        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
94        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
95        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
96
97        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
98    }
99
100    void Liikuta(PlatformCharacter hahmo, double nopeus)
101    {
102        hahmo.Walk(nopeus);
103    }
104
105    void Hyppaa(PlatformCharacter hahmo, double nopeus)
106    {
107        hahmo.Jump(nopeus);
108    }
109
110    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
111    {
112        maaliAani.Play();
113        pisteLaskuri.Value += 1;
114        tahti.Destroy();
115
116        Explosion rajahdys = new Explosion(50);
117        rajahdys.Position = tahti.Position;
118        Add(rajahdys);
119
120        rajahdys.Speed = 500.0;
121        rajahdys.Force = 10000;
122        pelaaja1.IgnoresExplosions = true;
123
124    }
125    IntMeter pisteLaskuri;
126
127    void LuoPistelaskuri()
128    {
129        pisteLaskuri = new IntMeter(0);
130
131        Label pisteNaytto = new Label();
132        pisteNaytto.X = Screen.Left + 100;
133        pisteNaytto.Y = Screen.Top - 100;
134        pisteNaytto.TextColor = Color.Black;
135        pisteNaytto.Color = Color.White;
136
137        pisteNaytto.BindTo(pisteLaskuri);
138        Add(pisteNaytto);
139    }
140    void LisaaVihu(Vector paikka, double korkeus, double leveys)
141    {
142    PhysicsObject vihu = new PhysicsObject(korkeus, leveys);
143        vihu.Position = paikka;
144        vihu.Image = vihukuva;
145        Add(vihu);
146}
147}
Note: See TracBrowser for help on using the repository browser.