source: 2014/27/NoelV/turhakepeli/turhakepeli/turhakepeli/turhakepeli.cs @ 5253

Revision 5253, 6.4 KB checked in by novaanan, 7 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 turhakepeli : PhysicsGame
10{
11    PhysicsObject pelaaja;
12    Image hahmo = LoadImage("pelaaja");
13    Image valikonKuva = LoadImage("valikko");
14    Image hyokkauksenKuva = LoadImage("hyokkaus");
15    private Image[] hahmonLiike = LoadImages("hahmo01", "hahmo02");
16    Image taustaKuva = LoadImage("maa");
17     
18
19    public override void Begin()
20    {
21
22        Level.Background.Image = taustaKuva;
23        Level.Background.TileToLevel();
24
25
26
27        GameObject taustaPilvet = new GameObject(10000, 10000);
28        taustaPilvet.Image = taustaKuva;
29        Add(taustaPilvet, -3);
30        //Layers[-3].RelativeTransition = new Vector(0.5, 0.5);
31
32     
33
34        SmoothTextures = false;
35        Level.Background.Color = Color.Brown;
36
37        //hahmonLiike = LoadAnimation("hahmo");
38
39        LuoKentta();
40       
41        LisaaOhjaimet();
42
43     
44       
45
46
47        Camera.Zoom(4);
48        Camera.FollowedObject = pelaaja;
49
50        //PhysicsObject turhake = new PhysicsObject(10, 10);
51       // Add(turhake);
52
53
54       
55    }
56
57
58    void LisaaOhjaimet()
59    {
60        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
61
62
63        Keyboard.Listen(Key.S, ButtonState.Down, Animaatio, null);
64
65        Keyboard.Listen(Key.W, ButtonState.Down, Liiku, null, new Vector(0, 1000));
66        Keyboard.Listen(Key.W, ButtonState.Released, Liiku, null, Vector.Zero);
67        Keyboard.Listen(Key.S, ButtonState.Down, Liiku, null, new Vector(0, -1000));
68        Keyboard.Listen(Key.S, ButtonState.Released, Liiku, null, Vector.Zero);
69        Keyboard.Listen(Key.D, ButtonState.Down, Liiku, null, new Vector(1000, 0));
70        Keyboard.Listen(Key.D, ButtonState.Released, Liiku, null, Vector.Zero);
71        Keyboard.Listen(Key.A, ButtonState.Down, Liiku, null, new Vector(-1000, 0));
72        Keyboard.Listen(Key.A, ButtonState.Released, Liiku, null, Vector.Zero);
73        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyokkaa, null);
74
75        Keyboard.Listen(Key.Escape, ButtonState.Pressed, KysyPoistumista, "Lopeta peli");
76    }
77           
78
79    void Liiku(Vector vektori)
80    {
81        if (vektori == Vector.Zero)
82        {
83            int apu = 0;
84            int kierrokset = 4;
85            Timer pelaajanPysayttaja = new Timer();
86            pelaajanPysayttaja.Interval = 0.1;
87            pelaajanPysayttaja.Timeout += delegate 
88                {
89                    apu++;
90                    pelaaja.Velocity = pelaaja.Velocity / 2;
91                    if (apu == kierrokset) pelaaja.Velocity = Vector.Zero;
92                };
93            pelaajanPysayttaja.Start(kierrokset);
94           
95        }
96        else pelaaja.Push(vektori);
97    }
98    void KysyPoistumista()
99    {
100        IsPaused = true;
101        MultiSelectWindow valikko = new MultiSelectWindow("menu", "back to game", "quit game");
102        valikko.AddItemHandler(1, Exit);
103        valikko.AddItemHandler(0, delegate { IsPaused = false; });
104        valikko.Color = Color.Black;
105        valikko.Color = Color.Transparent;
106        valikko.SelectionColor = Color.Black;
107        valikko.Image = valikonKuva;
108        Add(valikko);
109    }
110   
111
112    void LuoKentta()
113    {
114        Image taustaKuva = LoadImage("kuvanNimi");
115        Level.Background.TileToLevel();
116
117        //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä.
118        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta");
119
120        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa.
121        ruudut.SetTileMethod(Color.Blue, LuoPelaaja);
122        ruudut.SetTileMethod(Color.Black, LuoSeina);
123        ruudut.SetTileMethod(Color.Red, LuoNurkka);
124
125        //3. Execute luo kentän
126        //   Parametreina leveys ja korkeus
127        ruudut.Execute(20, 20);
128
129
130       
131
132        Timer vihunLuontiAjastin = new Timer();
133        vihunLuontiAjastin.Interval = 10.0;
134        vihunLuontiAjastin.Timeout += delegate { LuoVihollinen(new Vector(RandomGen.NextDouble(Level.Left, Level.Right), Level.Top)); };
135        vihunLuontiAjastin.Start();
136
137    }
138    void LuoNurkka(Vector paikka, double leveys, double korkeus)
139    {
140        PhysicsObject nurkka = PhysicsObject.CreateStaticObject(leveys, korkeus);
141        nurkka.Position = paikka;
142        nurkka.CollisionIgnoreGroup = 1;
143        Add(nurkka);
144
145
146    }
147
148
149    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
150    {
151        pelaaja = new PhysicsObject(leveys, korkeus);
152        pelaaja.Image = hahmo;
153        pelaaja.Position = paikka;
154        pelaaja.CanRotate = false;
155        pelaaja.Restitution = 0;
156        pelaaja.MaxVelocity = 300;
157        Add(pelaaja);
158     
159    }
160
161
162    void LuoSeina(Vector paikka, double leveys, double korkeus)
163    {
164        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
165        taso.Position = paikka;
166        taso.CollisionIgnoreGroup = 1;
167        Add(taso);
168    }
169
170
171    private void LuoVihollinen(Vector vektori)
172    {
173        PhysicsObject vihollinen = new PhysicsObject(20, 20);
174       
175       
176
177        Add(vihollinen);
178        vihollinen.Restitution = 1.5;
179        vihollinen.Tag = "vihu";
180
181        //vihollinen.MoveTo(new Vector(RandomGen.NextDouble(Level.Left, Level.Right), Level.Bottom - 250), 500); //{ vihollisLaskuri.Value++; });
182        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
183        seuraajanAivot.Speed = 500.0;
184        seuraajanAivot.DistanceClose = 200;
185        seuraajanAivot.TargetClose += delegate
186        {
187            seuraajanAivot.Active = true;
188            vihollinen.Hit(new Vector(0, -5000));
189
190        };
191
192        vihollinen.Brain = seuraajanAivot;
193
194    }
195    void Hyokkaa()
196    {
197        PhysicsObject hyokkaus = new PhysicsObject(30, 30);
198        hyokkaus.Position = pelaaja.Position;
199        hyokkaus.Image = hyokkauksenKuva;
200        Add(hyokkaus);
201        AxleJoint liitos = new AxleJoint(pelaaja, hyokkaus);
202        Add(liitos);
203
204
205        Timer.SingleShot(0.5, delegate { hyokkaus.Destroy(); });
206        //AddCollisionHandler(hyokkaus, "vihu", );
207
208    }
209
210    void Animaatio()
211    {
212
213        pelaaja.Animation = new Animation(hahmonLiike);
214        pelaaja.Animation.FPS = 5;
215        pelaaja.Animation.Start();
216    }
217   
218
219}
Note: See TracBrowser for help on using the repository browser.