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

Revision 7043, 7.8 KB checked in by empaheik, 5 years ago (diff)

labyrinttipeli

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