source: 2015/24/OttoK/Grand Theft Norsu II/Grand Theft Norsu II/Grand Theft Norsu II/Grand_Theft_Norsu_II.cs @ 5951

Revision 5951, 8.9 KB checked in by otoskinn, 5 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 Grand_Theft_Norsu_II : PhysicsGame
10{
11   
12    Image kaupunkitausta = LoadImage("kaupunkitausta");
13   
14    double nopeus = 750;
15    const double hyppyNopeus = 1000;
16    const int RUUDUN_KOKO = 42;
17
18    PlatformCharacter pelaaja1;
19
20    Image pelaajanKuva = LoadImage("norsu");
21    Image tahtiKuva = LoadImage("tahti");
22    Image auto1kuva = LoadImage("auto1kuva");
23    Image kursorinkuva = LoadImage("kursori1");
24    double hyppykerroin = 1.0;
25
26    SoundEffect maaliAani = LoadSoundEffect("maali");
27
28    bool Autossa = false;
29
30    public override void Begin()
31    {
32        IsFullScreen = false;
33        SetWindowSize(1024, 768, true); 
34        Gravity = new Vector(0, -1000);
35
36        Mouse.IsCursorVisible = true;
37        Vector paikkaRuudulla = Mouse.PositionOnScreen;
38        Vector paikkaKentalla = Mouse.PositionOnWorld;
39       
40
41        LuoKentta();
42        LisaaNappaimet();
43
44        Camera.Follow(pelaaja1);
45        Camera.ZoomFactor = 1.2;
46        Camera.StayInLevel = false;
47    }
48
49    void LuoKentta()
50    {
51        TileMap kentta = TileMap.FromLevelAsset("kentta1");
52        kentta.SetTileMethod('#', LisaaTaso);
53        kentta.SetTileMethod('*', LisaaTahti);
54        kentta.SetTileMethod('N', LisaaPelaaja);
55        kentta.SetTileMethod('A', LuoAuto);
56        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
57        Level.CreateBorders();
58        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
59        Level.Background.Image = kaupunkitausta;
60
61        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
62        "Aloita peli","Lopeta");
63        Add(alkuValikko);
64
65
66       
67    }
68
69    void LisaaTaso(Vector paikka, double leveys, double korkeus)
70    {
71        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
72        taso.Position = paikka;
73        taso.Color = Color.Green;
74        Add(taso);
75    }
76
77    void LisaaTahti(Vector paikka, double leveys, double korkeus)
78    {
79        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
80        tahti.IgnoresCollisionResponse = true;
81        tahti.Position = paikka;
82        tahti.Image = tahtiKuva;
83        tahti.Tag = "tahti";
84        Add(tahti);
85    }
86
87    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
88    {
89        pelaaja1 = new PlatformCharacter(leveys, korkeus);
90        pelaaja1.Position = paikka;
91        pelaaja1.Mass = 4.0;
92        pelaaja1.Image = pelaajanKuva;
93        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
94        Add(pelaaja1);
95
96       
97    }
98    void MeneAutoon(PhysicsObject auto)
99    {
100        pelaaja1.Image = auto1kuva;
101        //pelaaja1.Shape = Shape.FromImage(auto1kuva);
102
103        pelaaja1.Position = auto.Position;
104        pelaaja1.Size = auto.Size;
105        auto.Destroy();
106
107        Autossa = true;
108       
109    }
110
111
112
113
114    void LisaaNappaimet()
115    {
116       
117        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
118        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
119
120        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
121        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
122        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
123        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
124        Keyboard.Listen(Key.F2, ButtonState.Down, AvaaKirjoitusIkkuna, "Avaa kirjoitusikkunan");
125        Keyboard.Listen(Key.LeftControl, ButtonState.Pressed, AsetaHyppykerroin, "Korkeampi hyppy", 1.5);
126        Keyboard.Listen(Key.LeftControl, ButtonState.Released, AsetaHyppykerroin, null, 1.0);
127        //Mouse.Listen(MouseButton.Left, ButtonState.Pressed, TarkistaHiirenPainallus, "Objektin kohdalla toiminto");
128        Keyboard.Listen(Key.F, ButtonState.Pressed, UlosAutosta, "Mene ulos autosta");
129
130        Mouse.ListenWheel(ZoomaaKenttaa, "");
131
132        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
133
134        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
135        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
136        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
137        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 2.0,
138        LiikutaPelaajaa, "Liikuta pelaajaa tattia pyörittämällä.");
139        Vector tatinAsento = ControllerOne.LeftThumbDirection;
140
141        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
142    }
143
144    void Liikuta(PlatformCharacter hahmo, double nopeus)
145    {
146        hahmo.Walk(nopeus);
147    }
148
149    void Hyppaa(PlatformCharacter hahmo, double nopeus)
150    {
151        hahmo.Jump(nopeus*hyppykerroin);
152    }
153
154    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
155    {
156        maaliAani.Play();
157        MessageDisplay.Add("Keräsit tähden!");
158        tahti.Destroy();
159    }
160    void LiikutaPelaajaa(AnalogState tatinTila)
161    {
162        Vector tatinAsento = tatinTila.StateVector;
163    }
164    void TarkistaHiirenPainallus()
165    { 
166
167    }
168    void LuoAuto(Vector paikka, double leveys, double korkeus)
169    {
170        PhysicsObject auto1 = new PhysicsObject(auto1kuva);
171        auto1.Shape = Shape.FromImage(auto1kuva);
172        auto1.Position = paikka+ new Vector(0, 40);
173        auto1.Image = auto1kuva;
174        auto1.Mass = 350;
175        Add(auto1);
176
177        Mouse.ListenOn(auto1, MouseButton.Left, ButtonState.Pressed, () => MeneAutoon(auto1),"Mene Autoon");
178
179    }
180    void AvaaKirjoitusIkkuna()
181    {
182        InputWindow kysymysIkkuna = new InputWindow("Kirjoita  koodi");
183        kysymysIkkuna.TextEntered += ProcessInput;
184        Add(kysymysIkkuna);
185
186    }
187    void ProcessInput(InputWindow ikkuna)
188    {
189        string vastaus = ikkuna.InputBox.Text;
190
191        if (vastaus == "gravity0")
192        {
193            Gravity = new Vector(0, 0);
194        }
195        else if (vastaus == "gravity1")
196        {
197            Gravity = new Vector(0, -1000);
198        }
199        else if (vastaus == "createcar")
200        {
201            LuoAuto(pelaaja1.Position, 0, 0);
202        }
203        else if (vastaus == "canrotate")
204        {
205            pelaaja1.CanRotate = true;
206
207        }
208        else if (vastaus == "cantrotate")
209        {
210            pelaaja1.CanRotate = false;
211        }
212        else if (vastaus == "superspeed")
213        {
214            nopeus = 1500;
215            PoistaNappaimet();
216            LisaaNappaimet();
217        }
218        else if (vastaus == "normalspeed")
219        {
220            nopeus = 750;
221            PoistaNappaimet();
222            LisaaNappaimet();
223        }
224        else if (vastaus == "showcodes")
225        {
226            MessageDisplay.Add("gravity0, gravity1, createcar, canrotate, cantrotate, superspeed, normalspeed.");
227        }
228
229    }
230
231
232
233
234   
235   
236   
237
238
239
240    void AsetaHyppykerroin(double haluttukerroin)
241    {
242        hyppykerroin = haluttukerroin;
243    }
244    void UlosAutosta()
245    {
246        if (Autossa == true)
247        {
248
249            pelaaja1.Image = pelaajanKuva;
250            pelaaja1.Size = new Vector(RUUDUN_KOKO, RUUDUN_KOKO);
251            LuoAuto(pelaaja1.Position, 0, 0);
252            Autossa = false;
253        }
254
255    }
256    void LuoSlider()
257    {
258        IntMeter zoomausKerroin = new IntMeter(0, 0, 5);
259        //zoomausKerroin.Changed += ZoomaaKenttaa;
260
261        Slider liukusaadin = new Slider(200, 50);
262        liukusaadin.BindTo(zoomausKerroin);
263        liukusaadin.X = Screen.LeftSafe + 200;
264        liukusaadin.Y = Screen.TopSafe - 40;
265
266        liukusaadin.Color = Color.Pink;
267        liukusaadin.Knob.Color = Color.Black;
268        liukusaadin.Track.Color = Color.Blue;
269        liukusaadin.BorderColor = Color.Red;
270        Add(liukusaadin);
271    }
272
273
274    void ZoomaaKenttaa()
275    {
276        double zoomi = Camera.ZoomFactor + Mouse.WheelChange;
277        double maxZoom = 0.1;
278        double maxZoomattu = 3.0;
279
280
281        if (zoomi < maxZoom)
282        {
283            Camera.ZoomFactor = maxZoom;
284            return;
285        }
286
287        if (zoomi > maxZoomattu)
288        {
289            Camera.ZoomFactor = maxZoomattu;
290            return;
291        }
292
293        if (Mouse.WheelChange > maxZoom)
294        {
295            Camera.ZoomFactor += maxZoom;
296            return;
297        }
298
299        if (Mouse.WheelChange < -maxZoom)
300        {
301            Camera.ZoomFactor -= maxZoom;
302            return;
303        }
304
305        Camera.ZoomFactor = zoomi;
306    }
307    void PoistaNappaimet()
308    {
309        Keyboard.Clear();
310
311    }
312}
Note: See TracBrowser for help on using the repository browser.