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

Revision 6080, 7.5 KB checked in by empaheik, 8 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        Mouse.IsCursorVisible = true;
26        Level.Background.Color = Color.DarkGray;
27        Level.Background.FitToLevel();
28        Timer ajastin = new Timer();
29        ajastin.Interval = 300.0;
30        ajastin.Timeout += AloitaAlusta;
31        ajastin.Start(10000000);
32        MediaPlayer.IsRepeating = true;
33        MediaPlayer.Play("pelimusiikki");
34
35
36        LuoPistelaskuri();
37        //PhysicsObject mob = new PhysicsObject(500,400);
38        //Add(mob);
39        //mob.Image = olionKuva;
40        // TODO: Kirjoita ohjelmakoodisi tähän
41
42        LuoKentta();
43
44        AsetaOjaimet();
45    }
46
47    void AsetaOjaimet()
48    {
49        Keyboard.Listen(Key.D, ButtonState.Down,
50      LiikutaPelaajaa, null, new Vector(6000, 0));
51        Keyboard.Listen(Key.A, ButtonState.Down,
52          LiikutaPelaajaa, null, new Vector(-6000, 0));
53        Keyboard.Listen(Key.W, ButtonState.Down,
54          LiikutaPelaajaa, null, new Vector(0, 6000));
55        Keyboard.Listen(Key.S, ButtonState.Down,
56          LiikutaPelaajaa, null, new Vector(0, -6000));
57        Mouse.IsCursorVisible = true;
58        Vector paikkaRuudulla = Mouse.PositionOnScreen;
59        Vector paikkaKentalla = Mouse.PositionOnWorld;
60
61        Camera.Follow(pelaaja1);
62        Camera.Zoom(2.5);
63        Camera.StayInLevel = true;
64
65        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
66        Mouse.ListenMovement(0.0, HiirenLiikutus, "");
67
68    }
69
70    void LiikutaPelaajaa(Vector vektori)
71    {
72        pelaaja1.Push(vektori);
73    }
74
75    void HiirenLiikutus(AnalogState Hiiri)
76    {
77        pelaaja1.AbsoluteAngle = (Mouse.PositionOnWorld - pelaaja1.Position).Angle;
78    }
79
80    void LuoSeinä(Vector paikka, double leveys, double korkeus)
81    {
82
83    }
84
85    void KuuneteleLIiketta(AnalogState hiirenTila)
86    {
87        pelaaja1.X = Mouse.PositionOnWorld.X;
88    }
89
90    void LuoAarre(Vector paikka, double leveys, double korkeus)
91    {
92        PhysicsObject aarre = new PhysicsObject(leveys, korkeus);
93        aarre.Shape = Shape.Diamond;
94        aarre.Position = paikka;
95        aarre.Color = Color.Yellow;
96        aarre.Image = aarteenKuva;
97        aarre.Tag = "aarre";
98        aarre.IgnoresCollisionResponse = true;
99        Add(aarre);
100    }
101
102
103    void LuoKentta()
104    {
105        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("labyrintinkenttä");
106        ruudut.SetTileMethod(Color.FromHexCode("0000FF"), LuoPelaaja);
107        ruudut.SetTileMethod(Color.Black, LuoSeina);
108        ruudut.SetTileMethod(new Color(0, 255, 0, 255), LuoAarre);
109        ruudut.SetTileMethod(Color.Yellow, LuoMaali);
110        ruudut.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
111
112
113        ColorTileMap ruudut2 = ColorTileMap.FromLevelAsset("labyrintinkenttä");
114        ruudut2.SetTileMethod(Color.Red, LuoHirvio);
115        ruudut2.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
116
117    }
118
119    IntMeter pisteLaskuri;
120
121    void LuoPistelaskuri()
122    {
123        pisteLaskuri = new IntMeter(0);
124
125        Label pisteNaytto = new Label();
126        pisteNaytto.X = Screen.Right - 100;
127        pisteNaytto.Y = Screen.Top - 100;
128        pisteNaytto.TextColor = Color.Red;
129        pisteNaytto.Color = Color.DarkGray;
130
131        pisteNaytto.BindTo(pisteLaskuri);
132        Add(pisteNaytto);
133    }
134
135    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
136    {
137        pelaaja1 = new PhysicsObject(leveys - 4, korkeus - 4);
138        pelaaja1.Position = paikka;
139        pelaaja1.Image = olionKuva;
140        pelaaja1.LinearDamping = 0.5;
141
142        pelaaja1.Shape = Shape.Circle;
143        AddCollisionHandler(pelaaja1, "Hirvio", TormaaHirvioon);
144        //AddCollisionHandler(pelaaja1, "aarre", CollisionHandler.AddMeterValue(pisteLaskuri, 100));
145        AddCollisionHandler(pelaaja1, "aarre", TormaaAarteeseen);
146        AddCollisionHandler(pelaaja1, "maali", TormaaMaaliin);
147
148        Add(pelaaja1);
149
150        taskulamppu = new GameObject(LoadImage("flashlight"));
151        Add(taskulamppu, 2);
152    }
153    void LuoSeina(Vector paikka, double leveys, double korkeus)
154    {
155        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
156        taso.Position = paikka;
157        taso.Color = Color.Black;
158        taso.Tag = "seina";
159        taso.CollisionIgnoreGroup = 1;
160        Add(taso);
161    }
162    void LuoHirvio(Vector paikka, double leveys, double korkeus)
163    {
164        PhysicsObject Hirvio = new PhysicsObject(leveys - 2, korkeus - 2);
165        Hirvio.Position = paikka;
166        Hirvio.Image = HirvionKuva;
167        Hirvio.Shape = Shape.Circle;
168        Hirvio.Tag = "Hirvio";
169        Add(Hirvio, 1);
170        LabyrinthWandererBrain labyrinttiAivot = new LabyrinthWandererBrain(RUUDUN_KOKO);
171        labyrinttiAivot.Speed = 100.0;
172        labyrinttiAivot.LabyrinthWallTag = "seina";
173
174
175        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
176        seuraajanAivot.Speed = 300;                 // Millä nopeudella kohdetta seurataan
177        seuraajanAivot.DistanceFar = 100;           // Etäisyys jolla aletaan seurata kohdetta
178        seuraajanAivot.DistanceClose = 10;         // Etäisyys jolloin ollaan lähellä kohdetta
179        seuraajanAivot.StopWhenTargetClose = false;  // Pysähdytään kun ollaan lähellä kohdetta
180        seuraajanAivot.FarBrain = labyrinttiAivot;   // Käytetään satunnaisaivoja kun ollaan kaukana
181
182        Hirvio.Brain = seuraajanAivot;
183    }
184
185    void TormaaHirvioon(PhysicsObject pelaaja, PhysicsObject kohde)
186    {
187        pelaaja.Destroy();
188        Explosion rajahdys = new Explosion(1000);
189        rajahdys.Position = pelaaja1.Position;
190        rajahdys.Speed = 5000.0;
191        rajahdys.Force = 1000;
192        jumpscareAani.Play();
193        Add(rajahdys);
194        AloitaAlusta();
195    }
196
197    void TormaaAarteeseen(PhysicsObject pelaaja, PhysicsObject aarre)
198    {
199        aarre.Destroy();
200        pisteLaskuri.Value += 100;
201    }
202
203    protected override void Update(Time time)
204    {
205        taskulamppu.Position = pelaaja1.Position;
206        taskulamppu.Angle = pelaaja1.Angle;
207
208        base.Update(time);
209    }
210    void LuoMaali(Vector paikka, double leveys, double korkeus)
211    {
212        PhysicsObject maali = new PhysicsObject(leveys, korkeus);
213        maali.Tag = "maali";
214        maali.Position = paikka;
215        Add(maali);
216    }
217
218    void AloitaAlusta()
219    {
220        ClearAll();
221        LuoKentta();
222        AsetaOjaimet();
223        LuoPistelaskuri();
224    }
225
226    void TormaaMaaliin(PhysicsObject pelaaja, PhysicsObject maali)
227    {
228        ClearAll();
229        PhysicsObject jumpscare = new PhysicsObject(Screen.Width, Screen.Height);
230        jumpscare.Image = jumpscareKuva;
231        Add(jumpscare);
232        jumpscareAani.Play();
233        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
234    }
235
236}
237
238
239
240
241
242
Note: See TracBrowser for help on using the repository browser.