source: 2017/27/JuusoM/peli/peli/peli/peli.cs @ 8931

Revision 8931, 7.0 KB checked in by npo17_36, 2 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 peli : PhysicsGame
10{
11     Vector nopeus = new Vector (8000, 00);
12    Vector nopeus1 = new Vector(00, 8000);
13   
14   
15    const int RUUDUN_KOKO = 40;
16
17    PhysicsObject pelaaja1;
18    Light valo;
19    Image pelaajanKuva = LoadImage("police");
20    Image tahtiKuva = LoadImage("key");
21    Image gangsteri = LoadImage("gangster");
22    Image ovenkuva = LoadImage("door");
23    Image avainkuva = LoadImage("key2");
24    SoundEffect maaliAani = LoadSoundEffect("maali");
25
26    public override void Begin()
27    {
28
29        LuoKentta();
30        LisaaNappaimet();
31        LuoPistelaskuri();
32        Gravity = new Vector(0.0, -800.0);
33        Camera.Follow(pelaaja1);
34        Camera.ZoomFactor = 1.2;
35        Camera.StayInLevel = true;
36    }
37
38    void LuoKentta()
39    {
40
41        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta");
42
43        ruudut.SetTileMethod(Color.Black, LisaaTaso);
44        ruudut.SetTileMethod("4800FF", LisaaPelaaja);
45        ruudut.SetTileMethod("808080", LisaaGangsteri);
46        ruudut.SetTileMethod("FF0000", LisaaOvi);
47        ruudut.SetTileMethod("FFD800", LisaaTahti);
48        ruudut.SetTileMethod("00FFFF", LisaaAvain);
49        ruudut.Execute(20, 20);
50
51        GameObject tausta = new GameObject(Level.Width, Level.Height);
52       
53        Add(tausta, -3); 
54        Level.Background.CreateGradient(Color.AshGray, Color.AshGray);
55        Gravity = new Vector(0.0, -800.0);
56
57        Level.AmbientLight = 0.0;
58
59         valo = new Light();
60        valo.Intensity = 1.2;
61        valo.Distance = 15;
62        valo.Position = pelaaja1.Position;
63        Add(valo);
64    }
65
66    protected override void Paint(Canvas canvas)
67    {
68        valo.Position = pelaaja1.Position;
69        base.Paint(canvas);
70
71    }
72    void LisaaTaso(Vector paikka, double leveys, double korkeus)
73    {
74        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
75        taso.Position = paikka;
76        taso.Color = Color.Gray;
77        taso.Tag = "seina";
78        Add(taso);
79    }
80
81
82    void LisaaGangsteri(Vector paikka, double leveys, double korkeus)
83    {
84
85        PhysicsObject gangsta = new PhysicsObject(RUUDUN_KOKO / 2, RUUDUN_KOKO / 2);
86        gangsta.Position = paikka;
87        gangsta.Image = gangsteri;
88        gangsta.Tag = "gangsta";
89        gangsta.CanRotate = false;
90        gangsta.IgnoresGravity = true;
91        gangsta.LinearDamping = 0.7;
92
93
94
95        LabyrinthWandererBrain labyrinttiAivot = new LabyrinthWandererBrain(RUUDUN_KOKO);
96        labyrinttiAivot.Speed = 100.0;
97        labyrinttiAivot.LabyrinthWallTag = "seina";
98
99        gangsta.Brain = labyrinttiAivot;
100        Add(gangsta);
101    }
102
103    void LisaaOvi(Vector paikka, double leveys, double korkeus)
104    {
105        PhysicsObject ovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
106        ovi.Position = paikka;
107        ovi.Image = ovenkuva;
108        ovi.Tag = "ovi";
109        Add(ovi);
110    }
111    void LisaaTahti(Vector paikka, double leveys, double korkeus)
112    {
113       
114        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
115        tahti.IgnoresCollisionResponse = true;
116        tahti.Position = paikka;
117        tahti.Image = tahtiKuva;
118        tahti.Tag = "tahti";
119        Add(tahti);
120    }
121
122    void LisaaAvain (Vector paikka, double leveys, double korkeus)
123    {
124
125        PhysicsObject avain = PhysicsObject.CreateStaticObject(leveys, korkeus);
126        avain.IgnoresCollisionResponse = true;
127        avain.Position = paikka;
128        avain.Image = avainkuva;
129        avain.Tag = "avain";
130        Add(avain);
131    }
132    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
133    {
134        pelaaja1 = new PhysicsObject(leveys, korkeus);
135        pelaaja1.Position = paikka;
136        pelaaja1.Mass = 4.0;
137        pelaaja1.Image = pelaajanKuva;
138        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
139        AddCollisionHandler(pelaaja1, "avain", TormaaAvaimeen);
140        AddCollisionHandler(pelaaja1, "gangsta", TormaaGangstaan);
141        AddCollisionHandler(pelaaja1, "ovi", TormaaOveen);
142        pelaaja1.CanRotate = false;
143        pelaaja1.IgnoresGravity = true;
144        pelaaja1.LinearDamping = 0.7;
145        Add(pelaaja1);
146    }
147
148    void TormaaOveen(PhysicsObject pelaaja1, PhysicsObject ovi)
149    {
150        if (pisteLaskuri.Value > 0)
151        {
152            ovi.Destroy();
153            pisteLaskuri.Value -= 1;
154        } else
155        {
156            MessageDisplay.Add("Tarvitset avaimen");
157        }
158    }
159
160    IntMeter pisteLaskuri;
161
162    void LuoPistelaskuri()
163    {
164        pisteLaskuri = new IntMeter(0);
165
166        Label pisteNaytto = new Label();
167        pisteNaytto.X = Screen.Left + 100;
168        pisteNaytto.Y = Screen.Top - 100;
169        pisteNaytto.TextColor = Color.Black;
170        pisteNaytto.Color = Color.White;
171
172        pisteNaytto.BindTo(pisteLaskuri);
173        Add(pisteNaytto);
174    }
175    void LisaaNappaimet()
176    {
177        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
178        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
179
180        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
181
182        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
183
184        Keyboard.Listen(Key.Up, ButtonState.Down, Hyppaa, "Pelaaja hyppää", pelaaja1, nopeus1);
185
186        Keyboard.Listen(Key.Down, ButtonState.Down, Hyppaa, "Pelaaja hyppää", pelaaja1, -nopeus1);
187 
188        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
189        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, nopeus);
190        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
191
192
193        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
194    }
195
196    void Liikuta(PhysicsObject hahmo, Vector nopeus)
197    {
198        if(nopeus.X < 0)
199            hahmo.TextureWrapSize = new Vector(-1, 1);
200        if (nopeus.X > 0)
201            hahmo.TextureWrapSize = new Vector(1, 1);
202        hahmo.Push(nopeus);
203    }
204
205   void Hyppaa(PhysicsObject hahmo, Vector nopeus1)
206   {
207       hahmo.Push(nopeus1);
208   }
209
210    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
211    {
212        maaliAani.Play();
213        MessageDisplay.Add("Keräsit avaimen");
214        pisteLaskuri.Value += 1;
215        tahti.Destroy();
216    }
217
218    void TormaaAvaimeen(PhysicsObject hahmo, PhysicsObject avain)
219    {
220        MessageDisplay.Add("Keräsit ison avaimen");
221        pisteLaskuri.Value += 10;
222        avain.Destroy();
223    }
224
225    void TormaaGangstaan(PhysicsObject pelaaja1, PhysicsObject gangsta)
226    {
227        MessageDisplay.Add("Jäit kiinni");
228        pelaaja1.Destroy();
229       
230    }
231}
Note: See TracBrowser for help on using the repository browser.