source: 2015/30/EliasHu/RescueRanger/RescueRanger/RescueRanger/RescueRanger.cs @ 6868

Revision 6868, 5.4 KB checked in by elalhutt, 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 RescueRanger : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 40;
13    const int RUUDUN_KOKO = 40;
14
15    Label pisteNaytto;
16    IntMeter pistelaskuri;
17    int kenttanumero = 1;
18
19    PlatformCharacter pelaaja1;
20
21    Image taustaKuva = LoadImage("america");
22    Image pelaajanKuva = LoadImage("mediheli");
23    Image tahtiKuva = LoadImage("tahti");
24
25    SoundEffect maaliAani = LoadSoundEffect("maali");
26
27    public override void Begin()
28    {
29        aloitapeli();
30    }
31
32    void aloitapeli()
33    {
34        ClearAll();
35        Gravity = new Vector(0, -1000);
36
37        LuoPisteLaskuri();
38        LuoKentta();
39        LisaaNappaimet();
40
41
42        Camera.Follow(pelaaja1);
43        Camera.ZoomFactor = 1.2;
44        Camera.StayInLevel = true;
45    }
46
47    void LuoKentta()
48    {
49        pistelaskuri.MaxValue = 0;
50        TileMap kentta = TileMap.FromLevelAsset("kentta"+kenttanumero);
51        kentta.SetTileMethod('#', LisaaTaso);
52        kentta.SetTileMethod('*', LisaaElain);
53        kentta.SetTileMethod('=', LisaaTurva);
54        kentta.SetTileMethod('N', LisaaPelaaja);
55        kentta.SetTileMethod('t', LisaaMaali);
56        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
57        Level.CreateBorders();
58        Level.Background.Image = taustaKuva;
59        GameObject tausta = new GameObject(Level.Width, Level.Height);
60        tausta.Image = taustaKuva;
61        Add(tausta,-3);
62
63        pisteNaytto.IntFormatString = "{0} / " + pistelaskuri.MaxValue;
64
65    }
66
67    void LisaaTaso(Vector paikka, double leveys, double korkeus)
68    {
69        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
70        taso.Position = paikka;
71        taso.Color = Color.Green;
72        taso.Tag = "Puu";
73        Add(taso);
74    }
75
76    void LisaaTurva(Vector paikka, double leveys, double korkeus)
77    {
78        PhysicsObject turva = PhysicsObject.CreateStaticObject(leveys, korkeus);
79        turva.Position = paikka;
80        turva.Color = Color.Brown;
81        Add(turva);
82    }
83
84    void LisaaMaali(Vector paikka, double leveys, double korkeus)
85    {
86        PhysicsObject Maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
87        Maali.Position = paikka;
88        Maali.Color = Color.Brown;
89        Maali.Tag = "maali";
90        Add(Maali);
91    }
92
93    void LisaaElain(Vector paikka, double leveys, double korkeus)
94    {
95        PhysicsObject Elain = PhysicsObject.CreateStaticObject(leveys, korkeus);
96        Elain.IgnoresCollisionResponse = true;
97        Elain.Position = paikka;
98        Elain.Image = tahtiKuva;
99        Elain.Tag = "Elain";
100        Add(Elain);
101
102        pistelaskuri.MaxValue++;
103    }
104
105    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
106    {
107        pelaaja1 = new PlatformCharacter(leveys, korkeus);
108        pelaaja1.Position = paikka;
109        pelaaja1.Mass = 400;
110        pelaaja1.Image = pelaajanKuva;
111        AddCollisionHandler(pelaaja1, "Elain", TormaaElaimeen);
112        AddCollisionHandler(pelaaja1, "Puu", TormaaPuuhun);
113        AddCollisionHandler(pelaaja1, "maali", TormaaMaaliin);
114        Add(pelaaja1);
115    }
116
117    void LisaaNappaimet()
118    {
119        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
120        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
121
122        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
123        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
124        Keyboard.Listen(Key.Space, ButtonState.Down, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
125
126        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
127
128        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
129        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
130        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
131
132        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
133    }
134
135    void Liikuta(PlatformCharacter hahmo, double nopeus)
136    {
137        hahmo.Walk(nopeus);
138    }
139
140    void Hyppaa(PlatformCharacter hahmo, double nopeus)
141    {
142        hahmo.ForceJump(nopeus);
143    }
144
145    void TormaaElaimeen(PhysicsObject hahmo, PhysicsObject Elain)
146    {
147        maaliAani.Play();
148        MessageDisplay.Add("Keräsit eläimen!");
149        pistelaskuri.Value += 1;
150        Elain.Destroy();
151    }
152
153    void TormaaMaaliin(PhysicsObject hahmo, PhysicsObject maali)
154    {
155        if (pistelaskuri.Value == pistelaskuri.MaxValue)
156        {
157            kenttanumero++;
158            aloitapeli();
159        }
160    }
161    void TormaaPuuhun(PhysicsObject hahmo, PhysicsObject Puu)
162    {
163        aloitapeli();
164    }
165    void LuoPisteLaskuri()
166    {
167        pistelaskuri = new IntMeter(0);
168
169        pisteNaytto = new Label();
170        pisteNaytto.X = Screen.Left + 100;
171        pisteNaytto.Y = Screen.Top - 100;
172        pisteNaytto.TextColor = Color.Black;
173        pisteNaytto.Color = Color.White;
174
175        pisteNaytto.BindTo(pistelaskuri);
176        Add(pisteNaytto);
177    }
178
179
180
181
182}
Note: See TracBrowser for help on using the repository browser.