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

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