source: 2017/30/JouniP/Syomispeli/Syomispeli/Syomispeli/Syomispeli.cs @ 10335

Revision 9147, 6.9 KB checked in by nupeohje, 2 years ago (diff)

Ääniefekti lisätty

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Syomispeli : PhysicsGame
10{
11    PhysicsObject pelaaja1;
12
13    Image pahiksenNollailukuva = LoadImage("pahisnollailee");
14    Image pahiksenVihaisuuskuva = LoadImage("pahisvihaisena");
15
16    SoundEffect autsistaAani = LoadSoundEffect("Jump4");
17
18    public override void Begin()
19    {
20        Alkuvalikko();
21
22     
23
24       
25       
26       
27    }
28
29    void Alkuvalikko()
30    {
31        Level.Background.Color = Color.Black;
32
33        MultiSelectWindow alkuValikko = new MultiSelectWindow("Syömispeli",
34"Aloita peli", "Lopeta");
35        Add(alkuValikko);
36
37        alkuValikko.AddItemHandler(0, AloitaPeli);
38        alkuValikko.AddItemHandler(1, Exit);
39
40        alkuValikko.DefaultCancel = 1; // Escapella poistuu (Exit-vaihtoehto)
41        alkuValikko.Color = Color.Green;
42    }
43
44    void Paussivalikko()
45    {
46        IsPaused = true;
47       
48        MultiSelectWindow paussivalikko = new MultiSelectWindow("TAUKO",
49"Jatka pelaamista", "Lopeta peli");
50        Add(paussivalikko);
51
52        paussivalikko.AddItemHandler(0, JatkaPelaamista);
53        paussivalikko.AddItemHandler(1, Exit);
54
55    }
56
57    void JatkaPelaamista()
58    {
59        IsPaused = false;
60    }
61
62    void AloitaPeli()
63    {
64        ClearAll();
65
66        LisaaPelaaja1();
67        LisaaOhjaimet();
68
69        LisaaKaikkiViholliset();
70
71
72        LuoKentta();
73    }
74
75    void LisaaKaikkiViholliset()
76    {
77        //LisaaPahis(100.0, 0.0);
78        //LisaaPahis(-100.0, 0.0);
79        //LisaaPahis(0.0, 200.0);
80
81        for (int i = 0; i < 3; i++)
82        {
83            LisaaPahis(RandomGen.NextDouble(Level.Left, Level.Right), RandomGen.NextDouble(Level.Bottom, Level.Top));
84        }
85    }
86
87    void LisaaPahis(double x, double y)
88    {
89        PhysicsObject pahis = new PhysicsObject(40.0, 40.0);
90        pahis.X = x;
91        pahis.Y = y;
92        pahis.CanRotate = false;
93        pahis.Image = pahiksenNollailukuva;
94        pahis.Tag = "ilkee tyyppi";
95        Add(pahis);
96
97        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
98        seuraajanAivot.Speed = 100;                 // Millä nopeudella kohdetta seurataan
99        seuraajanAivot.DistanceFar = 600;           // Etäisyys jolla aletaan seurata kohdetta
100        seuraajanAivot.DistanceClose = 200;         // Etäisyys jolloin ollaan lähellä kohdetta
101        //seuraajanAivot.StopWhenTargetClose = true;  // Pysähdytään kun ollaan lähellä kohdetta
102        //seuraajanAivot.FarBrain = satunnaisAivot;   // Käytetään satunnaisaivoja kun ollaan kaukana
103
104        // Tapahtuma, joka tapahtuu kun ollaan lähellä kohdetta
105        seuraajanAivot.TargetClose += delegate {
106           
107            // Asetetaan vihaiseksi:
108            pahis.Image = pahiksenVihaisuuskuva;
109
110            // Asettaa hetken kuluttua normaalin kuvan:
111            //Timer.SingleShot(1.0, delegate { pahis.Image = pahiksenNollailukuva; });
112
113        };
114       
115        seuraajanAivot.Active = true;
116        pahis.Brain = seuraajanAivot;
117    }
118
119    void LuoKentta()
120    {
121        Level.CreateBorders();
122        Level.Background.CreateGradient(Color.Black, Color.Gray);
123        LisaaRuokapalat();
124
125        //LuoOlio(Shape.Diamond, Color.Blue, 0.0, 0.0);
126        //LuoOlio(Shape.Circle, Color.White, 100.0, 20.0);
127        //LuoOlio(Shape.Rectangle, Color.Brown, 50.0, 150.0);
128
129        //LuoPallo(Color.White, 50.0, 47.8);
130        //LuoPallo(Color.Yellow, 30.0, 30.0);
131        //LuoPallo(Color.Yellow, 70.0, 80.0);
132
133    }
134
135    void LisaaPelaaja1()
136    {
137        pelaaja1 = new PhysicsObject(40.0, 40.0);
138        pelaaja1.CanRotate = false;
139        Add(pelaaja1);
140
141        AddCollisionHandler(pelaaja1, "ruoka", PelaajaKasvaaIsommaksi);
142        AddCollisionHandler(pelaaja1, "ilkee tyyppi", PelaajaTormasiViholliseen);
143    }
144
145    void LisaaRuokapalat()
146    {
147        //LuoSyotavaJuttu(10.0, 10.0);
148        //LuoSyotavaJuttu(90.0, 90.0);
149        //LuoSyotavaJuttu(100.0, 340.0);
150        //LuoSyotavaJuttu(300.0, 390.0);
151        //LuoSyotavaJuttu(200.0, 10.0);
152        //LuoSyotavaJuttu(-200.0, 90.0);
153
154        for (int i = 0; i < 50; i++)
155        {
156            double xKoordinaatti = RandomGen.NextDouble(Level.Left, Level.Right);
157            double yKoordinaatti = RandomGen.NextDouble(Level.Bottom, Level.Top);
158            LuoSyotavaJuttu(xKoordinaatti, yKoordinaatti);
159
160        }
161
162
163    }
164
165    void LisaaOhjaimet()
166    {
167        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-1000.0, 0.0));
168        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, new Vector(1000.0, 0.0));
169        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0.0, 1000.0));
170        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0.0, -1000.0));
171
172        Keyboard.Listen(Key.F3, ButtonState.Released, AloitaPeli, null);
173        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Paussivalikko, "Tauota peli");
174    }
175
176    void LiikutaPelaajaa(Vector vektori)
177    {
178        pelaaja1.Push(vektori);
179    }
180
181    void PelaajaKasvaaIsommaksi(PhysicsObject pelaajaJokaTormasi, PhysicsObject tormayksenKohde)
182    {
183        pelaajaJokaTormasi.Width = pelaajaJokaTormasi.Width + 10.0;
184        pelaajaJokaTormasi.Height = pelaajaJokaTormasi.Height + 10.0;
185
186        tormayksenKohde.Destroy();
187    }
188
189    void PelaajaTormasiViholliseen(PhysicsObject pelaajaJokaTormasi, PhysicsObject vihuJohonTormattiin)
190    {
191        if (pelaajaJokaTormasi.Width - 10.0 <= 0.0 || pelaajaJokaTormasi.Height - 10.0 <= 0.0)
192        {
193            return;
194        }
195        pelaajaJokaTormasi.Width -= 10.0;
196        pelaajaJokaTormasi.Height -= 10.0;
197        autsistaAani.Play();
198    }
199    void LuoOlio(Shape muoto, Color vari, double x, double y, double leveys = 40.0, double korkeus = 40.0)
200    {
201        PhysicsObject otus = new PhysicsObject(leveys, korkeus);
202        otus.Shape = muoto;
203        otus.Color = vari;
204        otus.X = x;
205        otus.Y = y;
206        Add(otus);
207    }
208
209    void LuoPallo(Color vari, double x, double y)
210    {
211        LuoOlio(Shape.Circle, vari, x, y);
212    }
213
214    void LuoSyotavaJuttu(double x, double y)
215    {
216        //LuoOlio(Shape.Circle, Color.Yellow, x, y, 10.0, 10.0);
217
218        PhysicsObject syotava = new PhysicsObject(10.0, 10.0);
219        syotava.Shape = Shape.Circle;
220        syotava.Color = Color.Yellow;
221        syotava.X = x;
222        syotava.Y = y;
223        Add(syotava);
224        syotava.Tag = "ruoka";
225
226    }
227
228    void LuoPongmaila(double x, double y)
229    {
230        //PhysicsObject maila = new PhysicsObject(20.0, 80.0);
231        //maila.X = x;
232        //maila.Y = y;
233        //Add(maila);
234
235        LuoOlio(Shape.Rectangle, Color.White, x, y, 20.0, 80.0);
236    }
237}
Note: See TracBrowser for help on using the repository browser.