source: 2018/23/MIIKAK/FysiikkaPeli1/FysiikkaPeli1/Nyan_cat_simulator.cs @ 9673

Revision 9673, 7.5 KB checked in by mikurhin, 20 months ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Widgets;
7
8public class FysiikkaPeli1 : PhysicsGame
9{
10    PhysicsObject kissa;
11   
12    Image olionKuva = LoadImage("tekstuuri1");
13    Image olionKuva2 = LoadImage("tekstuuri2");
14    Image olionKuva3 = LoadImage("tekstuuri3");
15    Image taustakuva = LoadImage("taustakuva");
16    int luku = RandomGen.NextInt(-315, 246);
17    PhysicsObject pilvi;
18    PhysicsObject pinkkipilvi;
19    Vector nopeusylos = new Vector(0, 1000);
20    Vector nopeusalas = new Vector(0, -1000);
21    Vector nopeusoikealle = new Vector(1000, 0);
22    Vector nopeusvasemmalle = new Vector(-1000, 0);
23
24    Label pistenaytto;
25    IntMeter pistelaskuri;
26    Timer pinkkipilviajastin;
27    Timer pilviajastin;
28    public override void Begin()
29    {
30
31        MessageDisplay.Clear();
32       
33        SetWindowSize(1000, 630);
34        Screen.Size = new Vector(1100, 630);
35        Level.Size = Screen.Size;
36        PhysicsObject yla = Level.CreateTopBorder();
37        yla.Restitution = 0;
38        yla.IsVisible = false;
39        PhysicsObject ala = Level.CreateBottomBorder();
40        ala.Restitution = 0;
41        ala.IsVisible = false;
42        pistelaskuri = new IntMeter(0);
43        Label pistenaytto = new Label();
44        luopistelaskuri();
45        kissa = new PhysicsObject(165, 107);
46        kissa.Image = olionKuva;
47        kissa.Color = Color.Violet;
48        kissa.IgnoresPhysicsLogics = true;
49        Level.Background.Image = taustakuva;
50        kissa.CanRotate = false;
51        Add(kissa);
52        lisaapilvi();
53        jatkuu();
54        jatkuu2();
55        kissa.X = -380;
56        MediaPlayer.Play("NyanCatoriginal");
57        MediaPlayer.IsRepeating = true;
58        AddCollisionHandler(kissa, "pilvi", CollisionHandler.DestroyObject);
59        AddCollisionHandler(kissa, "pilvi", pelaajattormaavat);
60        AddCollisionHandler(kissa, "pinkkipilvi", pinkittormaavat);
61
62
63
64
65
66
67        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
68        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
69        Keyboard.Listen(Key.Up, ButtonState.Down, Asetanopeus, "Ylös", kissa, nopeusylos);
70        Keyboard.Listen(Key.Up, ButtonState.Released, Asetanopeus, null, kissa, Vector.Zero);
71        Keyboard.Listen(Key.Down, ButtonState.Down, Asetanopeus, "Alas", kissa, nopeusalas);
72        Keyboard.Listen(Key.Down, ButtonState.Released, Asetanopeus, null, kissa, Vector.Zero);
73        Keyboard.Listen(Key.Right, ButtonState.Down, Asetanopeus, "oikealle(vaikea)", kissa, nopeusoikealle);
74        Keyboard.Listen(Key.Right, ButtonState.Released, Asetanopeus, null, kissa, Vector.Zero);
75        Keyboard.Listen(Key.Left, ButtonState.Down, Asetanopeus, "vasemmalle(vaikea)", kissa, nopeusvasemmalle);
76        Keyboard.Listen(Key.Left, ButtonState.Released, Asetanopeus, null, kissa, Vector.Zero);
77        Keyboard.Listen(Key.PrintScreen, ButtonState.Down, tormaapilveen, null);
78        Keyboard.Listen(Key.R, ButtonState.Pressed, restart, "restart");
79        Keyboard.Listen(Key.Decimal, ButtonState.Pressed, ky, null);
80        Keyboard.Listen(Key.H, ButtonState.Pressed, ShowControlHelp, null);
81        Keyboard.Listen(Key.Pause, ButtonState.Pressed, luopinkkipilvi, null);
82
83        MessageDisplay.Position = new Vector(50,0);
84    }
85
86    private void tormaapilveen()
87    {
88        foreach (PhysicsObject pilvi in GetObjectsWithTag("pilvi"))
89            pilvi.Destroy();
90    }
91
92    void lisaapilvi()
93    {
94        PhysicsObject pilvi;
95        pilvi = new PhysicsObject(200, 100);
96        pilvi.Image = olionKuva2;
97        pilvi.Tag = "pilvi";
98        Add(pilvi);
99        pilvi.Y = luku;
100        pilvi.X = 500;
101        AddCollisionHandler(pilvi, "pinkkipilvi", CollisionHandler.DestroyObject);
102        pilvi.IgnoresCollisionResponse = true;
103        luku = RandomGen.NextInt(-265, 246);
104        Vector impulssi = new Vector(-500, 0);
105        pilvi.Hit(impulssi);
106        pistelaskuri.Value += 1;
107    }
108    void jatkuu()
109    {
110        pilviajastin = new Timer();
111        pilviajastin.Interval = 1;
112        pilviajastin.Timeout += lisaapilvi;
113        pilviajastin.Start();
114    }
115    void jatkuu2()
116    {
117        pinkkipilviajastin = new Timer();
118        pinkkipilviajastin.Interval = RandomGen.NextInt(1, 100); ;
119        pinkkipilviajastin.Timeout += luopinkkipilvi;
120
121        pinkkipilviajastin.Start();
122    }
123    void luopinkkipilvi()
124    {
125        pinkkipilviajastin.Interval = RandomGen.NextInt(1, 100);
126        PhysicsObject pinkkipilvi;
127        pinkkipilvi = new PhysicsObject(200, 100);
128        pinkkipilvi.Image = olionKuva3;
129        pinkkipilvi.Tag = "pinkkipilvi";
130        Add(pinkkipilvi);
131        pinkkipilvi.Y = luku;
132        pinkkipilvi.X = 500;
133        pinkkipilvi.IgnoresCollisionResponse = true;
134       
135        luku = RandomGen.NextInt(-265, 246);
136        Vector impulssi = new Vector(-500, 0);
137        pinkkipilvi.Hit(impulssi);
138    }
139    void pinkittormaavat(PhysicsObject tormaaja, PhysicsObject kohde)
140    {
141        pistelaskuri.Value += 20;
142        kohde.Destroy();
143    }
144    void pelaajattormaavat(PhysicsObject tormaaja, PhysicsObject kohde)
145    {
146        MediaPlayer.Stop();
147        IsPaused = true;
148    }
149    void Asetanopeus(PhysicsObject kissa, Vector nopeus)
150    {
151        if (nopeus.X > 0 && kissa.Right > Screen.Right)
152        {
153            kissa.Velocity = Vector.Zero;
154            return;
155        }
156        if (nopeus.X < 0 && kissa.Left < Screen.Left)
157        {
158            kissa.Velocity = Vector.Zero;
159            return;
160        }
161        kissa.Velocity = nopeus;
162    }
163
164    void luopistelaskuri()
165        {
166        pistelaskuri = new IntMeter(0);
167        Label pistenaytto = new Label();
168        pistenaytto.X = Screen.Left + 100;
169        pistenaytto.Y = Screen.Top - 100;
170        pistenaytto.TextColor = Color.Emerald;
171        pistenaytto.BindTo(pistelaskuri);
172        Add(pistenaytto);
173       
174        pistelaskuri.AddTrigger(40, TriggerDirection.Up, mini);
175        pistelaskuri.AddTrigger(60, TriggerDirection.Up, mini2);
176        pistelaskuri.AddTrigger(90, TriggerDirection.Up, mini3);
177        pistelaskuri.AddTrigger(1000, TriggerDirection.Up, mini4);
178    }
179    void restart()
180    {
181        IsPaused = false;
182        ClearAll();
183        Add(MessageDisplay);
184        Begin();
185    }
186    void ky()
187    {
188        pistelaskuri.Value += 10;
189    }
190    void kyk()
191    {
192        MessageDisplay.Clear();
193        MessageDisplay.Add("Miten sä tän Löysit?");
194       
195    }
196    void mini()
197    {
198        MessageDisplay.Clear();
199        MessageDisplay.Add("Mun keskipisteet");
200        MessageDisplay.MessageTime = new TimeSpan(0, 0, 7);
201        pilviajastin.Interval -= 0.075;
202
203    }
204    void mini2()
205    {
206        MessageDisplay.Clear();
207        MessageDisplay.Add("MINUUTTI!");
208        MessageDisplay.MessageTime = new TimeSpan(0, 0, 7);
209        pilviajastin.Interval -= 0.075;
210    }
211    void mini3()
212    {
213        MessageDisplay.Add("RIKOIT MUN ENKAN!");
214        MessageDisplay.MessageTime = new TimeSpan(0, 0, 7);
215        pilviajastin.Interval -= 0.075;
216    }
217    void mini4()
218    {
219        MessageDisplay.Add("legit?");
220        MessageDisplay.MessageTime = new TimeSpan(0, 0, 7);
221        pilviajastin.Interval -= 0.075;
222    }
223    void ma(Timer ajastin, double muutos)
224    {
225        if (ajastin.Interval + muutos < 0) return;
226        ajastin.Interval += muutos;
227    }
228}
Note: See TracBrowser for help on using the repository browser.