source: 2017/27/EeliN/Selviytyja/Selviytyja/Selviytyja/Selviytyja.cs @ 8913

Revision 8913, 11.4 KB checked in by npo17_40, 2 years ago (diff)

menun teko, puun/kiven hakkuun tunnistus

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Selviytyja : PhysicsGame
10{
11    int Speed = 100;
12    public bool menuopened = false;
13    public Image idleRight = LoadImage("PlayerIdleRight_0");
14    public Image treeLeaves = LoadImage("TreeLeaves");
15    public Image treeTrunk = LoadImage("TreeTrunk");
16    public Image stoneTop = LoadImage("StoneTop");
17    public Image stoneBottom = LoadImage("StoneBottom");
18    public Image stoneimg = LoadImage("Stone_0");
19    private Image[] playerWalkR = LoadImages("PlayerWalkRight_0", "PlayerWalkRight_1");
20    Image idleLeft;
21    GameObject menubutton;
22    GameObject menu;
23    GameObject resumebutton;
24    GameObject quitbutton;
25    private Image[] playerWalkL;
26    Image Bg = LoadImage("grass");
27    Image menuimg = LoadImage("menu");
28    List<PhysicsObject> objektilista = new List<PhysicsObject>();
29    List<GameObject> menubuttonit = new List<GameObject>();
30    public override void Begin()
31    {
32        // TODO: Kirjoita ohjelmakoodisi tähän
33        Level.Width = Window.Width;
34        Level.Height = Window.Height;
35        SmoothTextures = false;
36        Player ukko = new Player(22, 42);
37        //ukko.MakeStatic();
38        ukko.Image = idleRight;
39        ukko.CanRotate = false;
40        ukko.PlayerImageRight = idleRight;
41        ukko.PlayerImageLeft = Image.Mirror(idleRight.Clone());
42        ukko.PlayerImage = ukko.PlayerImageRight;
43        //idleLeft = Image.Mirror(idleRight);
44        //playerWalkL = playerWalkR;
45        //playerWalkL[1] = Image.Mirror(playerWalkR[1]).Clone();
46        //playerWalkL[0] = Image.Mirror(playerWalkR[0]).Clone();
47        ukko.PlayerWalkR = new Animation(playerWalkR);
48        //ukko.PlayerWalkL = Animation.Mirror(ukko.PlayerWalkR.cl);
49        ukko.Restitution = 0;
50        ukko.MaxVelocity = 0;
51        Level.Background.Color = Color.Black;
52        Add(ukko);
53        Level.Background.Image = Bg;
54        Level.Background.TileToLevel();
55        Camera.ZoomToLevel();
56        LuoKiviRndm();
57        LuoPuuRndm();
58        LuoPauseMenu();
59
60
61
62        Keyboard.Listen(Key.D, ButtonState.Down, MoveSideways, null, ukko, new Vector(Speed, 0));
63        Keyboard.Listen(Key.D, ButtonState.Released, MoveSideways, null, ukko, Vector.Zero);
64        Keyboard.Listen(Key.A, ButtonState.Down, MoveSideways, null, ukko, new Vector(-Speed, 0));
65        Keyboard.Listen(Key.A, ButtonState.Released, MoveSideways, null, ukko, Vector.Zero);
66        Keyboard.Listen(Key.W, ButtonState.Down, MoveVertically, null, ukko, new Vector(0, Speed));
67        Keyboard.Listen(Key.W, ButtonState.Released, MoveVertically, null, ukko, Vector.Zero);
68        Keyboard.Listen(Key.S, ButtonState.Down, MoveVertically, null, ukko, new Vector(0, -Speed));
69        Keyboard.Listen(Key.S, ButtonState.Released, MoveVertically, null, ukko, Vector.Zero);
70        Mouse.ListenMovement(10, KuunteleLiiketta, null);
71
72        Keyboard.Listen(Key.Escape, ButtonState.Pressed, AvaaPauseMenu, "Pause the game");
73
74        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, Hakkaaminen, null, ukko);
75
76
77    }
78    void MoveSideways(Player pelaaja, Vector direction)
79    {
80        //pelaaja.Velocity = new Vector(direction.X, pelaaja.Velocity.Y);
81        PlayerAnimation(pelaaja, direction);
82        pelaaja.Velocity += direction;
83    }
84
85    void MoveVertically(Player pelaaja, Vector direction)
86    {
87        //pelaaja.Velocity = new Vector(pelaaja.Velocity.X, direction.Y);
88        PlayerAnimation(pelaaja, direction);
89        pelaaja.Velocity += direction;
90    }
91
92    public void AvaaPauseMenu()
93    {
94        if (menuopened == true)
95        {
96            menu.IsVisible = false;
97            menuopened = false;
98            Mouse.IsCursorVisible = false;
99        } else
100        {
101            menu.IsVisible = true;
102            menuopened = true;
103            Level.Background.FadeColorTo(Color.Black, 10);
104            Mouse.IsCursorVisible = true;
105        }
106    }
107
108    public void LuoPauseMenu()
109    {
110
111        menu = new GameObject(450, 500);
112        menu.Image = menuimg;
113        menu.IsVisible = false;
114        Add(menu, 2);
115        menubutton = new GameObject(254, 134);
116        resumebutton = new GameObject(254, 134);
117        quitbutton = new GameObject(254, 134);
118        menubutton.Y = 157;
119        resumebutton.Y = 0;
120        quitbutton.Y = -160;
121        Add(menubutton, 3);
122        Add(resumebutton, 3);
123        Add(quitbutton, 3);
124        menubuttonit.Add(menubutton);
125        menubuttonit.Add(resumebutton);
126        menubuttonit.Add(quitbutton);
127        if (menuopened == false)
128        {
129            menubutton.Color = Color.Transparent;
130            resumebutton.Color = Color.Transparent;
131            quitbutton.Color = Color.Transparent;
132           
133
134        }
135        menubutton.Color = Color.Transparent;
136        resumebutton.Color = Color.Transparent;
137        quitbutton.Color = Color.Transparent;
138
139    }
140
141    void KuunteleLiiketta(AnalogState hiirentila)
142    {
143        if (menuopened == false)
144        {
145            return;
146        }
147        foreach (GameObject nappi in menubuttonit)
148        {
149            if (Mouse.IsCursorOn(nappi) && (menuopened == true))
150            {
151                nappi.Color = new Color(Color.DarkBrown, 100);
152
153            }
154            else
155            {
156                nappi.Color = Color.Transparent;
157            }
158        }
159    }
160    public void PlayerAnimation(Player player, Vector direction)
161    {
162       // MessageDisplay.Clear();
163       // MessageDisplay.Add("PlayerRight = " + player.PlayerRight + ", direction = " + direction);
164        if (direction.X != 0)
165        {
166            player.PlayerAnimation(direction.X);
167            return;
168        }
169        if (direction.Y != 0)
170        {
171            if (player.PlayerRight) player.Animation = player.PlayerWalkR;
172            else player.Animation = Animation.Mirror(player.PlayerWalkR);
173
174        }
175        else player.PlayerAnimation(0);
176
177        //if (direction == 0) player.Animation.Stop();
178        //else
179        //    player.Animation.Start();
180
181    }
182
183    void Hakkaaminen(Player ukko)
184    {
185        List<GameObject> resurssit;
186
187        if (ukko.PlayerRight)
188        {
189            resurssit = GetObjectsBetween((ukko.Position + new Vector(ukko.Width * 0.5, ukko.Height * 0.1)), (ukko.Position + new Vector(ukko.Width * 1, ukko.Height + 10)));
190        }
191        else
192        {
193            resurssit = GetObjectsBetween((ukko.Position - new Vector(ukko.Width * 0.5, ukko.Height * 0.1)), (ukko.Position - new Vector(ukko.Width * 1, -ukko.Height - 10)));
194        }
195
196        if (resurssit.Count > 0)
197        {
198            foreach (GameObject resurssi in resurssit)
199            {
200                MessageDisplay.Add("Osui olioon: " + resurssi.Tag.ToString());
201            }
202           
203        }
204       
205    }
206
207    void LuoKivi(double x,double y)
208    {
209        Stone stone = new Stone(56, 50);
210        stone.Image = stoneBottom;
211        stone.TopImage = stoneTop;
212        stone.MakeStatic();
213        stone.Tag = "Kivi";
214        stone.Shape = Shape.Circle;
215        stone.Restitution = 0;
216        stone.X = x;
217        stone.Restitution = 0;
218        stone.Y = y;
219        Add(stone,1);
220        objektilista.Add(stone);
221        for (int i = 0; i < objektilista.Count-1; i++)
222        {
223            if ((stone.Position - objektilista[i].Position).Magnitude < 120 )
224            {
225                objektilista.Remove(stone);
226                stone.Destroy();
227            }
228        }
229    }
230
231    void LuoKiviRndm()
232    {
233        for (int i = 0; i < 20; i++)
234        {
235           
236            double x = RandomGen.NextDouble(Level.Left,Level.Right);
237            double y = RandomGen.NextDouble(Level.Bottom, Level.Top);
238            LuoKivi(x, y);
239        }
240    }
241    void LuoPuu(double x, double y)
242    {
243        Tree puu = new Tree(15, 152);
244        puu.MakeStatic();
245        puu.Image = treeTrunk;
246        puu.Tag = "Puu";
247        puu.TopImage = treeLeaves;
248        puu.Restitution = 0;
249        puu.X = x;
250        puu.Y = y;
251        Add(puu,1);
252        objektilista.Add(puu);
253        for (int i = 0; i < objektilista.Count - 1; i++)
254        {
255            if ((puu.Position - objektilista[i].Position).Magnitude < 80)
256            {
257                objektilista.Remove(puu);
258                puu.Destroy();
259            }
260        }
261    }
262
263    void LuoPuuRndm()
264    {
265        for (int i = 0; i < 150; i++)
266        {
267
268            double x = RandomGen.NextDouble(Level.Left, Level.Right);
269            double y = RandomGen.NextDouble(Level.Bottom, Level.Top);
270            LuoPuu(x, y);
271        }
272    }
273}
274public class Player : PhysicsObject
275{
276    public bool PlayerRight = true;
277    public Animation PlayerWalkR;
278    public Animation PlayerWalkL;
279    public Image PlayerImage;
280    public Image PlayerImageRight;
281    public Image PlayerImageLeft;
282
283    public Player(double leveys, double korkeus)
284        : base (leveys, korkeus)
285    {
286        //idleRight = Selviytyja.Move();
287 }
288    public void PlayerAnimation(double direction)
289    {
290
291        if (direction == 0 && PlayerImage == PlayerImageLeft)
292        {
293            this.Animation = null;
294            if (PlayerRight)
295            {
296                PlayerRight = true;
297                PlayerImage = (PlayerImageRight);
298            }
299            this.Image = (PlayerImage);
300           
301            return;
302        }
303        else if (direction == 0 && PlayerImage == PlayerImageRight)
304        {
305            this.Animation = null;
306            if (PlayerRight == false)
307            {
308                PlayerRight = false;
309                PlayerImage = (PlayerImageLeft);
310            }
311                this.Image = (PlayerImage);
312                     
313            return;
314        }
315
316        if (direction < 0)
317        {
318            PlayerRight = false;
319            if (this.Animation.IsPlaying == false)
320            {
321                this.Animation = Animation.Mirror(PlayerWalkR);
322                this.Animation.Start();
323            }
324        }
325        else if (direction > 0)
326        {
327            PlayerRight = true;
328            if (this.Animation.IsPlaying == false)
329            {
330                this.Animation = PlayerWalkR;
331                this.Animation.Start();
332            }
333        }
334        if (this.Animation != null) this.Animation.FPS = 3;
335
336
337
338
339
340       
341    }
342
343}
344
345
346public class Tree : PhysicsObject
347{
348    GameObject Lehti;
349
350    public Image TopImage
351        { 
352        get { return Lehti.Image; } 
353        set { Lehti.Image = value;}
354        }
355
356
357    public Tree(double leveys, double korkeus)
358        : base (leveys, korkeus*0.5)
359    {
360        this.Y -= korkeus * 0.25;
361        Lehti = new GameObject(leveys*5, korkeus*0.5);
362        Lehti.Bottom = this.Top;
363        this.Add(Lehti);
364    }
365
366}
367
368public class Stone : PhysicsObject
369{
370    GameObject stonetop;
371    PhysicsObject stonebottom;
372
373    public Image TopImage
374    {
375        get { return stonetop.Image; }
376        set { stonetop.Image = value; }
377    }
378
379
380    public Stone(double leveys, double korkeus)
381        : base(leveys, korkeus * 0.5)
382    {
383        stonetop = new GameObject(leveys, korkeus * 0.5);
384        stonetop.Bottom = this.Top;
385        this.Add(stonetop);
386    }
387
388}
Note: See TracBrowser for help on using the repository browser.