source: 2013/27/LeoL/Hounted Hause/Hounted Hause/Hounted Hause/Hounted_Hause.cs @ 4397

Revision 4397, 5.9 KB checked in by leoliukk, 7 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Hounted_Hause : PhysicsGame
10{
11    Image PelaajaKuva = LoadImage("Char");
12    Image avainKuva = LoadImage("Avain");
13    Image örkkiKuva = LoadImage("Ghost");
14
15    PhysicsObject pelaaja;
16
17    //Pelin alussa ollaan kentässä 1
18    int kenttaNro = 1;
19
20
21
22    Vector ylos = new Vector(0, 100);
23    Vector alas = new Vector(0, -100);
24    Vector vasen = new Vector(-100, 0);
25    Vector oikea = new Vector(100, 0);
26
27    public override void Begin()
28    {
29        SeuraavaKentta();
30
31       
32    }
33    void SeuraavaKentta()
34    {
35        ClearAll();
36
37        if (kenttaNro == 1) LuoKentta("kentta1");
38        else if (kenttaNro == 2) LuoKentta("kentta2");
39        else if (kenttaNro == 3) LuoKentta("kentta3");
40        else if (kenttaNro == 4) LuoKentta("kentta4");
41        else if (kenttaNro > 4) Exit();
42        MediaPlayer.Play("taustamusiikki");
43
44        Camera.Follow(pelaaja);
45        Camera.ZoomFactor = 9.0;
46        Camera.StayInLevel = true;
47
48        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-100, 0), pelaaja);
49        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, LiikutaPelaajaa, null, new Vector(100, 0), pelaaja);
50        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 100), pelaaja);
51        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -100), pelaaja);
52
53        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
54        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
55    }
56    void LiikutaPelaajaa(Vector vektori, PhysicsObject pelaaja)
57    {
58        pelaaja.Velocity = vektori;
59
60    }
61
62    void LuoKentta(string kentat)
63    {
64        //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä.
65        ColorTileMap ruudut = ColorTileMap.FromLevelAsset(kentat);
66
67        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa.
68        ruudut.SetTileMethod("FFD800", LuoPelaaja);
69        ruudut.SetTileMethod(Color.Black, LuoTaso);
70        ruudut.SetTileMethod("FF0000", LuoAvain);
71        ruudut.SetTileMethod("B6FF00", LuoÖrkki);
72
73        //3. Execute luo kentän
74        //   Parametreina leveys ja korkeus
75        ruudut.Execute(40, 40);
76    }
77
78    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
79    {
80        pelaaja = new PhysicsObject(39, 39);
81        pelaaja.Shape = Shape.Circle;
82        pelaaja.Image = PelaajaKuva;
83        pelaaja.CanRotate = false;
84        pelaaja.Position = paikka;
85        pelaaja.Restitution = 0.0;
86        pelaaja.Tag = "pelaaja";
87        pelaaja.KineticFriction = 0.0;
88        AddCollisionHandler(pelaaja, "avain", TormaaAvaimeen);
89        Add(pelaaja);
90    }
91
92    void LuoÖrkki(Vector paikka, double leveys, double korkeus)
93    {
94        PhysicsObject orkki = new PhysicsObject(30,30);
95        orkki.Shape = Shape.Rectangle;
96        orkki.Image = örkkiKuva;
97        orkki.CanRotate = false;
98        orkki.Position = paikka;
99        orkki.Restitution = 0.0;
100        orkki.KineticFriction = 0.0;
101        //orkki.CollisionIgnoreGroup = 1;
102        orkki.IgnoresCollisionResponse = true;
103         //AddCollisionHandler(orkki, "pelaaja", Tormaaorkkiin);
104        AddCollisionHandler(orkki, "taso", TormaaSeinaan);
105        Add(orkki);
106        //SatunnainenSuunta(orkki);
107
108        FollowerBrain aivot = new FollowerBrain( "pelaaja" );
109        orkki.Brain = aivot;
110        aivot.Speed = 50.50;
111    }
112
113    void SatunnainenSuunta(PhysicsObject orkki)
114    {
115        Vector nopeus = orkki.Velocity;
116
117        if (orkki.Velocity.X >= 0)
118        {
119            orkki.X -= 2;
120            nopeus = RandomGen.SelectOne(ylos, alas, vasen);
121        }
122        else if (orkki.Velocity.X < 0)
123        {
124            orkki.X += 2;
125            nopeus = RandomGen.SelectOne(ylos, alas, oikea);
126        }
127        //        orkki.Velocity = RandomGen.SelectOne(ylos, alas, vasen, oikea);
128        else if (orkki.Velocity.Y >= 0)
129        {
130            orkki.Y -= 2;
131            nopeus = RandomGen.SelectOne(alas, oikea, vasen);
132        }
133        else if (orkki.Velocity.Y < 0)
134        {
135            orkki.Y += 2;
136            nopeus = RandomGen.SelectOne(ylos, oikea, vasen);
137        }
138        orkki.Stop();
139        orkki.Acceleration = Vector.Zero;
140        orkki.Velocity = nopeus;
141       
142
143    }
144
145    void TormaaSeinaan(PhysicsObject orkki, PhysicsObject taso)
146    {
147        SatunnainenSuunta(orkki);
148    }
149
150    void TormaaAvaimeen(PhysicsObject pelaaja, PhysicsObject avain)
151    {
152        avain.Destroy();
153
154    }
155
156    void LuoTaso(Vector paikka, double leveys, double korkeus)
157    {
158        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
159        taso.Position = paikka;
160        Level.BackgroundColor = Color.Black;
161        taso.Color = new Color(15,3,11);
162        taso.CollisionIgnoreGroup = 1;
163        taso.Restitution = 0.0;
164        taso.Tag = "taso";
165        Add(taso);
166    }
167    void LuoAvain(Vector paikka, double leveys, double korkeus)
168    {
169        PhysicsObject tahti = new PhysicsObject(leveys, korkeus);
170        tahti.IgnoresCollisionResponse = true;
171        tahti.Position = paikka;
172        tahti.Image = avainKuva;
173        tahti.Tag = "avain";
174        Add(tahti, 1);
175    }
176
177    IntMeter pisteLaskuri;
178
179    void LuoPistelaskuri()
180    {
181        pisteLaskuri = new IntMeter(0);
182
183        Label pisteNaytto = new Label();
184        pisteNaytto.X = Screen.Left + 100;
185        pisteNaytto.Y = Screen.Top - 100;
186        pisteNaytto.TextColor = Color.Red;
187        pisteNaytto.Color = Color.Black;
188
189        pisteNaytto.BindTo(pisteLaskuri);
190        Add(pisteNaytto);
191    }
192
193}
Note: See TracBrowser for help on using the repository browser.