source: 2017/27/IlmariL/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1.cs @ 8878

Revision 8878, 4.2 KB checked in by npo17_34, 2 years ago (diff)

SPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACE!!!!!!!!

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