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

Revision 9145, 6.2 KB checked in by nupeohje, 23 months ago (diff)

Alkuvalikon Esc-painallus lopettaa pelin

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