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

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