source: 2016/27/TaneliL/viikko27peli/viikko27peli/viikko27peli/viikko27peli.cs @ 7780

Revision 7780, 5.5 KB checked in by taliimat, 3 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 viikko27peli : PhysicsGame
10{
11
12    private Animation pelaajanKavely;
13    private Animation pelaajanHyppy;
14
15    PlatformCharacter pelaaja;
16
17    GameObject kiipeilija;
18
19    public override void Begin()
20    {
21        pelaajanKavely = LoadAnimation("kavely");
22        pelaajanHyppy = LoadAnimation("hyppy");
23
24        Window.Width = 1280;
25        Window.Height = 720;
26
27        luoMaailma();
28        nappaimet();
29    }
30
31    void nappaimet()
32    {
33        Keyboard.Listen(Key.W, ButtonState.Pressed, pelaajaHyppaa, null, 700.0);
34        Keyboard.Listen(Key.A, ButtonState.Down, liikutaPelaajaa, null, -200.0);
35        Keyboard.Listen(Key.D, ButtonState.Down, liikutaPelaajaa, null, 200.0);
36        Keyboard.Listen(Key.E, ButtonState.Pressed, kiipea, null);
37        Keyboard.Listen(Key.T, ButtonState.Pressed, luoKonsoli, "");
38
39        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
40        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
41    }
42
43    void luoMaailma()
44    {
45        ColorTileMap kentta = ColorTileMap.FromLevelAsset("Kentta1");
46        kentta.SetTileMethod(Color.YellowGreen, luoPelaaja);
47        kentta.SetTileMethod(Color.Red, luoPiikki);
48        kentta.SetTileMethod(Color.Gold, luoKerailyEsine);
49        kentta.SetTileMethod(Color.DarkGray, luoOhutPalikka);
50        kentta.SetTileMethod(Color.Black, luoPaksuPalikka);
51        kentta.SetTileMethod(Color.Blue, luoTikkaat);
52        kentta.SetTileMethod(Color.White, luoMaali);
53        kentta.Execute(60, 60);
54
55        Gravity = new Vector(0.0, -800.0);
56
57        Camera.Follow(pelaaja);
58    }
59
60    void luoPelaaja(Vector paikka, double leveys, double korkeus)
61    {
62
63        pelaaja = new PlatformCharacter(40, 70);
64        pelaaja.Position = paikka;
65        pelaaja.Color = Color.YellowGreen;
66        pelaaja.CanRotate = false;
67        pelaaja.AnimWalk = new Animation(pelaajanKavely);
68        pelaaja.AnimWalk.FPS = 25;
69        pelaaja.AnimJump = new Animation(pelaajanHyppy);
70        pelaaja.AnimJump.FPS = 37;
71        pelaaja.LoopJumpAnim = true;
72        Add(pelaaja);
73    }
74
75    void luoPaksuPalikka(Vector paikka, double leveys, double korkeus)
76    {
77        PhysicsObject paksuPalikka = PhysicsObject.CreateStaticObject(60, 60);
78        paksuPalikka.Position = paikka;
79        paksuPalikka.Color = Color.Black;
80        Add(paksuPalikka);
81    }
82
83    void luoOhutPalikka(Vector paikka, double leveys, double korkeus)
84    {
85        PhysicsObject ohutPalikka = PhysicsObject.CreateStaticObject(60, 10);
86        ohutPalikka.Position = paikka;
87        ohutPalikka.Color = Color.DarkGray;
88        Add(ohutPalikka);
89    }
90
91    void luoPiikki(Vector paikka, double leveys, double korkeus)
92    {
93        PhysicsObject piikit = PhysicsObject.CreateStaticObject(60, 60);
94        piikit.Position = paikka;
95        piikit.Color = Color.Red;
96        Add(piikit);
97    }
98    void luoKerailyEsine(Vector paikka, double leveys, double korkeus)
99    {
100        PhysicsObject kerailyEsine = PhysicsObject.CreateStaticObject(60, 60);
101        kerailyEsine.Position = paikka;
102        kerailyEsine.Color = Color.Gold;
103        Add(kerailyEsine);
104    }
105
106    void luoMaali(Vector paikka, double leveys, double korkeus)
107    {
108        PhysicsObject maali = PhysicsObject.CreateStaticObject(60, 60);
109        maali.Position = paikka;
110        maali.Color = Color.White;
111        Add(maali);
112
113    }
114
115    void luoTikkaat(Vector paikka, double leveys, double korkeus)
116    {
117        PhysicsObject tikkaat = PhysicsObject.CreateStaticObject(60, 4 * 60);
118        tikkaat.IgnoresCollisionResponse = true;
119        tikkaat.Position = paikka;
120        tikkaat.Bottom = paikka.Y - korkeus / 2;
121        tikkaat.Tag = "tikas";
122        tikkaat.Color = Color.Blue;
123        Add(tikkaat, -1);
124    }
125
126    void liikutaPelaajaa(double suunta)
127    {
128        pelaaja.Walk(suunta);
129    }
130    void pelaajaHyppaa(double nopeus)
131    {
132        pelaaja.Jump(nopeus);
133    }
134
135    void kiipea()
136    {
137        List<GameObject> tikkaat = GetObjectsWithTag("tikas");
138        bool voiKiiveta = false;
139
140        foreach (var tikas in tikkaat)
141        {
142            if (Vector.Distance(pelaaja.Position, new Vector(tikas.X, tikas.Bottom + 30)) < 30)
143            {
144                voiKiiveta = true;
145                break;
146            }
147        }
148
149        if (!voiKiiveta)
150            return;
151        if (kiipeilija != null)
152            return;
153
154        kiipeilija = new GameObject(pelaaja.Width, pelaaja.Height);
155        kiipeilija.Color = pelaaja.Color;
156        kiipeilija.Position = pelaaja.Position;
157        Add(kiipeilija, 1);
158
159        Camera.Follow(kiipeilija);
160
161        pelaaja.IsVisible = false;
162
163        kiipeilija.MoveTo(pelaaja.Position + new Vector(0, 4*60), 300, delegate
164        {
165            pelaaja.Position = kiipeilija.Position;
166            pelaaja.IsVisible = true;
167            kiipeilija.Destroy();
168            kiipeilija = null;
169            Camera.Follow(pelaaja);
170        });
171    }
172
173    void luoKonsoli()
174    {
175        InputWindow konsoli = new InputWindow("Konsoli");
176        konsoli.TextEntered += ProcessInput;
177        Add(konsoli);
178    }
179
180    void ProcessInput(InputWindow ikkuna)
181    {
182        string vastaus = ikkuna.InputBox.Text;
183        // tehdään jotain vastauksella
184    }
185
186}
Note: See TracBrowser for help on using the repository browser.