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

Revision 8900, 9.2 KB checked in by npo17_40, 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 Selviytyja : PhysicsGame
10{
11    int Speed = 100;
12    public Image idleRight = LoadImage("PlayerIdleRight_0");
13    public Image treeLeaves = LoadImage("TreeLeaves");
14    public Image treeTrunk = LoadImage("TreeTrunk");
15    public Image stoneTop = LoadImage("StoneTop");
16    public Image stoneBottom = LoadImage("StoneBottom");
17    public Image stoneimg = LoadImage("Stone_0");
18    private Image[] playerWalkR = LoadImages("PlayerWalkRight_0","PlayerWalkRight_1");
19    Image idleLeft;
20    private Image[] playerWalkL;
21    Image Bg = LoadImage("grass");
22    List<PhysicsObject> objektilista = new List<PhysicsObject>();
23    public override void Begin()
24    {
25        // TODO: Kirjoita ohjelmakoodisi tähän
26        SmoothTextures = false;
27        Player ukko = new Player(22, 42);
28        //ukko.MakeStatic();
29        ukko.Image = idleRight;
30        ukko.CanRotate = false;
31        ukko.PlayerImageRight = idleRight;
32        ukko.PlayerImageLeft = Image.Mirror(idleRight.Clone());
33        ukko.PlayerImage = ukko.PlayerImageRight;
34        //idleLeft = Image.Mirror(idleRight);
35        //playerWalkL = playerWalkR;
36        //playerWalkL[1] = Image.Mirror(playerWalkR[1]).Clone();
37        //playerWalkL[0] = Image.Mirror(playerWalkR[0]).Clone();
38        ukko.PlayerWalkR = new Animation(playerWalkR);
39        //ukko.PlayerWalkL = Animation.Mirror(ukko.PlayerWalkR.cl);
40        ukko.Restitution = 0;
41        ukko.MaxVelocity = 0;
42        Level.Background.Color = Color.Black;
43        Add(ukko);
44        Level.Background.Image = Bg;
45        Level.Background.TileToLevel();
46        Camera.ZoomToLevel();
47        LuoKiviRndm();
48        LuoPuuRndm();
49
50
51
52        Keyboard.Listen(Key.D, ButtonState.Down, MoveSideways, null, ukko, new Vector(Speed, 0));
53        Keyboard.Listen(Key.D, ButtonState.Released, MoveSideways, null, ukko, Vector.Zero);
54        Keyboard.Listen(Key.A, ButtonState.Down, MoveSideways, null, ukko, new Vector(-Speed, 0));
55        Keyboard.Listen(Key.A, ButtonState.Released, MoveSideways, null, ukko, Vector.Zero);
56        Keyboard.Listen(Key.W, ButtonState.Down,     MoveVertically, null, ukko, new Vector(0,Speed));
57        Keyboard.Listen(Key.W, ButtonState.Released, MoveVertically, null, ukko, Vector.Zero);
58        Keyboard.Listen(Key.S, ButtonState.Down,     MoveVertically, null, ukko, new Vector(0,-Speed));
59        Keyboard.Listen(Key.S, ButtonState.Released, MoveVertically, null, ukko, Vector.Zero);
60        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, Hakkaaminen, null, ukko);
61
62
63
64
65        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
66        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
67
68     
69    }
70    void MoveSideways(Player pelaaja, Vector direction)
71    {
72        //pelaaja.Velocity = new Vector(direction.X, pelaaja.Velocity.Y);
73        PlayerAnimation(pelaaja, direction);
74        pelaaja.Velocity += direction;
75    }
76
77    void MoveVertically(Player pelaaja, Vector direction)
78    {
79        //pelaaja.Velocity = new Vector(pelaaja.Velocity.X, direction.Y);
80        PlayerAnimation(pelaaja, direction);
81        pelaaja.Velocity += direction;
82    }
83
84    public void PlayerAnimation(Player player, Vector direction)
85    {
86       // MessageDisplay.Clear();
87       // MessageDisplay.Add("PlayerRight = " + player.PlayerRight + ", direction = " + direction);
88        if (direction.X != 0)
89        {
90            player.PlayerAnimation(direction.X);
91            return;
92        }
93        if (direction.Y != 0)
94        {
95            if (player.PlayerRight) player.Animation = player.PlayerWalkR;
96            else player.Animation = Animation.Mirror(player.PlayerWalkR);
97
98        }
99        else player.PlayerAnimation(0);
100
101        //if (direction == 0) player.Animation.Stop();
102        //else
103        //    player.Animation.Start();
104
105    }
106
107    void Hakkaaminen(Player ukko)
108    {
109        List<GameObject> resurssit;
110
111        if (ukko.PlayerRight)
112        {
113            resurssit = GetObjectsBetween((ukko.Position + new Vector(ukko.Width * 0.5, ukko.Height * 0.3)), (ukko.Position + new Vector(ukko.Width * 1, -ukko.Height * 0.3)));
114        }
115        else
116        {
117            resurssit = GetObjectsBetween((ukko.Position - new Vector(ukko.Width * 0.5, ukko.Height * 0.3)), (ukko.Position - new Vector(ukko.Width * 1, -ukko.Height * 0.3)));
118        }
119
120        if (resurssit.Count > 0)
121        {
122            foreach(GameObject resurssi in resurssit)
123            {
124                MessageDisplay.Add("Osui olioon: " + resurssi.Tag.ToString());
125            }
126           
127        }
128       
129    }
130
131    void LuoKivi(double x,double y)
132    {
133        Stone stone = new Stone(56, 50);
134        stone.Image = stoneBottom;
135        stone.TopImage = stoneTop;
136        stone.MakeStatic();
137        stone.Tag = "kivi";
138        stone.Shape = Shape.Circle;
139        stone.Restitution = 0;
140        stone.X = x;
141        stone.Restitution = 0;
142        stone.Y = y;
143        Add(stone,1);
144        objektilista.Add(stone);
145        for (int i = 0; i < objektilista.Count-1; i++)
146        {
147            if ((stone.Position - objektilista[i].Position).Magnitude < 120 )
148            {
149                objektilista.Remove(stone);
150                stone.Destroy();
151            }
152        }
153    }
154
155    void LuoKiviRndm()
156    {
157        for (int i = 0; i < 10; i++)
158        {
159           
160            double x = RandomGen.NextDouble(Level.Left,Level.Right);
161            double y = RandomGen.NextDouble(Level.Bottom, Level.Top);
162            LuoKivi(x, y);
163        }
164    }
165    void LuoPuu(double x, double y)
166    {
167        Tree puu = new Tree(15, 152);
168        puu.MakeStatic();
169        puu.Image = treeTrunk;
170        puu.Tag = "Puu";
171        puu.TopImage = treeLeaves;
172        puu.Restitution = 0;
173        puu.X = x;
174        puu.Y = y;
175        Add(puu,1);
176        objektilista.Add(puu);
177        for (int i = 0; i < objektilista.Count - 1; i++)
178        {
179            if ((puu.Position - objektilista[i].Position).Magnitude < 80)
180            {
181                objektilista.Remove(puu);
182                puu.Destroy();
183            }
184        }
185    }
186
187    void LuoPuuRndm()
188    {
189        for (int i = 0; i < 50; i++)
190        {
191
192            double x = RandomGen.NextDouble(Level.Left, Level.Right);
193            double y = RandomGen.NextDouble(Level.Bottom, Level.Top);
194            LuoPuu(x, y);
195        }
196    }
197}
198public class Player : PhysicsObject
199{
200    public bool PlayerRight = true;
201    public Animation PlayerWalkR;
202    public Animation PlayerWalkL;
203    public Image PlayerImage;
204    public Image PlayerImageRight;
205    public Image PlayerImageLeft;
206
207    public Player(double leveys, double korkeus)
208        : base (leveys, korkeus)
209    {
210        //idleRight = Selviytyja.Move();
211 }
212    public void PlayerAnimation(double direction)
213    {
214
215        if (direction == 0 && PlayerImage == PlayerImageLeft)
216        {
217            this.Animation = null;
218            if (PlayerRight)
219            {
220                PlayerRight = true;
221                PlayerImage = (PlayerImageRight);
222            }
223            this.Image = (PlayerImage);
224           
225            return;
226        }
227        else if (direction == 0 && PlayerImage == PlayerImageRight)
228        {
229            this.Animation = null;
230            if (PlayerRight == false)
231            {
232                PlayerRight = false;
233                PlayerImage = (PlayerImageLeft);
234            }
235                this.Image = (PlayerImage);
236                     
237            return;
238        }
239
240        if (direction < 0)
241        {
242            PlayerRight = false;
243            if (this.Animation.IsPlaying == false)
244            {
245                this.Animation = Animation.Mirror(PlayerWalkR);
246                this.Animation.Start();
247            }
248        }
249        else if (direction > 0)
250        {
251            PlayerRight = true;
252            if (this.Animation.IsPlaying == false)
253            {
254                this.Animation = PlayerWalkR;
255                this.Animation.Start();
256            }
257        }
258        if (this.Animation != null) this.Animation.FPS = 3;
259
260
261
262
263
264       
265    }
266
267}
268
269
270public class Tree : PhysicsObject
271{
272    GameObject Lehti;
273
274    public Image TopImage
275        { 
276        get { return Lehti.Image; } 
277        set { Lehti.Image = value;}
278        }
279
280
281    public Tree(double leveys, double korkeus)
282        : base (leveys, korkeus*0.5)
283    {
284        this.Y -= korkeus * 0.25;
285        Lehti = new GameObject(leveys*5, korkeus*0.5);
286        Lehti.Bottom = this.Top;
287        this.Add(Lehti);
288    }
289
290}
291
292public class Stone : PhysicsObject
293{
294    GameObject stonetop;
295    PhysicsObject stonebottom;
296
297    public Image TopImage
298    {
299        get { return stonetop.Image; }
300        set { stonetop.Image = value; }
301    }
302
303
304    public Stone(double leveys, double korkeus)
305        : base(leveys, korkeus * 0.5)
306    {
307        stonetop = new GameObject(leveys, korkeus * 0.5);
308        stonetop.Bottom = this.Top;
309        this.Add(stonetop);
310    }
311
312}
Note: See TracBrowser for help on using the repository browser.