source: esimerkit/2012s/luennot/livem1/livem1/GalaxyTrip/GalaxyTrip/GalaxyTrip.cs @ 599

Revision 599, 3.8 KB checked in by vesal, 5 years ago (diff)

PC peli

Line 
1using System;
2using Jypeli;
3using Jypeli.Controls;
4using Jypeli.Effects;
5
6public class GalaxyTrip : PhysicsGame
7{
8    private static String[] lines = {
9                  "           ",
10                  "           ",
11                  "           ",
12                  "   X   X   ",
13                  "X          ",
14                  "         * ", 
15                  "     X   X ",
16                  "           ",
17                  "           ",
18                  "           ",
19                  "           ",
20                  "*  X   X   ",
21                  "X          ",
22                  "         * ", 
23                  "     X   X ",
24                  "           ",
25                  "           ",
26                  "           ",
27                  "   *       ",
28                  "   X   X   ",
29                  "X          ",
30                  "           ", 
31                  "     X   X ",
32                  "           ",
33                  };
34
35    private static int tileWidth = 800 / lines[0].Length;
36    private static int tileHeight = 480 / lines.Length;
37    private static Image playerImage = LoadImage("ship");
38    private static Image galaxyImage = LoadImage("galaxy2");
39    private static Image sombreroImage = LoadImage("sombrero");
40    private static Image explosionImage = LoadImage("bum");
41
42    private SoundEffect blopSound = LoadSoundEffect("blop");
43    private SoundEffect explosionSound = LoadSoundEffect("exp");
44
45    private ExplosionSystem explosionSystem;
46    private PhysicsObject player;
47
48    public override void Begin()
49    {
50        Level.Background.Image = LoadImage("space");
51        Gravity = new Vector(0, -1000);
52        NewGame();
53    }
54
55
56    void NewGame()
57    {
58        ClearGameObjects();
59        ClearControls();
60
61        player = new PhysicsObject(50, 50, Shape.Circle);
62        player.Image = playerImage;
63        Add(player);
64
65        explosionSystem = new ExplosionSystem(explosionImage, 50);
66        Add(explosionSystem);
67
68        Keyboard.Listen(Key.Up, ButtonState.Pressed, MovePlayer, "Move up", player, new Vector(0, 500));
69        Keyboard.Listen(Key.Down, ButtonState.Pressed, MovePlayer, null, player, new Vector(0, -500));
70        Keyboard.Listen(Key.Left, ButtonState.Pressed, MovePlayer, null, player, new Vector(-150, 0));
71        Keyboard.Listen(Key.Right, ButtonState.Pressed, MovePlayer, null, player, new Vector(150, 0));
72        PhoneBackButton.Listen(Exit, "End game");
73
74
75        TileMap tiles = TileMap.FromStringArray(lines);
76        tiles['X'] = CreateGalaxy;
77        tiles['*'] = CreateSombrero;
78        tiles.Insert(tileWidth, tileHeight);
79        Level.CreateBorders();
80        Camera.ZoomToLevel();
81    }
82
83
84    public void MovePlayer(PhysicsObject player, Vector force)
85    {
86        player.Hit(force);
87    }
88
89
90    private PhysicsObject CreateGalaxy()
91    {
92        PhysicsObject galaxy = PhysicsObject.CreateStaticObject(tileWidth, tileHeight);
93        galaxy.Color = Color.LightBlue;
94        AddCollisionHandler(galaxy, CollidedWithGalaxy);
95        galaxy.Image = galaxyImage;
96        return galaxy;
97    }
98
99
100    private PhysicsObject CreateSombrero()
101    {
102        PhysicsObject sombrero = PhysicsObject.CreateStaticObject(tileWidth, tileHeight);
103        sombrero.Color = Color.Yellow;
104        sombrero.Image = sombreroImage;
105        AddCollisionHandler(sombrero, CollidedWithSombrero);
106        return sombrero;
107    }
108
109
110    private void CollidedWithGalaxy(PhysicsObject galaxy, PhysicsObject target)
111    {
112        Phone.Vibrate(40);
113        blopSound.Play();
114    }
115
116
117    private void CollidedWithSombrero(PhysicsObject sombrero, PhysicsObject target)
118    {
119        Phone.Vibrate(400);
120        explosionSound.Play();
121        explosionSystem.AddEffect(target.X, target.Y, 50);
122        sombrero.Destroy();
123    }
124
125}
Note: See TracBrowser for help on using the repository browser.