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

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