source: 2011/24/VilmaK/Magneetti/Magneetti/Magneetti/Peli.cs @ 2045

Revision 2045, 5.5 KB checked in by vievkang, 8 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 Peli : PhysicsGame
10{
11    PhysicsObject Magneetti;
12    PhysicsObject JattiMagneetti;
13    Image hahmo = LoadImage("örkki");
14    GameObject Risti;
15    Image liikuttaja = LoadImage("risti");
16    IntMeter pisteLaskuri;
17    Image lopputeksti = LoadImage("lopputeksti");
18
19
20
21    public override void Begin()
22    {
23        LuoRisti();
24        AsetaOhjaimet();
25        LuoKentta();
26        Level.CreateBorders();
27        LuoLaskuri();
28       
29        // TODO: Kirjoita ohjelmakoodisi tähän
30    }
31
32
33
34    void LuoKentta()
35    {
36        Level.BackgroundColor = Color.LimeGreen;
37        TileMap ruudut = TileMap.FromFile("kentta.txt");
38        ruudut.SetTileMethod('x', LuoPalikka);
39        ruudut.SetTileMethod('p', LuoPuu);
40        ruudut.SetTileMethod('o', LuoMaali);
41        ruudut.SetTileMethod('j', LuoJarvi);
42        ruudut.SetTileMethod('k', LuoKukka);
43        ruudut.SetTileMethod('$', LuoMagneetti);
44        ruudut.SetTileMethod('r', LuoRanta);
45        ruudut.SetTileMethod('M', LuoJattiMagneetti);
46        ruudut.Execute(50, 50);
47       
48    }
49
50   
51
52   
53
54    void LuoLaskuri()
55    {
56        pisteLaskuri = new IntMeter (0);
57        pisteLaskuri.MinValue = int.MinValue;
58        Label pisteNaytto = new Label();
59        pisteNaytto.X = Screen.Right - 100;
60        pisteNaytto.Y = Screen.Top - 100;
61        pisteNaytto.TextColor = Color.White;
62        pisteNaytto.BindTo(pisteLaskuri);
63        Add(pisteNaytto);
64    }
65
66    void KasitteleMagneetinTormays(PhysicsObject Magneetti, PhysicsObject kohde)
67    {
68        // Seinä
69        if (kohde.Tag.ToString() == "x")
70        {
71            pisteLaskuri.Value++;
72        }
73       
74        // Iso magneetti
75        if (kohde.Tag.ToString() == "M")
76        {
77            pisteLaskuri.Value += 100;
78        }
79
80        // Loppu eli maali
81        if (kohde.Tag.ToString() == "o")
82        {
83            GameObject loppu = new GameObject(226, 29);
84            loppu.Image = lopputeksti;
85           
86            Add(loppu);
87            Label loppupiste = new Label();
88            loppupiste.Y = -40;
89            loppupiste.BindTo(pisteLaskuri);
90            Add(loppupiste);
91        }
92
93      }
94
95    void LuoPalikka(Vector paikka, double leveys, double korkeus)
96    {
97        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
98        palikka.Position = paikka;
99        palikka.Tag = "x";
100        palikka.Color = Color.Orange;
101        Add(palikka);
102
103    }
104
105    void LuoPuu(Vector paikka, double leveys, double korkeus)
106    {
107        GameObject puu =  new GameObject(leveys, korkeus);
108        puu.Image = LoadImage("puu");
109        puu.Position = paikka;
110
111        Add(puu);
112    }
113
114    void LuoMaali( Vector paikka, double leveys, double korkeus)
115    {
116       PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
117        maali.Image = LoadImage("maali");
118        maali.Position = paikka;
119        maali.Tag = "o";
120        Add(maali);
121    }
122
123    void LuoJarvi(Vector paikka, double leveys, double korkeus)
124    {
125        GameObject jarvi = new GameObject(leveys*8, korkeus);
126        jarvi.Image = LoadImage ("järvi");
127        jarvi.Position = new Vector(paikka.X + jarvi.Width /2 - leveys/2, paikka.Y);
128        Add (jarvi);
129    }
130
131    void LuoKukka( Vector paikka, double leveys, double korkeus)
132    {
133        GameObject kukka = new GameObject (leveys, korkeus);
134        kukka.Image = LoadImage("kukka");
135        kukka.Position = paikka;
136        Add(kukka);
137    }
138
139    void LuoMagneetti (Vector paikka, double leveys, double korkeus)
140    {
141        Magneetti = new PhysicsObject(25, 25);
142        Magneetti.Shape = Shape.Circle;
143        Magneetti.Position = paikka;
144        Magneetti.Image = hahmo;
145        Magneetti.CanRotate = false;
146        Magneetti.Restitution = 0.25;
147        AddCollisionHandler(Magneetti, KasitteleMagneetinTormays);
148
149        Add(Magneetti);
150
151    }
152
153    void LuoRanta( Vector paikka, double leveys, double korkeus)
154    {
155        GameObject Ranta = new GameObject(3*leveys, korkeus);
156        Ranta.Image = LoadImage("beach");
157        Ranta.Position = new Vector(paikka.X + Ranta.Width /1.5 - leveys/2, paikka.Y);
158        Add(Ranta);
159
160    }
161
162
163    void LuoJattiMagneetti(Vector paikka, double leveys, double korkeus)
164    {
165      JattiMagneetti = PhysicsObject.CreateStaticObject (50, 50);     
166      JattiMagneetti.Image = LoadImage ( "jättimagneetti");
167      JattiMagneetti.Position = paikka;
168      JattiMagneetti.Tag = "M";
169      Add (JattiMagneetti);
170     
171    }
172
173    void LuoRisti()
174    {
175        Risti = new GameObject(200, 200);
176        Risti.Shape = Shape.Circle;
177        Risti.Image = liikuttaja;
178        Add(Risti, 1);
179
180    }
181    void AsetaOhjaimet()
182    {
183        Mouse.IsCursorVisible = false;
184        Mouse.ListenMovement(0.1, KuunteleLiiketta, null);
185
186    }
187    void KuunteleLiiketta(AnalogState hiirentila)
188    {
189        Risti.X = Mouse.PositionOnWorld.X;
190        Risti.Y = Mouse.PositionOnWorld.Y;
191    }
192
193    protected override void Update(Time time)
194    {
195        Vector v = Magneetti.Position - Risti.Position;
196        // MessageDisplay.Add(v.X + " " + v.Y);
197        Magneetti.Push(1500/v.Magnitude * v.Normalize());
198
199        Vector z = JattiMagneetti.Position - Magneetti.Position;
200        Magneetti.Push (1550 / z.Magnitude * z.Normalize());
201
202        base.Update(time);
203    }
204}
Note: See TracBrowser for help on using the repository browser.