source: 2017/23/AnttiH/FysiikkaPeli4/FysiikkaPeli4/FysiikkaPeli4/FysiikkaPeli4.cs @ 8444

Revision 8444, 8.4 KB checked in by nupeohje, 5 years ago (diff)

Hello guys is me
yah boie
Annomely

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class FysiikkaPeli4 : PhysicsGame
10{
11    int karttaNro = 1;
12    PlatformCharacter Player;
13    DoubleMeter palikkaLaskuri;
14    //Double MovementSpeed = 500;
15    bool OnkoErikoisominaisuusKaytetty = false;
16    PhysicsObject Palikka;
17    PhysicsObject maali;
18    Image Kuva = LoadImage("NAKKKM_standing");
19    private Animation P1walkanim;
20    Image[] P1walkPic = LoadImages("p1Walk/NAKKKM_sprint_", 0, 7, false);
21    Image taustaKuva = LoadImage("KaupunkiTausta");
22    Image CrateKuva = LoadImage("Crate");
23
24    public override void Begin()
25    {
26        ClearAll();
27        IsFullScreen = true;
28        NextLevel();
29        AddControls();
30
31        SmoothTextures = false;
32       
33        Player.Animation.FPS = 1;
34        AddBackGround();
35        //Level.Background.Image = taustaKuva;
36        //Level.Background.FitToLevel();
37    }
38
39    void AddControls()
40    {
41        //Keyboard.Listen(Key.Left, ButtonState.Down, MovePlayer, null, new Vector(-MovementSpeed, 0));
42        //Keyboard.Listen(Key.Left, ButtonState.Released, MovePlayer, null, new Vector(0, 0));
43        //Keyboard.Listen(Key.Right, ButtonState.Down, MovePlayer, null, new Vector(MovementSpeed, 0));
44        //Keyboard.Listen(Key.Right, ButtonState.Released, MovePlayer, null, new Vector(0, 0));
45        //Keyboard.Listen(Key.Up, ButtonState.Down, MovePlayer, null, new Vector(0, MovementSpeed));
46        //Keyboard.Listen(Key.Up, ButtonState.Released, MovePlayer, null, new Vector(0, 0));
47        //Keyboard.Listen(Key.Down, ButtonState.Down, MovePlayer, null, new Vector(0, -MovementSpeed));
48        //Keyboard.Listen(Key.Down, ButtonState.Released, MovePlayer, null, new Vector(0, 0));
49
50        Keyboard.Listen(Key.Left, ButtonState.Down, delegate { MovePlayer(-250.0); }, null);
51        Keyboard.Listen(Key.Right, ButtonState.Down, delegate { MovePlayer(250.0); }, null);
52
53        Keyboard.Listen(Key.Up, ButtonState.Down, Jump, null);
54
55        Keyboard.Listen(Key.R, ButtonState.Pressed, delegate { NextLevel(); }, null);
56
57        Keyboard.Listen(Key.Space, ButtonState.Pressed, delegate {
58            if (OnkoErikoisominaisuusKaytetty == false)
59            {
60                AddPalikka(new Vector(Player.Position.X, Player.Position.Y - 20), 20, 20, true);
61                OnkoErikoisominaisuusKaytetty = true;
62                palikkaLaskuri.Value -= 10;
63               // Timer.SingleShot(2.0, delegate { OnkoErikoisominaisuusKaytetty = false; MessageDisplay.Add("Valmis!"); });
64            }
65           
66        }, null);
67
68        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
69    }
70
71    void CreateLevel(string kenttaTiedostonNimi)
72    {
73        ColorTileMap ruudut = ColorTileMap.FromLevelAsset(kenttaTiedostonNimi);
74
75        ruudut.SetTileMethod("#FFFF0000", AddPlayer);
76        ruudut.SetTileMethod("000000", AddPalikka, false);
77        ruudut.SetTileMethod("#FF00FF00", AddBombs);
78        ruudut.SetTileMethod("#FF00FF00", AddMaali);
79
80        ruudut.Execute(20, 20);
81
82        Surface alaReuna = Surface.CreateBottom(Level, 1, 100, 140);
83        alaReuna.Color = Color.Transparent;
84        Add(alaReuna);
85
86        AddCollisionHandler(alaReuna, Player, HitBounds);
87    }
88
89    Color RandomColor ()
90    {
91        byte[] buffer = new byte[3];
92        new Random(DateTime.Now.Millisecond * 1000000 + DateTime.Now.Second * 100000 + DateTime.Now.Minute * 10000).NextBytes(buffer);
93        return new Color(buffer[0], buffer[1], buffer[2]);
94    }
95
96    void AddPalikka(Vector paikka, double leveys, double korkeus, bool vari = false)
97    {
98        Palikka = new PhysicsObject(leveys, korkeus);
99        Palikka.Position = paikka;
100        Palikka.Color = Color.Gray;
101        Palikka.Image = CrateKuva;
102        Add(Palikka);
103        if (vari)
104        {
105            Timer randomcolortimer = new Timer();
106            randomcolortimer.Interval = 0.1;
107            randomcolortimer.Timeout += delegate
108            {
109                Color _randomColor = RandomColor();
110                Palikka.Color = _randomColor;
111            };
112            randomcolortimer.Start();
113        }
114    }
115
116    void AddMaali(Vector _pos, double x, double y)
117    {
118        maali = new PhysicsObject(x, y);
119        maali.Position = _pos;
120        Add(maali);
121
122        Timer randomcolortimer = new Timer();
123        randomcolortimer.Interval = 0.1;
124        randomcolortimer.Timeout += delegate
125        {
126            Color _randomColor = RandomColor();
127            maali.Color = _randomColor;
128        };
129        randomcolortimer.Start();
130
131        AddCollisionHandler(maali, Player, voita);
132
133    }
134
135    void voita(PhysicsObject collider, PhysicsObject target)
136    {
137        karttaNro++;
138        NextLevel();
139    }
140
141    void AddPlayer(Vector paikka, double leveys, double korkeus)
142    {
143        Player = new PlatformCharacter(20, 20);
144        Player.Position = paikka;
145        Player.Shape = Shape.Circle;
146        Player.Color = Color.DarkAzure;
147        Player.LinearDamping = 0.99;
148        Player.IgnoresExplosions = true;
149        Player.Image = Kuva;
150        Add(Player);
151
152        P1walkanim = new Animation(P1walkPic);
153        Player.Animation = P1walkanim;
154        Player.AnimWalk = new Animation(P1walkanim);
155        Player.AnimIdle = new Animation(Kuva);
156        Player.AnimJump = new Animation(Kuva);
157        Player.AnimFall = new Animation(Kuva);
158
159        Timer ajastin = new Timer();
160        ajastin.Interval = 0.05;
161        ajastin.Timeout += delegate
162        {
163            Player.Velocity += new Vector(0, -10);
164        };
165        ajastin.Start();
166    }
167
168    void MovePlayer(double nopeus)
169    {
170        //Player.Push(vektori * 6);
171       
172        Player.Walk(nopeus);
173    }
174
175    void Jump()
176    {
177        Player.Jump(250);
178    }
179
180    void CameraControls()
181    {
182        Camera.Follow(Player);
183        Camera.Zoom(1.5);
184    }
185
186    void AddBackGround ()
187    {
188        GameObject CityBackGround = new GameObject(Screen.Width, Screen.Height);
189        CityBackGround.Image = taustaKuva;
190        Add(CityBackGround, -3);
191        Layers[-3].RelativeTransition = new Vector(0.1, 0.1);
192
193
194        Level.Background.Color = Color.LightGreen;
195    }
196
197    void NextLevel()
198    {
199        ClearAll();
200
201        if (karttaNro == 1) CreateLevel("Kartta1");
202        else if (karttaNro == 2) CreateLevel("Kartta2");
203        else if (karttaNro == 3) CreateLevel("Kartta3");
204        else if (karttaNro > 3) Exit();
205
206        AddControls();
207        CameraControls();
208        AddBackGround();
209        LuoAikaLaskuri();
210        LuoPalikkaLaskuri();
211    }
212
213    void AddBombs(Vector _pos, double x, double y)
214    {
215        Timer bombTimer = new Timer();
216        bombTimer.Interval = 0.1;
217        bombTimer.Timeout += delegate {
218           _pos = RandomGen.NextVector(Level.Left, Level.Bottom, Level.Right, Level.Top);
219           Color _randomColor = RandomColor();
220           Color _randomColor2 = RandomColor();
221            Explosion rajahdys = new Explosion(2000);
222            rajahdys.Position = _pos;
223            rajahdys.Speed = 10000;
224            Player.Color = _randomColor2;
225            //Add(rajahdys);
226        };
227        bombTimer.Start();
228    }
229
230    void HitBounds(PhysicsObject collider, PhysicsObject target)
231    {
232        Begin();
233    }
234
235    void LuoPalikkaLaskuri()
236    {
237        OnkoErikoisominaisuusKaytetty = false;
238        palikkaLaskuri = new DoubleMeter(10);
239        palikkaLaskuri.MaxValue = 10;
240        palikkaLaskuri.UpperLimit += delegate { OnkoErikoisominaisuusKaytetty = false; MessageDisplay.Add("Valmis!");};
241
242        ProgressBar palikkaPalkki = new ProgressBar(150, 20);
243        palikkaPalkki.BarColor = Color.Red;
244        palikkaPalkki.X = Screen.Right - 120;
245        palikkaPalkki.Y = Screen.Bottom + 20;
246        palikkaPalkki.BindTo(palikkaLaskuri);
247        Add(palikkaPalkki);
248        MessageDisplay.Add("palkki lisätty");
249    }
250
251    void LuoAikaLaskuri()
252    { 
253         Timer aikalaskuri = new Timer();
254         aikalaskuri.Interval = 1;
255         aikalaskuri.Timeout += delegate 
256         {
257             if(OnkoErikoisominaisuusKaytetty == true)
258            palikkaLaskuri.Value += 1; 
259            MessageDisplay.Add("palikka laskuriin lisätty: " + 1); 
260         };
261         aikalaskuri.Start();
262    }
263
264}
Note: See TracBrowser for help on using the repository browser.