source: 2013/30/JesseM/alone in the dark/alone in the dark/alone in the dark/alone_in_the_dark.cs @ 4675

Revision 4675, 6.0 KB checked in by jeattama, 10 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
9public class alone_in_the_dark : PhysicsGame
10{
11    Image olionKuva = LoadImage("ukkeli");
12    Image olionkuva = LoadImage("hirviö");
13    Image[] ukkelinKavely = LoadImages("animaatio", "animaatio2");
14    Image kentankuva = LoadImage("musta");
15    Image ovenkuva = LoadImage("ovi");
16    PhysicsObject pelaaja;
17    Widget varjo;
18
19    double nopeus = 500;
20    double juoksuNopKerroin = 1.5;
21
22    const int RUUDUN_KOKO = 20;
23
24    public override void Begin()
25    {
26        MediaPlayer.Play("kauhu");
27        MediaPlayer.IsRepeating = true;
28
29        LuoKentta();
30
31        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
32
33        double koko = Math.Max(Screen.Width, Screen.Height) * 2;
34        varjo = new Widget(koko, koko);
35        varjo.Image = kentankuva;
36        Add(varjo);
37    }
38
39   
40
41
42    void LuoKentta()
43    {
44        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("Untitled");
45        ruudut.SetTileMethod(Color.Black, LuoTaso);
46        //ruudut.SetTileMethod(Color.yellow, LuoHirvio);
47        ruudut.SetTileMethod("0026FF", LuoOvi);
48        ruudut.SetTileMethod("FF006E", LuoPelaaja);
49        ruudut.SetTileMethod("FFF314", LuoHirvio);
50        ruudut.Optimize(Color.Black);
51        ruudut.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
52        Level.BackgroundColor = Color.Gray;
53        //Camera.ZoomToLevel();
54        Camera.Follow(pelaaja);
55        Camera.ZoomFactor = 10.5;
56
57        IsMouseVisible = true;
58    }
59
60    void LuoTaso(Vector paikka, Double leveys, Double korkeus)
61    {
62        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
63        taso.Position = paikka;
64        //taso.Image = groundImage;
65        taso.Color = Color.FromHexCode("2D1100");
66        taso.CollisionIgnoreGroup = 1;
67        taso.Tag = "seina";
68        Add(taso);
69    }
70
71    void LuoOvi(Vector paikka, Double leveys, Double korkeus)
72    {
73        PhysicsObject ovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
74        ovi.Position = paikka;
75        ovi.Image = ovenkuva;
76        ovi.Color = Color.Blue;
77        ovi.CollisionIgnoreGroup = 1;
78        ovi.Tag = "ovi";
79        Add(ovi);
80    }
81
82    void LuoPelaaja(Vector paikka, Double leveys, Double korkeus)
83    {
84        pelaaja = new PhysicsObject(10, 10);
85
86        pelaaja.Position = paikka;
87        pelaaja.Color = Color.Pink;
88        pelaaja.LinearDamping = 0.8;
89        Add(pelaaja);
90        pelaaja.Animation = new Animation(ukkelinKavely); 
91        pelaaja.Animation.FPS = 3;
92        //pelaaja.Animation.Start();
93        //pelaaja.Image = olionKuva;
94        pelaaja.CanRotate = false;
95        pelaaja.Tag = "pelaaja";
96        LuoNappaimet(pelaaja);
97        AddCollisionHandler(pelaaja, "hirviö", PelaajaOsuu);
98       
99
100    }
101
102
103    void LuoHirvio(Vector paikka, Double leveys, Double korkeus)
104    {
105        PhysicsObject hirvio = new PhysicsObject(15, 15);
106        hirvio.Position = paikka;
107        hirvio.Color = Color.Yellow;
108        //hirvio.LinearDamping = 0.8;
109        hirvio.Image = olionkuva;
110        hirvio.Tag = "hirviö";
111
112        LabyrinthWandererBrain labyrinttiAivot = new LabyrinthWandererBrain(RUUDUN_KOKO);
113        labyrinttiAivot.Speed = 30.0;
114        labyrinttiAivot.LabyrinthWallTag = "seina";
115
116        FollowerBrain jahtausAivot = new FollowerBrain("pelaaja");
117        jahtausAivot.Speed = 30;
118        jahtausAivot.DistanceFar = 200;
119        jahtausAivot.FarBrain = labyrinttiAivot;
120
121        hirvio.Brain = jahtausAivot;
122        Add(hirvio);
123       
124    }
125
126   
127   
128 
129    void LuoNappaimet(PhysicsObject pelaaja)
130    {
131        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, Math.PI / 2, pelaaja);
132        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, -Math.PI / 2, pelaaja);
133        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, Math.PI, pelaaja);
134        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, null, 0.0, pelaaja);
135
136        Keyboard.Listen(Key.W, ButtonState.Released, animaationpysaytys, null);
137        Keyboard.Listen(Key.S, ButtonState.Released, animaationpysaytys, null);
138        Keyboard.Listen(Key.A, ButtonState.Released, animaationpysaytys, null);
139        Keyboard.Listen(Key.D, ButtonState.Released, animaationpysaytys, null);
140        Keyboard.Listen(Key.E, ButtonState.Pressed, avaaovi, null);
141        Keyboard.Listen(Key.LeftShift, ButtonState.Pressed, delegate { nopeus *= juoksuNopKerroin; pelaaja.Animation.FPS *= 4; }, null);
142        Keyboard.Listen(Key.LeftShift, ButtonState.Released, delegate { nopeus /= juoksuNopKerroin; pelaaja.Animation.FPS /= 4; }, null);
143
144        Mouse.ListenMovement(0.5, Tahtaa, "Tähtää aseella");
145    }
146
147    void LiikutaPelaajaa(double kulma, PhysicsObject pelaaja)
148    {
149        //Angle kulma = pelaaja.Angle + Angle.FromRadians(Math.Sin(vektori.X)) + Angle.FromRadians(Math.Cos(vektori.Y)) + Angle.FromRadians(Math.PI/2);
150        Angle uusiKulma = pelaaja.Angle + Angle.FromRadians(kulma);
151        pelaaja.Push(Vector.FromLengthAndAngle(nopeus, uusiKulma));
152        pelaaja.Animation.Resume();
153    }
154
155    void Tahtaa(AnalogState hiirenLiike)
156    {
157        Vector suunta = (Mouse.PositionOnWorld - pelaaja.AbsolutePosition).Normalize();
158        pelaaja.Angle = suunta.Angle - Angle.RightAngle;
159        varjo.Angle = suunta.Angle;
160    }
161
162    void animaationpysaytys()
163    {
164        pelaaja.Animation.Stop();
165    }
166
167
168    void PelaajaOsuu(PhysicsObject pelaaja, PhysicsObject kohde)
169    {
170        ClearAll();
171        Begin();
172    }
173
174    void avaaovi()
175    {
176        Vector ovenPaikka = pelaaja.Position + Vector.FromLengthAndAngle(pelaaja.Width, pelaaja.Angle + Angle.RightAngle);
177        PhysicsObject ovi = GetObjectAt(ovenPaikka, "ovi") as PhysicsObject;
178
179        if (ovi != null)
180        {
181            ovi.Destroy();
182        }
183    }
184
185}
186
187
188
189
Note: See TracBrowser for help on using the repository browser.