source: 2012/30/JyriP/X/X/X/X.cs @ 3789

Revision 3789, 10.1 KB checked in by anlakane, 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 X : PhysicsGame
10{
11    PlatformCharacter player;
12    PhysicsObject window;
13    PhysicsObject house;
14    PhysicsObject goal;
15    PhysicsObject border;
16    PhysicsObject floatingBridge;
17    PhysicsObject DropHouse;
18    GameObject qwe;
19
20    int mapNum = 1;
21
22    //Animaatiot
23    Image[] playerImg = Game.LoadImages("imgs/player/player", "imgs/player/player2", "imgs/player/player3");
24    Image[] jumpAni = Game.LoadImages("imgs/player/playerJump", "imgs/player/playerJump2", "imgs/player/playerJump3");
25    Image[] breakWindow = Game.LoadImages("imgs/animations/window/break", "imgs/animations/window/break2", "imgs/animations/window/break3", "imgs/animations/window/break4");
26
27    public override void Begin()
28    {
29        // TODO: Kirjoita ohjelmakoodisi tähän
30        //Kopioi tämä NextMap();
31        MainMenu();
32        IsMouseVisible = true;
33        IsFullScreen = true;
34    }
35
36    void MainMenu()
37    {
38        mapNum = 1;
39        ClearAll();
40        MediaPlayer.Play("musics/theme");
41        MultiSelectWindow mainMenu = new MultiSelectWindow("X", "Play", "Exit");
42        mainMenu.AddItemHandler(0, MapMenu);
43        mainMenu.AddItemHandler(1, ExitGame);
44        Add(mainMenu);
45    }
46
47    void MapMenu()
48    {
49        MultiSelectWindow MapList = new MultiSelectWindow("X Maps", "Hello World", "Run!", "QWE");
50        MapList.AddItemHandler(0, NextMap);
51        MapList.AddItemHandler(1, map2);
52        MapList.AddItemHandler(2, map3);
53        Add(MapList);
54    }
55
56    void map2()
57    {
58        mapNum = 2;
59        NextMap();
60    }
61
62    void map3()
63    {
64        MediaPlayer.Stop();
65        mapNum = 3;
66        NextMap();
67    }
68
69
70    void NextMap()
71    {
72        ClearAll();
73
74        Gravity = new Vector(0.0, -800.0);
75        if (mapNum == 1) CreateMap("maps/map1");
76        else if (mapNum == 2)
77        {
78            CreateMap("maps/map2");
79            MediaPlayer.Play("musics/music2");
80        }
81        else if (mapNum == 3)
82        {
83            MediaPlayer.Play("musics/theme");
84            CreateMap("maps/map3");
85        }
86        else if (mapNum == 4) MainMenu();
87
88        Level.Background.FitToLevel();
89
90        Image[] tausta = Game.LoadImages("imgs/animations/bg/pu", "imgs/animations/bg/ke", "imgs/animations/bg/mupu", "imgs/animations/bg/va", "imgs/animations/bg/mu", "imgs/animations/bg/muva", "imgs/animations/bg/vi");
91        Animation taustaAni = new Animation(tausta);
92        taustaAni.FPS = 10;
93        taustaAni.Start();
94
95        Camera.ZoomFactor = 0.99;
96
97        qwe = new GameObject(Screen.Width, Screen.Height);
98        qwe.X = Level.Left;
99        qwe.Animation = taustaAni;
100        Add(qwe, -2);
101
102       
103    }
104
105    void CreateMap(string fileName)
106    {
107        ColorTileMap tile = ColorTileMap.FromLevelAsset(fileName);
108       
109        tile.SetTileMethod(Color.FromHexCode("00ff00"), CreatePlayer);
110       
111        tile.SetTileMethod(Color.Black, CreateHouse);
112        tile.SetTileMethod(Color.DarkGray, CreateRoof);
113        tile.SetTileMethod(Color.White, CreateWindow);
114        tile.SetTileMethod(Color.Yellow, CreateGoal);
115        tile.SetTileMethod(Color.FromHexCode("ff0000"), CreateBorder);
116        tile.SetTileMethod(Color.FromHexCode("a4a4a4"), CreateFloor);
117        tile.SetTileMethod(Color.FromHexCode("9f9f9f"), CreateHouseDrop);
118        tile.SetTileMethod(Color.FromHexCode("822b00"), CreateFloatingBridge);
119        tile.SetTileMethod(Color.FromHexCode("cccccc"), CreateBgWall);
120
121        tile.Execute(32, 32);
122    }
123
124
125    void CreatePlayer(Vector pos, double width, double height)
126    {
127        player = new PlatformCharacter(21, 45);
128        player.Position = pos;
129        player.Animation = new Animation(playerImg);
130        player.Animation.FPS = 5;
131        player.Animation.Start();
132        Camera.FollowX(player);
133
134        AddCollisionHandler<PlatformCharacter, PhysicsObject>(player, "break", onHitWindow);
135        AddCollisionHandler<PlatformCharacter, PhysicsObject>(player, "drop", onHitFloatingBridge);
136        AddCollisionHandler<PlatformCharacter, PhysicsObject>(player, "dropHouse", onHitDropHouse);
137        AddCollisionHandler<PlatformCharacter, PhysicsObject>(player, "die", onHitHouse);
138        AddCollisionHandler<PlatformCharacter, PhysicsObject>(player, "border", onHitHouse);
139        AddCollisionHandler<PlatformCharacter, PhysicsObject>(player, "goal", onHitGoal);
140
141        Keyboard.Listen(Key.Space, ButtonState.Pressed, Jump, "", player, 650.0);
142        Keyboard.Listen(Key.LeftControl, ButtonState.Pressed, Jump, "", player, 800.0);
143        Keyboard.Listen(Key.R, ButtonState.Pressed, NextMap, "");
144        Keyboard.Listen(Key.Escape, ButtonState.Pressed, MainMenu, "");
145
146
147        ControllerOne.Listen(Button.A, ButtonState.Pressed, Jump, "", player, 650.0);
148        ControllerOne.Listen(Button.B, ButtonState.Pressed, Jump, "", player, 800.0);
149        ControllerOne.Listen(Button.X, ButtonState.Pressed, Jump, "", player, 800.0);
150        ControllerOne.Listen(Button.RightShoulder, ButtonState.Pressed, NextMap, "");
151        ControllerOne.Listen(Button.Back, ButtonState.Pressed, MainMenu, "");
152        ControllerOne.Listen(Button.Start, ButtonState.Pressed, MainMenu, "");
153        Add(player, 2);
154    }
155
156    void onHitWindow(PlatformCharacter player, PhysicsObject window)
157    {
158        window.IgnoresGravity = false;
159        Timer.SingleShot(1.0, delegate { window.Destroy(); });
160
161    }
162
163    void onHitFloatingBridge(PlatformCharacter player, PhysicsObject floatingBridge)
164    {
165        floatingBridge.IgnoresGravity = false;
166        Timer.SingleShot(1.0, delegate { floatingBridge.Destroy(); });
167
168    }
169
170    void onHitDropHouse(PlatformCharacter player, PhysicsObject floatingBridge)
171    {
172        DropHouse.IgnoresGravity = false;
173        Timer.SingleShot(3.0, delegate { DropHouse.Destroy(); });
174
175    }
176
177    void onHitHouse(PlatformCharacter player, PhysicsObject house)
178    {
179        player.Destroy();
180        NextMap();
181
182    }
183
184    void onHitGoal(PlatformCharacter player, PhysicsObject house)
185    {
186        mapNum++;
187        NextMap();
188    }
189
190    void Jump(PlatformCharacter player, double jump)
191    {
192        ControllerOne.Vibrate(0.1, 0.1, 1, 1, 0.5);
193        Phone.Vibrate(100);
194        player.Jump(jump);
195    }
196
197    protected override void Update(Time time)
198    {
199        if (player != null)
200        {
201            qwe.X = player.X;
202            player.Walk(150);
203        }
204        base.Update(time);
205    }
206
207   
208
209    void CreateHouse(Vector pos, double width, double height)
210    {
211        house = PhysicsObject.CreateStaticObject(width, height);
212        Image houseImg = Game.LoadImage("imgs/housePart");
213        house.Position = pos;
214        house.Image = houseImg;
215        house.CollisionIgnoreGroup = 1;
216        house.Tag = "die";
217        Add(house);
218    }
219
220    void CreateHouseDrop(Vector pos, double width, double height)
221    {
222        DropHouse = PhysicsObject.CreateStaticObject(width, height);
223        Image DropHouseImg = Game.LoadImage("imgs/housePart");
224        DropHouse.Position = pos;
225        DropHouse.Image = DropHouseImg;
226        DropHouse.CollisionIgnoreGroup = 1;
227        DropHouse.IgnoresGravity = true;
228        DropHouse.Mass = 50;
229        DropHouse.CanRotate = false;
230        DropHouse.Tag = "dropHouse";
231        Add(DropHouse);
232    }
233
234    void CreateRoof(Vector pos, double width, double height)
235    {
236        PhysicsObject roof = PhysicsObject.CreateStaticObject(width, height);
237        Image roofImg = Game.LoadImage("imgs/roof");
238        roof.Position = pos;
239        roof.Image = roofImg;
240        roof.CollisionIgnoreGroup = 1;
241        Add(roof);
242    }
243
244    void CreateWindow(Vector pos, double width, double height)
245    {
246        window = new PhysicsObject(24, height);
247        Image windowImg = Game.LoadImage("imgs/window");
248        window.IgnoresGravity = true;
249        window.Position = pos;
250        window.Image = windowImg;
251        window.CollisionIgnoreGroup = 1;
252        window.Mass = 5;
253        window.Tag = "break";
254        Add(window, 1);
255    }
256
257    void CreateFloatingBridge(Vector pos, double width, double height)
258    {
259        floatingBridge = new PhysicsObject(width, height);
260        Image floatingBridgeImg = Game.LoadImage("imgs/floor");
261        floatingBridge.IgnoresGravity = true;
262        floatingBridge.Position = pos;
263        floatingBridge.Image = floatingBridgeImg;
264        floatingBridge.CollisionIgnoreGroup = 1;
265        floatingBridge.Mass = 5;
266        floatingBridge.Tag = "drop";
267        Add(floatingBridge, 1);
268    }
269
270
271
272    void CreateFloor(Vector pos, double width, double height)
273    {
274        PhysicsObject floor = PhysicsObject.CreateStaticObject(width, height);
275        Image floorImg = Game.LoadImage("imgs/floor");
276        floor.Position = pos;
277        floor.Image = floorImg;
278        floor.CollisionIgnoreGroup = 1;
279        Add(floor);
280    }
281
282    void CreateBorder(Vector pos, double width, double height)
283    {
284        border = PhysicsObject.CreateStaticObject(16, height);
285        Image borderImg = Game.LoadImage("imgs/border");
286        border.Position = pos;
287        border.CollisionIgnoreGroup = 0;
288        border.Image = borderImg;
289        border.Tag = "border";
290        Add(border);
291    }
292
293
294    void CreateGoal(Vector pos, double width, double height)
295    {
296        goal = PhysicsObject.CreateStaticObject(width, height);
297        Image goalImg = Game.LoadImage("imgs/goal");
298        goal.Position = pos;
299        goal.Image = goalImg;
300        goal.CollisionIgnoreGroup = 1;
301        goal.Tag = "goal";
302        Add(goal);
303    }
304
305    void CreateBgWall(Vector pos, double width, double height)
306    {
307        GameObject wall = new GameObject(width, height);
308        Image wallImg = Game.LoadImage("imgs/wall/wall");
309        wall.Position = pos;
310        wall.Image = wallImg;
311        Add(wall, -1);
312    }
313
314    void ExitGame()
315    {
316        Exit();
317    }
318
319}
Note: See TracBrowser for help on using the repository browser.