source: 2013/24/JuhoR/FysiikkaPeli3/FysiikkaPeli3/FysiikkaPeli3/FysiikkaPeli3.cs @ 4093

Revision 4093, 5.3 KB checked in by juelreim, 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 FysiikkaPeli3 : PhysicsGame
10{
11    int kenttanro = 1;
12
13    PhysicsObject pelaaja;
14    Image pelaajankuva = LoadImage("pelaaja");
15    Image vihunkuva = LoadImage("vihulainen");
16
17    void LuoKentta()
18    {
19        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kenttä4");
20
21        ruudut.SetTileMethod(Color.FromHexCode("4CFF00"), LuoPelaaja);
22        ruudut.SetTileMethod(Color.Black, LuoTaso);
23        ruudut.SetTileMethod(Color.FromHexCode("FFD800"), LuoTahti);
24        ruudut.SetTileMethod(Color.FromHexCode("FF0000"), LuoVihollinen);
25
26        ruudut.Execute(20, 20);
27    }
28
29    public override void Begin()
30    {
31        LuoKentta();
32        TeeKontrollit();
33
34        Level.BackgroundColor = Color.DarkBrown;
35        Level.CreateBorders(false);
36    }
37
38    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
39    {
40        pelaaja = new PhysicsObject(25, 25);
41        pelaaja.Shape = Shape.Circle;
42        pelaaja.Restitution = 0.0;
43        pelaaja.Image = pelaajankuva;
44        pelaaja.Tag = "pelaaja";
45        pelaaja.Position = paikka;
46        pelaaja.Destroyed += peliloppuu;
47        pelaaja.LinearDamping = 0.9;
48
49        Camera.Follow(pelaaja);
50        Camera.Zoom(1.0);
51
52        Add(pelaaja);
53    }
54
55    void peliloppuu()
56    {
57        MessageWindow window = new MessageWindow ("Karhu söi sinut...");
58        window.Closed += Restart;
59        Add(window);
60    }
61
62    void Restart(Window restart)
63    {
64        ClearAll();
65        LuoKentta();
66        TeeKontrollit();
67    }
68
69    void LuoVihollinen(Vector paikka, double leveys, double korkeus)
70    {
71        PhysicsObject vihu = new PhysicsObject(20, 20);
72       
73
74
75        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
76        vihu.Brain = seuraajanAivot;
77        seuraajanAivot.Speed = 80;
78        vihu.LifetimeLeft = TimeSpan.FromSeconds(300.0);
79        vihu.Position = paikka;
80        vihu.Image = vihunkuva;
81        AddCollisionHandler(vihu, "pelaaja", VihollinenOsuuPelaajaan);
82        Add(vihu);
83    }
84
85
86    void VihollinenOsuuPelaajaan(PhysicsObject vihu, PhysicsObject pelaaja)
87    {
88        pelaaja.Destroy();
89
90    }
91
92    void LuoTaso(Vector paikka, double leveys, double korkeus)
93    {
94        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
95        taso.Position = paikka;
96        taso.Color = Color.Black;
97        taso.CollisionIgnoreGroup = 1;
98        Add(taso);
99    }
100
101    void LuoTahti(Vector paikka, double leveys, double korkeus)
102    {
103        PhysicsObject tahti = new PhysicsObject(20, 20);
104        tahti.IgnoresCollisionResponse = true;
105        tahti.Position = paikka;
106        tahti.Color = Color.Yellow;
107        AddCollisionHandler(tahti, "pelaaja", Maali);
108        tahti.Tag = "tahti";
109        Add(tahti, 1);
110    }
111
112    void Maali(PhysicsObject pelaaja, PhysicsObject tahti)
113    {
114        Window ikkuna = new Window();
115        Add(ikkuna);
116        ikkuna.Closed += uusikenttä;
117
118        Label tarina = new Label("pääsi siis karhuja pakoon...");
119        tarina.Width = 300;
120        tarina.SizeMode = TextSizeMode.Wrapped;
121        ikkuna.Add(tarina);
122        kenttanro++;
123        Seuraavakenttä();
124    }
125
126    void uusikenttä(Window ikkuna)
127    {
128        Seuraavakenttä();
129    }
130
131    void TeeKontrollit()
132    {
133        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
134        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
135        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
136
137
138        Keyboard.Listen(Key.Left, ButtonState.Down,
139           LiikutaPelaajaa, null, new Vector(-450, 0));
140        Keyboard.Listen(Key.Right, ButtonState.Down,
141          LiikutaPelaajaa, null, new Vector(450, 0));
142        Keyboard.Listen(Key.Up, ButtonState.Down,
143          LiikutaPelaajaa, null, new Vector(0, 450));
144        Keyboard.Listen(Key.Down, ButtonState.Down,
145          LiikutaPelaajaa, null, new Vector(0, -450));
146       
147    }
148    void LiikutaPelaajaa(Vector vektori)
149    {
150        pelaaja.Push(vektori);
151    }
152
153    void Seuraavakenttä()
154    {
155        ClearAll();
156
157        if (kenttanro == 1) LuoKentta();
158        else if (kenttanro == 2) LuoKentta2();
159        else if (kenttanro == 3) LuoKentta3();
160
161        TeeKontrollit();
162    }
163
164    void LuoKentta2()
165    {
166        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kenttä3");
167
168        ruudut.SetTileMethod(Color.FromHexCode("4CFF00"), LuoPelaaja);
169        ruudut.SetTileMethod(Color.Black, LuoTaso);
170        ruudut.SetTileMethod(Color.FromHexCode("FFD800"), LuoTahti);
171        ruudut.SetTileMethod(Color.FromHexCode("FF0000"), LuoVihollinen);
172
173        ruudut.Execute(20, 20);
174    }
175
176    void LuoKentta3()
177    {
178        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kenttä4");
179
180        ruudut.SetTileMethod(Color.FromHexCode("4CFF00"), LuoPelaaja);
181        ruudut.SetTileMethod(Color.Black, LuoTaso);
182        ruudut.SetTileMethod(Color.FromHexCode("FFD800"), LuoTahti);
183        ruudut.SetTileMethod(Color.FromHexCode("FF0000"), LuoVihollinen);
184
185        ruudut.Execute(20, 20);
186    }
187
188
189}
Note: See TracBrowser for help on using the repository browser.