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

Revision 4087, 4.4 KB checked in by juelreim, 8 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
49        Add(pelaaja);
50    }
51
52    void peliloppuu()
53    {
54        MessageWindow window = new MessageWindow ("Karhu söi sinut...");
55        Add(window);
56    }
57    void LuoVihollinen(Vector paikka, double leveys, double korkeus)
58    {
59        PhysicsObject vihu = new PhysicsObject(20, 20);
60       
61
62
63        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
64        vihu.Brain = seuraajanAivot;
65        seuraajanAivot.Speed = 80;
66        vihu.LifetimeLeft = TimeSpan.FromSeconds(300.0);
67        vihu.Position = paikka;
68        vihu.Image = vihunkuva;
69        AddCollisionHandler(vihu, "pelaaja", VihollinenOsuuPelaajaan);
70        Add(vihu);
71    }
72
73
74    void VihollinenOsuuPelaajaan(PhysicsObject vihu, PhysicsObject pelaaja)
75    {
76        pelaaja.Destroy();
77
78    }
79
80    void LuoTaso(Vector paikka, double leveys, double korkeus)
81    {
82        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
83        taso.Position = paikka;
84        taso.Color = Color.Black;
85        taso.CollisionIgnoreGroup = 1;
86        Add(taso);
87    }
88
89    void LuoTahti(Vector paikka, double leveys, double korkeus)
90    {
91        PhysicsObject tahti = new PhysicsObject(20, 20);
92        tahti.IgnoresCollisionResponse = true;
93        tahti.Position = paikka;
94        tahti.Color = Color.Yellow;
95        AddCollisionHandler(tahti, "pelaaja", Maali);
96        tahti.Tag = "tahti";
97        Add(tahti, 1);
98    }
99
100    void Maali(PhysicsObject pelaaja, PhysicsObject tahti)
101    {
102        Window ikkuna = new Window();
103        Add(ikkuna);
104        ikkuna.Closed += uusikenttä;
105
106        Label tarina = new Label("pääsi siis karhuja pakoon...");
107        tarina.Width = 300;
108        tarina.SizeMode = TextSizeMode.Wrapped;
109        ikkuna.Add(tarina);
110    }
111
112    void uusikenttä(Window ikkuna)
113    {
114        Seuraavakenttä();
115    }
116
117    void TeeKontrollit()
118    {
119        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
120        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
121        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
122
123
124        Keyboard.Listen(Key.Left, ButtonState.Down,
125           LiikutaPelaajaa, null, new Vector(-40, 0));
126        Keyboard.Listen(Key.Right, ButtonState.Down,
127          LiikutaPelaajaa, null, new Vector(40, 0));
128        Keyboard.Listen(Key.Up, ButtonState.Down,
129          LiikutaPelaajaa, null, new Vector(0, 40));
130        Keyboard.Listen(Key.Down, ButtonState.Down,
131          LiikutaPelaajaa, null, new Vector(0, -40));
132       
133    }
134    void LiikutaPelaajaa(Vector vektori)
135    {
136        pelaaja.Push(vektori);
137    }
138
139    void Seuraavakenttä()
140    {
141        ClearAll();
142        TeeKontrollit();
143    }
144
145    void LuoKentta2()
146    {
147        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kenttä3");
148
149        ruudut.SetTileMethod(Color.FromHexCode("4CFF00"), LuoPelaaja);
150        ruudut.SetTileMethod(Color.Black, LuoTaso);
151        ruudut.SetTileMethod(Color.FromHexCode("FFD800"), LuoTahti);
152        ruudut.SetTileMethod(Color.FromHexCode("FF0000"), LuoVihollinen);
153
154        ruudut.Execute(20, 20);
155    }
156
157}
Note: See TracBrowser for help on using the repository browser.