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

Revision 7604, 7.8 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 tahtiKuva = LoadImage("tahti");
29    Image pelaajanKuva = LoadImage("norsu");
30
31    Manuli mauno;
32
33    SoundEffect maaliAani = LoadSoundEffect("maali");
34
35    public override void Begin()
36    {
37        Gravity = new Vector(0, -1000);
38
39        LuoKentta();
40        LisaaNappaimet();
41        LuoPistelaskuri();
42        Camera.Follow(mauno);
43        Camera.ZoomFactor = 1.2;
44        Camera.StayInLevel = true;
45    }
46
47    void LuoKentta()
48    {
49        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("mystinenmanulikenttä5");
50        ruudut.SetTileMethod(Color.FromHexCode("B200FF"), LisaaPelaaja);
51        ruudut.SetTileMethod(Color.Black, LisaaTaso,Color.Black);
52        ruudut.SetTileMethod(Color.FromHexCode("808080"), LisaaTaso,Color.DarkGray);
53
54        ruudut.SetTileMethod(Color.FromHexCode("FFD800"),Luoaine,Color.FromHexCode("FFD800"), "juustoh");
55        ruudut.SetTileMethod(Color.FromHexCode("7F6A00"), Luoaine, Color.FromHexCode("7F6A00"), "juustop");
56        ruudut.SetTileMethod(Color.FromHexCode("FFE97F"), Luoaine, Color.FromHexCode("FFE97F"), "juustoe");
57
58        ruudut.SetTileMethod(Color.FromHexCode("FF0000"), Luoaine, Color.FromHexCode("FF0000"), "tomaattih");
59        ruudut.SetTileMethod(Color.FromHexCode("7F0000"), Luoaine, Color.FromHexCode("7F0000"), "tomaattip");
60        ruudut.SetTileMethod(Color.FromHexCode("FF7F7F"), Luoaine, Color.FromHexCode("FF7F7F"), "tomaattie");
61
62        ruudut.SetTileMethod(Color.FromHexCode("FF6A00"), Luoaine, Color.FromHexCode("FF6A00"), "voih");
63        ruudut.SetTileMethod(Color.FromHexCode("7F3300"), Luoaine, Color.FromHexCode("7F3300"), "voip");
64        ruudut.SetTileMethod(Color.FromHexCode("FFB27F"), Luoaine, Color.FromHexCode("FFB27F"), "voie");
65
66        ruudut.SetTileMethod(Color.FromHexCode("0026FF"), Luoaine, Color.FromHexCode("0026FF"), "kalah");
67        ruudut.SetTileMethod(Color.FromHexCode("00137F"), Luoaine, Color.FromHexCode("00137F"), "kalap");
68        ruudut.SetTileMethod(Color.FromHexCode("00FFFF"), Luoaine, Color.FromHexCode("00FFFF"), "kalae");
69
70        ruudut.SetTileMethod(Color.FromHexCode("007F0E"), Luoaine, Color.FromHexCode("007F0E"), "salaattih");
71        ruudut.SetTileMethod(Color.FromHexCode("003F06"), Luoaine, Color.FromHexCode("003F06"), "salaattip");
72        ruudut.SetTileMethod(Color.FromHexCode("4CFF80"), Luoaine, Color.FromHexCode("4CFF80"), "salaattie");
73
74        ruudut.SetTileMethod(Color.FromHexCode("4A271F"), Luoaine, Color.FromHexCode("4A271F"), "leipäh");
75        ruudut.SetTileMethod(Color.FromHexCode("261410"), Luoaine, Color.FromHexCode("261410"), "leipäp");
76        ruudut.SetTileMethod(Color.FromHexCode("A87A61"), Luoaine, Color.FromHexCode("A87A61"), "leipäe");
77
78        ruudut.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
79        Level.CreateBorders();
80        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
81    }
82
83    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
84    {
85        mauno = new Manuli(leveys, korkeus);
86        mauno.Image = pelaajanKuva;
87        mauno.Position = paikka;
88        Add(mauno);
89
90        juusto = new IntMeter(0, 0, 2);
91        tomaatti = new IntMeter(0,0,2);
92        leipä = new IntMeter(0,0,2);
93        voi = new IntMeter(0,0,2);
94        kala = new IntMeter(0,0,2);
95        salaatti = new IntMeter(0,0,2);
96    }
97
98    void LisaaTaso(Vector paikka, double leveys, double korkeus, Color vari)
99    {
100        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
101        taso.Position = paikka;
102        taso.Color = vari;
103        Add(taso);
104    }
105
106
107
108     
109
110   
111
112
113
114    void Luoaine(Vector paikka, double leveys, double korkeus, Color vari, String tag)
115    {
116        PhysicsObject aine = new PhysicsObject(leveys, korkeus);
117        aine.Position = paikka;
118        aine.IgnoresGravity = true;
119        aine.Color = vari;
120        aine.Tag = tag;
121        Add(aine);
122        AddCollisionHandler(aine, "pelaaja", Pelaajakeraaaineen);
123
124    }
125
126    void Pelaajakeraaaineen( PhysicsObject aine, PhysicsObject pelaaja)
127    {
128
129        aine.Destroy();
130
131        if (aine.Tag.ToString().StartsWith("juusto")&& juusto.Value < juusto.MaxValue)
132        {
133            annapisteet(aine);
134            juusto.Value += 1;
135        }
136
137        if (aine.Tag.ToString().StartsWith("tomaatti")&& tomaatti.Value < tomaatti.MaxValue)
138        {
139
140            annapisteet(aine);
141
142        }
143
144
145        if (aine.Tag.ToString().StartsWith("leipä") && leipä.Value < leipä.MaxValue)
146        {
147
148            annapisteet(aine);
149
150        }
151
152        if (aine.Tag.ToString().StartsWith("salaatti") && salaatti.Value < salaatti.MaxValue)
153        {
154
155            annapisteet(aine);
156
157        }
158
159
160        if (aine.Tag.ToString().StartsWith("kala") && kala.Value < kala.MaxValue)
161        {
162
163            annapisteet(aine);
164
165        }
166
167        if (aine.Tag.ToString().StartsWith("voi") && voi.Value < voi.MaxValue)
168        {
169
170            annapisteet(aine);
171
172        }
173    }
174
175    void annapisteet( PhysicsObject aine)
176    {
177        if (aine.Tag.ToString().EndsWith("h"))
178        {
179            pisteLaskuri.Value += 100;
180        }
181
182        if (aine.Tag.ToString().EndsWith("p"))
183        {
184            pisteLaskuri.Value += 10;
185        }
186
187        if (aine.Tag.ToString().EndsWith("e"))
188        {
189            pisteLaskuri.Value += 500;
190        }
191
192
193    }
194
195   
196
197    void LuoPistelaskuri()
198    {
199        pisteLaskuri = new IntMeter(0);
200
201        Label pisteNaytto = new Label();
202        pisteNaytto.X = Screen.Left + 100;
203        pisteNaytto.Y = Screen.Top - 100;
204        pisteNaytto.TextColor = Color.Black;
205        pisteNaytto.Color = Color.White;
206
207        pisteNaytto.BindTo(pisteLaskuri);
208        Add(pisteNaytto);
209    }
210
211
212
213    void LisaaNappaimet()
214    {
215        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
216        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
217
218        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", mauno, -nopeus);
219        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", mauno, nopeus);
220        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", mauno, hyppyNopeus);
221
222        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
223
224        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", mauno, -nopeus);
225        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", mauno, nopeus);
226        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", mauno, hyppyNopeus);
227
228        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
229    }
230
231    void Liikuta(PlatformCharacter hahmo, double nopeus)
232    {
233        hahmo.Walk(nopeus);
234    }
235
236    void Hyppaa(PlatformCharacter hahmo, double nopeus)
237    {
238        hahmo.Jump(nopeus);
239    }
240
241
242}
243
244
245class Manuli : PlatformCharacter
246{
247
248    private IntMeter elamaLaskuri = new IntMeter(3, 0, 3);
249    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
250
251
252
253    public Manuli(double leveys, double korkeus)
254    : base(leveys, korkeus)
255    {
256       
257        Tag = "pelaaja";
258        Mass = 4.0;
259
260        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
261    }
262
263
264
265}
Note: See TracBrowser for help on using the repository browser.