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

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