source: 2015/koodauskerho/VeetiI/LABYRINTTI/LABYRINTTI/LABYRINTTI.cs @ 10337

Revision 7084, 9.3 KB checked in by otjojunt, 6 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
9public class LABYRINTTI : PhysicsGame
10{
11    PhysicsObject pelaaja1;
12    GameObject taskulamppu;
13    Image olionKuva = LoadImage("labyrinttipelihahmo2015");
14    Image HirvionKuva = LoadImage("hirviötekstuuri");
15    Image aarteenKuva = LoadImage("aarrelabyrintti2015");
16    Image jumpscareKuva = LoadImage("3688");
17    SoundEffect jumpscareAani = LoadSoundEffect("räjähdys");
18
19    const int RUUDUN_KOKO = 40;
20    const double RUUDUN_LEVEYS = 50.0;
21    const double RUUDUN_KORKEUS = 50.0;
22
23    public override void Begin()
24    {
25        AlkuValikko();
26
27
28    } 
29    void AlkuValikko()
30    {
31        MultiSelectWindow alkuValikko = new MultiSelectWindow("Ohjainvalikko",
32"Ohjain", "Näppäimistö");
33        Add(alkuValikko);
34        alkuValikko.AddItemHandler(0, AloitaPeli,0);
35        alkuValikko.AddItemHandler(1, AloitaPeli,1);
36        Level.Background.Color = Color.Black;
37
38    }
39   
40    void AloitaPeli(int vaihtoehto)
41    {
42
43        Mouse.IsCursorVisible = true;
44        Level.Background.Color = Color.DarkGray;
45        Level.Background.FitToLevel();
46        Timer ajastin = new Timer();
47        ajastin.Interval = 300.0;
48        ajastin.Timeout += AloitaAlusta;
49        ajastin.Start(10000000);
50        MediaPlayer.IsRepeating = true;
51        MediaPlayer.Play("pelimusiikki");
52
53
54        LuoPistelaskuri();
55        //PhysicsObject mob = new PhysicsObject(500,400);
56        //Add(mob);
57
58        //mob.Image = olionKuva;
59        // TODO: Kirjoita ohjelmakoodisi tähän
60
61        LuoKentta();
62
63        AsetaOjaimet(vaihtoehto);
64    }
65
66    void AsetaOjaimet(int vaihtoehto)
67    {
68
69        if (vaihtoehto ==0)
70        {
71
72            ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1,
73      LiikutaPelaajaaTatilla, "Liikuta pelaajaa tattia pyörittämällä.");
74            ControllerOne.ListenAnalog(AnalogControl.RightStick, 0.1,
75             LiikutaLamppua, "Liikuta lamppua tattia pyörittämällä.");
76
77        }
78
79        else
80        {
81            Keyboard.Listen(Key.D, ButtonState.Down,
82LiikutaPelaajaa, null, new Vector(6000, 0));
83            Keyboard.Listen(Key.A, ButtonState.Down,
84              LiikutaPelaajaa, null, new Vector(-6000, 0));
85            Keyboard.Listen(Key.W, ButtonState.Down,
86              LiikutaPelaajaa, null, new Vector(0, 6000));
87            Keyboard.Listen(Key.S, ButtonState.Down,
88              LiikutaPelaajaa, null, new Vector(0, -6000));
89            Mouse.IsCursorVisible = true;
90            Vector paikkaRuudulla = Mouse.PositionOnScreen;
91            Vector paikkaKentalla = Mouse.PositionOnWorld;
92            Mouse.ListenMovement(0.0, HiirenLiikutus, "");
93        }
94
95
96
97
98        Camera.Follow(pelaaja1);
99        Camera.Zoom(2.5);
100        Camera.StayInLevel = true;
101
102        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
103
104    }
105
106    void LiikutaLamppua(AnalogState tatinTila)
107    {
108        Vector tatinAsento = tatinTila.StateVector;
109        pelaaja1.AbsoluteAngle = tatinAsento.Angle;
110    }
111
112    void LiikutaPelaajaa(Vector vektori)
113    {
114        pelaaja1.Push(vektori);
115    }
116
117    void LiikutaPelaajaaTatilla(AnalogState tatinTila)
118    {
119        Vector tatinAsento = tatinTila.StateVector;
120        pelaaja1.Push(tatinAsento * 6000);
121    }
122    void HiirenLiikutus(AnalogState Hiiri)
123    {
124        pelaaja1.AbsoluteAngle = (Mouse.PositionOnWorld - pelaaja1.Position).Angle;
125    }
126
127    void LuoSeinä(Vector paikka, double leveys, double korkeus)
128    {
129
130    }
131
132    void KuuneteleLIiketta(AnalogState hiirenTila)
133    {
134        pelaaja1.X = Mouse.PositionOnWorld.X;
135    }
136
137    void LuoAarre(Vector paikka, double leveys, double korkeus)
138    {
139        PhysicsObject aarre = new PhysicsObject(leveys, korkeus);
140        aarre.Shape = Shape.Diamond;
141        aarre.Position = paikka;
142        aarre.Color = Color.Yellow;
143        aarre.Image = aarteenKuva;
144        aarre.Tag = "aarre";
145        aarre.IgnoresCollisionResponse = true;
146        Add(aarre);
147    }
148
149
150    void LuoKentta()
151    {
152        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("labyrintinkenttä");
153        ruudut.SetTileMethod(Color.FromHexCode("0000FF"), LuoPelaaja);
154        ruudut.SetTileMethod(Color.Black, LuoSeina);
155        ruudut.SetTileMethod(new Color(0, 255, 0, 255), LuoAarre);
156        ruudut.SetTileMethod(Color.Yellow, LuoMaali);
157        ruudut.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
158
159
160        ColorTileMap ruudut2 = ColorTileMap.FromLevelAsset("labyrintinkenttä");
161        ruudut2.SetTileMethod(Color.Red, LuoHirvio);
162        ruudut2.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
163
164    }
165
166    IntMeter pisteLaskuri;
167
168    void LuoPistelaskuri()
169    {
170        pisteLaskuri = new IntMeter(0);
171
172        Label pisteNaytto = new Label();
173        pisteNaytto.X = Screen.Right - 100;
174        pisteNaytto.Y = Screen.Top - 100;
175        pisteNaytto.TextColor = Color.Red;
176        pisteNaytto.Color = Color.DarkGray;
177
178        pisteNaytto.BindTo(pisteLaskuri);
179        Add(pisteNaytto);
180    }
181
182    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
183    {
184        pelaaja1 = new PhysicsObject(leveys - 4, korkeus - 4);
185        pelaaja1.Position = paikka;
186        pelaaja1.Image = olionKuva;
187        pelaaja1.LinearDamping = 0.5;
188
189        pelaaja1.Shape = Shape.Circle;
190        AddCollisionHandler(pelaaja1, "Hirvio", TormaaHirvioon);
191        //AddCollisionHandler(pelaaja1, "aarre", CollisionHandler.AddMeterValue(pisteLaskuri, 100));
192        AddCollisionHandler(pelaaja1, "aarre", TormaaAarteeseen);
193        AddCollisionHandler(pelaaja1, "maali", TormaaMaaliin);
194
195        Add(pelaaja1);
196
197        taskulamppu = new GameObject(LoadImage("flashlight"));
198        Add(taskulamppu, 2);
199
200        Timer taskulamppuajastin = new Timer();
201        taskulamppuajastin.Interval = 0.01;
202        taskulamppuajastin.Timeout += delegate
203        {
204            taskulamppu.Position = pelaaja1.Position;
205            taskulamppu.Angle = pelaaja1.Angle;
206        };
207        taskulamppuajastin.Start();
208    }
209    void LuoSeina(Vector paikka, double leveys, double korkeus)
210    {
211        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
212        taso.Position = paikka;
213        taso.Color = Color.Black;
214        taso.Tag = "seina";
215        taso.CollisionIgnoreGroup = 1;
216        Add(taso);
217    }
218    void LuoHirvio(Vector paikka, double leveys, double korkeus)
219    {
220        PhysicsObject Hirvio = new PhysicsObject(leveys - 2, korkeus - 2);
221        Hirvio.Position = paikka;
222        Hirvio.Image = HirvionKuva;
223        Hirvio.Shape = Shape.Circle;
224        Hirvio.Tag = "Hirvio";
225        Hirvio.CanRotate = false;
226        Add(Hirvio, 1);
227        LabyrinthWandererBrain labyrinttiAivot = new LabyrinthWandererBrain(RUUDUN_KOKO);
228        labyrinttiAivot.Speed = 100.0;
229        labyrinttiAivot.LabyrinthWallTag = "seina";
230
231
232        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
233        seuraajanAivot.Speed = 300;                 // Millä nopeudella kohdetta seurataan
234        seuraajanAivot.DistanceFar = 100;           // Etäisyys jolla aletaan seurata kohdetta
235        seuraajanAivot.DistanceClose = 10;         // Etäisyys jolloin ollaan lähellä kohdetta
236        seuraajanAivot.StopWhenTargetClose = false;  // Pysähdytään kun ollaan lähellä kohdetta
237        seuraajanAivot.FarBrain = labyrinttiAivot;   // Käytetään satunnaisaivoja kun ollaan kaukana
238
239        Timer kaantoAjastin = new Timer();
240        kaantoAjastin.Interval = 0.3;
241        kaantoAjastin.Timeout += delegate
242        {
243            Hirvio.Angle = Hirvio.Velocity.Angle;
244        };
245        kaantoAjastin.Start();
246
247
248        Hirvio.Brain = seuraajanAivot;
249    }
250
251    void TormaaHirvioon(PhysicsObject pelaaja, PhysicsObject kohde)
252    {
253        pelaaja.Destroy();
254
255
256      taskulamppu = new GameObject(LoadImage("shadow"));
257        Add(taskulamppu, 2);
258
259        SoundEffect huutoAani = LoadSoundEffect("huuto2");
260        huutoAani.Play(1.0, 0, 0);
261        //taskulamppu.Destroy();
262        Timer.SingleShot(2.0, AloitaAlusta);
263    }
264
265    void TormaaAarteeseen(PhysicsObject pelaaja, PhysicsObject aarre)
266    {
267        aarre.Destroy();
268        pisteLaskuri.Value += 100;
269    }
270
271    //protected override void Update(Time time)
272    //{
273    //    taskulamppu.Position = pelaaja1.Position;
274    //    taskulamppu.Angle = pelaaja1.Angle;
275
276    //    base.Update(time);
277    //}
278    void LuoMaali(Vector paikka, double leveys, double korkeus)
279    {
280        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
281        maali.Tag = "maali";
282        maali.Position = paikka;
283        Add(maali);
284    }
285
286    void AloitaAlusta()
287    {
288        ClearAll();
289        AlkuValikko();
290    }
291
292    void TormaaMaaliin(PhysicsObject pelaaja, PhysicsObject maali)
293    {
294        ClearAll();
295        PhysicsObject jumpscare = new PhysicsObject(Screen.Width, Screen.Height);
296        jumpscare.Image = jumpscareKuva;
297        SoundEffect huutoAani = LoadSoundEffect("huuto2");
298        huutoAani.Play();
299        Add(jumpscare);
300        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
301    }
302
303}
304
305
306
307
308
309
Note: See TracBrowser for help on using the repository browser.