source: 2016/26/SallaK/Sandwich/Sandwich/Sandwich/Sandwich.cs @ 7619

Revision 7619, 8.4 KB checked in by salmarko, 5 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
10    public class Sandwich : PhysicsGame
11{
12    const double nopeus = 200;
13    const double hyppyNopeus = 750;
14    const int RUUDUN_KOKO = 40;
15
16
17
18
19    IntMeter juusto;
20    IntMeter tomaatti;
21    IntMeter leipä;
22    IntMeter salaatti;
23    IntMeter kala;
24    IntMeter voi;
25
26    IntMeter pisteLaskuri;
27   
28    Image pelaajanKuva = LoadImage("xmanuli");
29
30    Image ylätiilenkuva = LoadImage("yläpuu");
31    Image alatiilenkuva = LoadImage("alapuu");
32
33   
34    Image juustopi = LoadImage("xjuustop");
35    Image juustoer = LoadImage("xjuustoe");
36    Image juustohy = LoadImage("xjuustoh");
37
38    Image tomaattihy = LoadImage("xtomaattih");
39    Image tomaattipi = LoadImage("xtomaattip");
40    Image tomaattier = LoadImage("xtomaattie");
41
42    Image leipähy = LoadImage("xleipäh");
43    Image leipäpi = LoadImage("xleipäp");
44    Image leipäer = LoadImage("xleipäe");
45
46    Image voihy = LoadImage("xvoih");
47    Image voipi = LoadImage("xvoip");
48    Image voier = LoadImage("xvoie");
49
50    Image kalahy = LoadImage("xkalah");
51    Image kalapi = LoadImage("xkalap");
52    Image kalaer = LoadImage("xkalae");
53
54    Image salaattihy = LoadImage("xsalaattih");
55    Image salaattipi = LoadImage("xsalaattip");
56    Image salaattier = LoadImage("xsalaattie");
57
58    Image keittiö = LoadImage("keittiö");
59
60    Manuli mauno;
61
62    SoundEffect maaliAani = LoadSoundEffect("maali");
63
64    public override void Begin()
65    {
66        Gravity = new Vector(0, -1000);
67
68        LuoKentta();
69        LisaaNappaimet();
70        LuoPistelaskuri();
71        Camera.Follow(mauno);
72        Camera.ZoomFactor = 1.5;
73        Camera.StayInLevel = true;
74       
75    }
76
77    void LuoKentta()
78    {
79        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("mystinenmanulikenttäver17");
80        ruudut.SetTileMethod(Color.FromHexCode("B200FF"), LisaaPelaaja);
81        ruudut.SetTileMethod(Color.Black, LisaaTaso,alatiilenkuva);
82        ruudut.SetTileMethod(Color.FromHexCode("808080"), LisaaTaso, ylätiilenkuva);
83
84        ruudut.SetTileMethod(Color.FromHexCode("FFD800"), Luoaine, juustohy, "juustoh");
85        ruudut.SetTileMethod(Color.FromHexCode("7F6A00"), Luoaine, juustopi, "juustop");
86        ruudut.SetTileMethod(Color.FromHexCode("FFE97F"), Luoaine, juustoer, "juustoe");
87
88        ruudut.SetTileMethod(Color.FromHexCode("FF0000"), Luoaine, tomaattihy, "tomaattih");
89        ruudut.SetTileMethod(Color.FromHexCode("7F0000"), Luoaine, tomaattipi, "tomaattip");
90        ruudut.SetTileMethod(Color.FromHexCode("FF7F7F"), Luoaine, tomaattier, "tomaattie");
91
92        ruudut.SetTileMethod(Color.FromHexCode("FF6A00"), Luoaine, voihy, "voih");
93        ruudut.SetTileMethod(Color.FromHexCode("7F3300"), Luoaine, voipi, "voip");
94        ruudut.SetTileMethod(Color.FromHexCode("FFB27F"), Luoaine, voier, "voie");
95
96        ruudut.SetTileMethod(Color.FromHexCode("0026FF"), Luoaine, kalahy, "kalah");
97        ruudut.SetTileMethod(Color.FromHexCode("00137F"), Luoaine, kalapi, "kalap");
98        ruudut.SetTileMethod(Color.FromHexCode("00FFFF"), Luoaine, kalaer, "kalae");
99
100        ruudut.SetTileMethod(Color.FromHexCode("007F0E"), Luoaine, salaattihy, "salaattih");
101        ruudut.SetTileMethod(Color.FromHexCode("003F06"), Luoaine, salaattipi, "salaattip");
102        ruudut.SetTileMethod(Color.FromHexCode("B6FF0C"), Luoaine, salaattier, "salaattie");
103
104        ruudut.SetTileMethod(Color.FromHexCode("4A271F"), Luoaine, leipähy, "leipäh");
105        ruudut.SetTileMethod(Color.FromHexCode("261410"), Luoaine, leipäpi, "leipäp");
106        ruudut.SetTileMethod(Color.FromHexCode("A87A61"), Luoaine, leipäer, "leipäe");
107
108        ruudut.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
109        Level.CreateBorders();
110        Level.Background.Image = keittiö;
111        Level.Background.FitToLevel();
112    }
113
114    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
115    {
116        mauno = new Manuli(leveys, korkeus);
117        mauno.Image = pelaajanKuva;
118        mauno.Position = paikka;
119        Add(mauno);
120
121        juusto = new IntMeter(0, 0, 2);
122        tomaatti = new IntMeter(0,0,2);
123        leipä = new IntMeter(0,0,2);
124        voi = new IntMeter(0,0,2);
125        kala = new IntMeter(0,0,2);
126        salaatti = new IntMeter(0,0,2);
127    }
128
129    void LisaaTaso(Vector paikka, double leveys, double korkeus, Image kuva)
130    {
131        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
132        taso.Position = paikka;
133        taso.Image = kuva;
134        Add(taso);
135    }
136
137
138
139     
140
141   
142
143
144
145    void Luoaine(Vector paikka, double leveys, double korkeus, Image kuva2, String tag)
146    {
147        PhysicsObject aine = new PhysicsObject(leveys, korkeus);
148        aine.Position = paikka;
149        aine.IgnoresGravity = true;
150        aine.Image = kuva2;
151        aine.Tag = tag;
152        Add(aine);
153        AddCollisionHandler(aine, "pelaaja", Pelaajakeraaaineen);
154
155       
156
157    }
158
159    void Pelaajakeraaaineen( PhysicsObject aine, PhysicsObject pelaaja)
160    {
161
162        aine.Destroy();
163
164        if (aine.Tag.ToString().StartsWith("juusto")&& juusto.Value < juusto.MaxValue)
165        {
166            annapisteet(aine);
167            juusto.Value += 1;
168        }
169
170        if (aine.Tag.ToString().StartsWith("tomaatti")&& tomaatti.Value < tomaatti.MaxValue)
171        {
172
173            annapisteet(aine);
174
175        }
176
177
178        if (aine.Tag.ToString().StartsWith("leipä") && leipä.Value < leipä.MaxValue)
179        {
180
181            annapisteet(aine);
182
183        }
184
185        if (aine.Tag.ToString().StartsWith("salaatti") && salaatti.Value < salaatti.MaxValue)
186        {
187
188            annapisteet(aine);
189
190        }
191
192
193        if (aine.Tag.ToString().StartsWith("kala") && kala.Value < kala.MaxValue)
194        {
195
196            annapisteet(aine);
197
198        }
199
200        if (aine.Tag.ToString().StartsWith("voi") && voi.Value < voi.MaxValue)
201        {
202
203            annapisteet(aine);
204
205        }
206    }
207
208    void annapisteet( PhysicsObject aine)
209    {
210        if (aine.Tag.ToString().EndsWith("h"))
211        {
212            pisteLaskuri.Value += 100;
213        }
214
215        if (aine.Tag.ToString().EndsWith("p"))
216        {
217            pisteLaskuri.Value += 10;
218        }
219
220        if (aine.Tag.ToString().EndsWith("e"))
221        {
222            pisteLaskuri.Value += 500;
223        }
224
225
226    }
227
228   
229
230    void LuoPistelaskuri()
231    {
232        pisteLaskuri = new IntMeter(0);
233
234        Label pisteNaytto = new Label();
235        pisteNaytto.X = Screen.Left + 100;
236        pisteNaytto.Y = Screen.Top - 100;
237        pisteNaytto.TextColor = Color.Black;
238        pisteNaytto.Color = Color.White;
239
240        pisteNaytto.BindTo(pisteLaskuri);
241        Add(pisteNaytto);
242    }
243
244
245
246    void LisaaNappaimet()
247    {
248        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
249        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
250
251        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", mauno, -nopeus);
252        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", mauno, nopeus);
253        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", mauno, hyppyNopeus);
254
255        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
256
257        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", mauno, -nopeus);
258        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", mauno, nopeus);
259        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", mauno, hyppyNopeus);
260
261        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
262    }
263
264    void Liikuta(PlatformCharacter hahmo, double nopeus)
265    {
266        hahmo.Walk(nopeus);
267    }
268
269    void Hyppaa(PlatformCharacter hahmo, double nopeus)
270    {
271        hahmo.Jump(nopeus);
272    }
273
274
275}
276
277
278class Manuli : PlatformCharacter
279{
280
281    private IntMeter elamaLaskuri = new IntMeter(3, 0, 3);
282    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
283
284
285
286    public Manuli(double leveys, double korkeus)
287    : base(leveys, korkeus)
288    {
289       
290        Tag = "pelaaja";
291        Mass = 4.0;
292
293        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
294    }
295
296
297
298}
Note: See TracBrowser for help on using the repository browser.