source: 2012/26/AleksanteriV/Water wey/Water wey/Water wey/Water_wey.cs @ 3771

Revision 3771, 13.4 KB checked in by alvirmas, 9 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
9class Pelaaja : PhysicsObject
10{
11    public IntMeter elamaLaskuri = new IntMeter(3, 0, 3);
12
13    public Pelaaja(double leveys, double korkeus)
14        : base(leveys, korkeus)
15    {
16        elamaLaskuri.LowerLimit += delegate
17        {
18            this.Destroy();
19        };
20    }
21}
22
23public class Water_wey : PhysicsGame
24{
25    //------------------------------------------------------------- PhysicsObject
26    PhysicsObject vesi;
27    PhysicsObject palikka;
28    Pelaaja pelaaja;
29    Pelaaja pelaaja2;
30    Image[] pelaaja1Kuvat = LoadImages("pelaaja1/pelaaja", "pelaaja1/pelaaja0.2", "pelaaja1/pelaaja", "pelaaja1/pelaaja0.3");
31    Image[] pelaaja2Kuvat = LoadImages("pelaaja2/KALA20.1", "pelaaja2/KALA20.2", "pelaaja2/KALA20.1", "pelaaja2/KALA20.3");
32
33    IntMeter pistelaskuri1;
34    IntMeter pistelaskuri2;
35    bool survival = false;
36
37    public override void Begin()
38    {
39        ClearAll();
40
41        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
42"Story Mode", "Survival");
43        alkuValikko.ItemSelected += PainettiinValikonNappia;
44        Add(alkuValikko);
45
46    }
47
48    void AloitaSurvival()
49    {
50        survival = true;
51        MediaPlayer.Play("musat/Mega game aqvashop");
52        MediaPlayer.IsRepeating = true;
53        //PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
54        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Lopeta peli");//Confirm
55
56        Keyboard.Listen(Key.Space, ButtonState.Pressed, Begin, "aloita alusta");
57        // Keyboard.Listen(Key.Right, ButtonState.Pressed, Gravity, new Vector(-100, 0);
58        pelaaja = LuoPelaaja(new Vector(-100, -100), 100, 50, pelaaja1Kuvat);
59        pelaaja2 = LuoPelaaja(new Vector(100, -100), 100, 50, pelaaja2Kuvat);
60
61        pistelaskuri1 = LuoPistelaskuriJaNaytto(Screen.Left + 100, Screen.Top - 100, new Color(0, 0, 255, 255), Color.White);
62        pistelaskuri2 = LuoPistelaskuriJaNaytto(Screen.Right - 100, Screen.Top - 100, new Color(255, 255, 0, 255), Color.Black);
63
64        AddCollisionHandler(pelaaja, "siittio", CollisionHandler.AddMeterValue(pistelaskuri1, 1));
65        AddCollisionHandler(pelaaja2, "siittio", CollisionHandler.AddMeterValue(pistelaskuri2, 1));
66
67       
68       
69        LuoSiittio(Level.GetRandomPosition(), 24, 24);
70        lisaaohjaimet();
71        luopelaajalleelämänäytto(pelaaja, Screen.Left +200, Screen.Top -100);
72        luopelaajalleelämänäytto(pelaaja2, Screen.Right - 400, Screen.Top - 100);
73        // Gravity = new Vector(0, -500);
74        Level.CreateBorders();
75        //IsFullScreen = true;
76        Level.Background.Image = LoadImage("kentta/underwater");
77        Level.Background.FitToLevel();
78        Camera.ZoomToLevel();
79
80        int Laskuri = 0;
81        // int laskuri2 = 0;
82        while (Laskuri < 1000)
83        {
84            vesi = new PhysicsObject(25, 25);
85            vesi.Shape = Shape.Circle;
86
87            vesi.Color = new Color(0, 0, 100, 5);
88            vesi.Mass = 0.5;
89            vesi.X = RandomGen.NextDouble(Level.Left, Level.Right);
90            vesi.Y = RandomGen.NextDouble(Level.Bottom, Level.Top);
91            Add(vesi);
92            Laskuri++;
93        }
94
95        LuoKala(pelaaja);
96        LuoKala(pelaaja2);
97}
98
99    void AloitaStoryMode()
100    {
101        LuoKentta();
102        Camera.Follow(pelaaja);
103        Camera.ZoomFactor = 10;
104        MediaPlayer.Play("musat/Mega game aqvashop");
105        MediaPlayer.IsRepeating = true;
106        //PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
107        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Lopeta peli");//Confirm
108
109        Keyboard.Listen(Key.Space, ButtonState.Pressed, Begin, "aloita alusta");
110        // Keyboard.Listen(Key.Right, ButtonState.Pressed, Gravity, new Vector(-100, 0);
111        pistelaskuri1 = LuoPistelaskuriJaNaytto(Screen.Left + 100, Screen.Top - 100, new Color(0, 0, 255, 255), Color.White);
112        pistelaskuri2 = LuoPistelaskuriJaNaytto(Screen.Right - 100, Screen.Top - 100, new Color(255, 255, 0, 255), Color.Black);
113
114        //AddCollisionHandler(pelaaja, "siittio", CollisionHandler.AddMeterValue(pistelaskuri1, 1));
115        //LuoSiittio();
116        lisaaohjaimet();
117        luopelaajalleelämänäytto(pelaaja, Screen.Left + 200, Screen.Top - 100);
118
119        // Gravity = new Vector(0, -500);
120        Level.CreateBorders();
121        //IsFullScreen = true;
122        Level.Background.Image = LoadImage("kentta/underwater");
123        Level.Background.FitToLevel();
124        Camera.StayInLevel = true;
125
126        int Laskuri = 0;
127        // int laskuri2 = 0;
128        //while (Laskuri < 1000)
129        //{
130        //    vesi = new PhysicsObject(25, 25);
131        //    vesi.Shape = Shape.Circle;
132
133        //    vesi.Color = new Color(0, 0, 100, 5);
134        //    vesi.Mass = 0.5;
135        //    vesi.X = RandomGen.NextDouble(Level.Left, Level.Right);
136        //    vesi.Y = RandomGen.NextDouble(Level.Bottom, Level.Top);
137        //    Add(vesi);
138        //    Laskuri++;
139        //}
140
141
142    }
143
144
145    //-----------------------------------------------------------------------Aliohjelmat
146    void PainettiinValikonNappia(int valinta)
147    {
148        switch (valinta)
149        {
150            case 0:
151                 AloitaStoryMode();
152                break;
153            case 1:
154                 AloitaSurvival();
155                break;
156           
157        }
158    } 
159
160    void LuoKentta()
161    {
162        //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä.
163        ColorTileMap kentta = ColorTileMap.FromLevelAsset("kentta/kentta1");
164
165        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa.
166        kentta.SetTileMethod("00FF00", delegate(Vector paikka, double l, double k) { pelaaja = LuoPelaaja(paikka, 5, 2.5, pelaaja1Kuvat); pelaaja.Mass = 1000; pelaaja.LinearDamping = 0.96; });
167        kentta.SetTileMethod(Color.Black, LuoPalikka);
168        kentta.SetTileMethod("FF006E", Luotausta);
169        kentta.SetTileMethod("FF0000", LuoSiittio);
170        kentta.Execute(2, 2);
171    }
172
173
174    IntMeter LuoPistelaskuriJaNaytto(double x, double y, Color naytonTausta, Color tekstinVari)
175    {
176        IntMeter pisteLaskuri = new IntMeter(0);
177        Label pisteNaytto = new Label();
178        pisteNaytto.X = x;
179        pisteNaytto.Y = y;
180        pisteNaytto.TextColor = tekstinVari;
181        pisteNaytto.YMargin = 6;
182        pisteNaytto.XMargin = 12;
183        pisteNaytto.Color = naytonTausta;
184        pisteNaytto.BindTo(pisteLaskuri);
185        Add(pisteNaytto);
186        return pisteLaskuri;
187
188    }
189
190    void Luotausta(Vector paikka, double leveys, double korkeus)
191    {
192        GameObject tausta = new GameObject(leveys, korkeus);
193        tausta.Position = paikka;
194        tausta.Color = Color.Black;
195        Add(tausta);
196    }
197   
198        void LuoPalikka(Vector paikka, double leveys, double korkeus)
199    {
200        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
201        palikka.Position = paikka;
202        palikka.Color = Color.Black;
203        palikka.Tag = "palikka";
204        Add(palikka);
205    }
206
207        void LuoSiittio(Vector paikka, double leveys, double korkeus)
208    {
209        PhysicsObject siittio = new PhysicsObject(leveys, korkeus);
210        siittio.Shape = Shape.Circle;
211        siittio.Animation = new Animation(LoadImages("pisteet,enut/siiittio", "pisteet,enut/siiittio2", "pisteet,enut/siiittio3", "pisteet,enut/siiittio4", "pisteet,enut/siiittio5", "pisteet,enut/siiittio6"));
212        siittio.Animation.FPS = 10;
213        siittio.Animation.Start();
214        siittio.Mass = 0.5;
215        siittio.Tag = "siittio";
216        siittio.Position = paikka;
217        Add(siittio);
218    }
219
220    Pelaaja LuoPelaaja(Vector paikka, double pit, double lev, Image[] animaatioKuvat)
221    {
222       Pelaaja pelaaja = new Pelaaja(pit, lev);
223        pelaaja.Shape = Shape.FromImage(LoadImage("pelaaja1/pelaaja"));
224        pelaaja.Position = paikka;
225        pelaaja.Mass = 100;
226        pelaaja.Animation = new Animation(animaatioKuvat);
227        pelaaja.Animation.FPS = 10;
228        pelaaja.Animation.Start();
229        // pelaaja.Tag = "";
230        Add(pelaaja);
231        AddCollisionHandler(pelaaja, "siittio", CollisionHandler.DestroyTarget);
232        AddCollisionHandler<Pelaaja, PhysicsObject>(pelaaja, "kala", kalaOsuu);
233        if (survival)
234        {
235            AddCollisionHandler<PhysicsObject, PhysicsObject>(pelaaja, "siittio", delegate
236        {
237            LuoSiittio(Level.GetRandomPosition(), 24, 24);
238            LuoSiittio(Level.GetRandomPosition(), 24, 24);
239        });
240        }
241       
242        return pelaaja;
243    }
244    void luopelaajalleelämänäytto(Pelaaja pelaaja, double x, double y) 
245    {
246        CountDisplay pisteNaytto = new CountDisplay();
247       
248        pisteNaytto.Full = LoadImage("pisteet,enut/enu");
249        pisteNaytto.X = x;
250        pisteNaytto.Y = y;
251        //pisteNaytto.TextColor = Color.Black;
252        //pisteNaytto.Color = Color.White;
253        pisteNaytto.BindTo(pelaaja.elamaLaskuri);
254        Add(pisteNaytto);
255
256    }
257
258    //void luopelaaja2()//Vector paikka, double leveys, double korkeus
259    //{
260    //    pelaaja2 = new PhysicsObject(100, 50);
261    //    pelaaja2.Shape = Shape.FromImage(LoadImage("KALA20.1"));
262    //    pelaaja2.Position = new Vector(-100, 100);
263    //    pelaaja2.Mass = 100;
264    //    pelaaja2.Animation = new Animation(LoadImages("KALA20.1", "KALA20.2", "KALA20.1", "KALA20.3"));
265    //    pelaaja2.Animation.FPS = 10;
266    //    pelaaja2.Animation.Start();
267    //    //(pelaaja.Tag = "";)
268    //    Add(pelaaja2);
269
270
271    //    // AddCollisionHandler(pelaaja, "palikka", PysaytaPelaaja);
272    //}
273
274    void LuoKala(PhysicsObject seurattava)
275    {
276        double x = RandomGen.NextDouble(0.0, 500.0);
277        double y = RandomGen.NextDouble(0.0, 300.0);
278
279        PhysicsObject kala = new PhysicsObject(100, 50);
280        FollowerBrain seuraajanAivot = new FollowerBrain(seurattava);
281        seuraajanAivot.TurnWhileMoving = true;
282        kala.Brain = seuraajanAivot;
283        seuraajanAivot.Speed = 200;
284        kala.Mass = 50;
285        kala.X = x;
286        kala.Y = y;
287        kala.Shape = Shape.FromImage(LoadImage("vihu/kala"));
288        kala.Animation = new Animation(LoadImages("vihu/kala0.1", "vihu/kala0.2", "vihu/kala0.1", "vihu/kala0.3"));
289        kala.Animation.FPS = 10;
290        kala.Animation.Start();
291        kala.Tag = "kala";
292        Add(kala);
293
294        Timer nopeuttaja = new Timer();
295        nopeuttaja.Interval = 3;
296        nopeuttaja.Timeout += delegate
297        {
298            seuraajanAivot.Speed += 50;
299        };
300        nopeuttaja.Start();
301    }
302
303    void kalaOsuu(Pelaaja player, PhysicsObject kala)
304    {
305        string vingahdus = RandomGen.SelectOne<string>("musat/ahi", "musat/thaaa");
306        PlaySound(vingahdus);
307        player.elamaLaskuri.Value--;
308        if (pelaaja.elamaLaskuri.Value == 0 && pelaaja2.elamaLaskuri.Value == 0)
309        {
310            ClearAll();
311            Begin();
312            MessageDisplay.Add("Hävisitte.");
313        }
314    }
315
316    //---------------------------------------------------------------Ohjaimet
317
318    void lisaaohjaimet()
319    {
320        //-------------------------------------------------------------------------------------1
321        Keyboard.Listen(Key.Left, ButtonState.Down, kaannaPelaajaa, null, pelaaja, 4.0);
322        Keyboard.Listen(Key.Left, ButtonState.Released, kaannaPelaajaa, null, pelaaja, 0.0);
323        Keyboard.Listen(Key.Right, ButtonState.Down, kaannaPelaajaa, null, pelaaja, -4.0);
324        Keyboard.Listen(Key.Right, ButtonState.Released, kaannaPelaajaa, null, pelaaja, -0.0);
325        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, pelaaja);
326        //---------------------------------------------------------------------------------2
327        Keyboard.Listen(Key.A, ButtonState.Down, kaannaPelaajaa, null, pelaaja2, 4.0);
328        Keyboard.Listen(Key.A, ButtonState.Released, kaannaPelaajaa, null, pelaaja2, 0.0);
329        Keyboard.Listen(Key.D, ButtonState.Down, kaannaPelaajaa, null, pelaaja2, -4.0);
330        Keyboard.Listen(Key.D, ButtonState.Released, kaannaPelaajaa, null, pelaaja2, -0.0);
331        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, pelaaja2);
332
333        //Keyboard.Listen(Key.Down, ButtonState.Pressed, LiikutaPelaajaa, null, new Vector(0, -voima));
334
335        //Keyboard.Listen(Key.Left, ButtonState.Released, PysaytaPelaajaX, null);
336        //Keyboard.Listen(Key.Right, ButtonState.Released, PysaytaPelaajaX, null);
337        //Keyboard.Listen(Key.Up, ButtonState.Released, PysaytaPelaajaY, null);
338        //Keyboard.Listen(Key.Down, ButtonState.Released, PysaytaPelaajaY, null);
339    }
340    void kaannaPelaajaa(Pelaaja pelaaja, double nopeus)
341    {
342        if (pelaaja == null) return;
343        if (pelaaja.Angle.Cos < 0)
344        {
345            pelaaja.TextureWrapSize = new Vector(1, -1);
346        }
347        else
348        {
349            pelaaja.TextureWrapSize = new Vector(1, 1);
350        }
351        pelaaja.AngularVelocity = nopeus;
352    }
353    void LiikutaPelaajaa(Pelaaja pelaaja)
354    {
355        if (pelaaja == null) return;
356        Vector pelaajanSuunta = Vector.FromLengthAndAngle(100000.0, pelaaja.Angle);
357        pelaaja.Push(pelaajanSuunta);
358    }
359
360    //-------------------------------------------------------------
361
362
363}
Note: See TracBrowser for help on using the repository browser.