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

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