source: 2013/26/WilleK/RPG2/RPG2/RPG2/RPG2.cs @ 4367

Revision 4367, 6.8 KB checked in by wiaukota, 8 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class RPG2 : PhysicsGame
10{
11    const double nopeus = 150;
12    const double hyppyNopeus = 600;
13    const int RUUDUN_KOKO = 40;
14    IntMeter tähtilaskuri;
15
16
17    PlatformCharacter pelaaja1;
18    PlatformCharacter pelaaja2;
19
20    Image pelaajanKuva = LoadImage("norsu");
21    Image pelaajanKuva2 = LoadImage("norsu2");
22    Image tahtiKuva = LoadImage("tahti");
23    Image ruohoKuva = LoadImage("ruoho");
24    Image maaliKuva = LoadImage("maali1");
25
26    SoundEffect maaliAani = LoadSoundEffect("maali");
27
28    int kenttaNro = 3;
29
30    public override void Begin()
31    {
32        SeuraavaKentta();
33    }
34
35    void SeuraavaKentta()
36    {
37        ClearAll();
38        Gravity = new Vector(0, -1000);
39        tähtilaskuri = new IntMeter(0, 0, 0);
40
41        if (kenttaNro == 1)
42        {
43            LuoKentta("kentta1");
44            tähtilaskuri.UpperLimit += delegate
45            {
46                    kenttaNro = 101;
47                    SeuraavaKentta();
48               
49            };
50        }
51
52        else if (kenttaNro == 101)
53        {
54            LuoKentta("bonus1");
55        }
56
57        else if (kenttaNro == 2)
58        {
59            LuoKentta("kentta2");
60        }
61
62        else if (kenttaNro == 3)
63        {
64            LuoKentta("kentta3");
65        }
66
67
68        else Exit();
69
70        Level.CreateBorders();
71        Camera.Follow(pelaaja1);
72        //Camera.ZoomFactor = 4;
73        Camera.ZoomTo(new BoundingRectangle(Level.Left, Level.Top, Level.Height, Level.Height));
74        Camera.StayInLevel = true;
75        LisaaNappaimet();
76
77        Label pisteNaytto = new Label();
78        pisteNaytto.X = Screen.Right - 100;
79        pisteNaytto.Y = Screen.Top - 100;
80        pisteNaytto.TextColor = Color.Black;
81        pisteNaytto.Color = Color.Transparent;
82
83        pisteNaytto.BindTo(tähtilaskuri);
84        Add(pisteNaytto);
85    }
86
87    void LuoKentta(string kentta)
88    {
89
90        ColorTileMap ruudut = ColorTileMap.FromLevelAsset(kentta);
91
92        ruudut.SetTileMethod("4CFF00", LisaaPelaaja);
93        ruudut.SetTileMethod("FF0000", LisaaPelaaja2);
94        ruudut.SetTileMethod("7F3300", LisaaTaso);
95        ruudut.SetTileMethod("FFD800", LisaaTahti);
96        ruudut.SetTileMethod("B6FF00", LisaaRuoho);
97        ruudut.SetTileMethod("FF006E", Maali);
98
99        ruudut.Execute(20, 20);
100    }
101
102    void TormasiMaaliin(PhysicsObject pelaaja, PhysicsObject maali)
103    {
104        //Kasvatetaan kenttänumeroa yhdellä ja siirrytään seuraavaan kenttään:
105
106        if (kenttaNro == 101)
107        {
108            kenttaNro = 2;
109        }
110        else
111        {
112            kenttaNro++;
113        }
114        SeuraavaKentta();
115    }
116
117    void Maali(Vector paikka, double leveys, double korkeus)
118    {
119        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
120        maali.Image = maaliKuva;
121        maali.Position = paikka;
122        maali.Tag = "maali";
123        Add(maali);
124    }
125
126    void LisaaRuoho(Vector paikka, double leveys, double korkeus)
127    {
128        PhysicsObject Ruoho1 = PhysicsObject.CreateStaticObject(leveys, korkeus);
129        Ruoho1.Image = ruohoKuva;
130        Ruoho1.Position = paikka;
131        Add(Ruoho1);
132    }
133
134    void LisaaTaso(Vector paikka, double leveys, double korkeus)
135    {
136        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
137        taso.Position = paikka;
138        taso.Color = Color.Gray;
139        Add(taso);
140    }
141
142    void LisaaTahti(Vector paikka, double leveys, double korkeus)
143    {
144        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
145        tahti.IgnoresCollisionResponse = true;
146        tahti.Position = paikka;
147        tahti.Image = tahtiKuva;
148        tahti.Tag = "tahti";
149        tähtilaskuri.MaxValue++;
150        Add(tahti);
151    }
152
153    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
154    {
155        pelaaja1 = new PlatformCharacter(leveys, korkeus);
156        pelaaja1.Position = paikka;
157        pelaaja1.Mass = 4.0;
158        pelaaja1.Image = pelaajanKuva;
159        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
160        AddCollisionHandler(pelaaja1, "maali", TormasiMaaliin);
161        Add(pelaaja1);
162    }
163
164    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
165    {
166        pelaaja2 = new PlatformCharacter(leveys, korkeus);
167        pelaaja2.Position = paikka;
168        pelaaja2.Mass = 4.0;
169        pelaaja2.Image = pelaajanKuva2;
170        AddCollisionHandler(pelaaja2, "maali", TormasiMaaliin);
171        AddCollisionHandler(pelaaja2, "tahti", TormaaTahteen);
172        Add(pelaaja2);
173    }
174
175    void LisaaNappaimet()
176    {
177        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
178        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
179        Keyboard.Listen(Key.R, ButtonState.Pressed, SeuraavaKentta, "Aloita Kenttä uudestaan");
180
181        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
182        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
183        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
184
185        Keyboard.Listen(Key.T, ButtonState.Pressed, Teleporttaa, "Pelaaja teleporttaa", pelaaja1, pelaaja2);
186
187        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
188        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja2, nopeus);
189        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
190
191        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
192
193        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
194        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
195        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
196
197        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
198    }
199
200    void Teleporttaa(PlatformCharacter pelaaja1, PlatformCharacter pelaaja2)
201    {
202        pelaaja1.Position = pelaaja2.Position;
203    }
204
205    void Liikuta(PlatformCharacter hahmo, double nopeus)
206    {
207        hahmo.Walk(nopeus);
208    }
209
210    void Hyppaa(PlatformCharacter hahmo, double nopeus)
211    {
212        hahmo.Jump(nopeus);
213    }
214
215    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
216    {
217        maaliAani.Play();
218        tahti.Destroy();
219        tähtilaskuri.Value++;
220    }
221}
Note: See TracBrowser for help on using the repository browser.