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

Revision 8953, 4.8 KB checked in by npo17_34, 2 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.Controls;
4using Jypeli.Effects;
5using Jypeli.WP7;
6using Jypeli.Widgets;
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        AlkuValikko();
52
53    }
54
55
56    public override void Continue()
57    {
58        // Begin();
59    }
60
61
62    void NewGame(Touch touch)
63    {
64        ClearGameObjects();
65        ClearControls();
66
67        player = new PhysicsObject(50, 50, Shape.Circle);
68        player.Image = playerImage;
69        Add(player);
70
71        explosionSystem = new ExplosionSystem(explosionImage, 50);
72        Add(explosionSystem);
73
74        Keyboard.Listen(Key.Up, ButtonState.Pressed, MovePlayer, "Move up", player, new Vector(0, 500));
75        Keyboard.Listen(Key.Down, ButtonState.Pressed, MovePlayer, null, player, new Vector(0, -500));
76        Keyboard.Listen(Key.Left, ButtonState.Pressed, MovePlayer, null, player, new Vector(-150, 0));
77        Keyboard.Listen(Key.Right, ButtonState.Pressed, MovePlayer, null, player, new Vector(150, 0));
78        PhoneBackButton.Listen(Exit, "End game");
79
80        TouchPanel.Listen(ButtonState.Pressed, NewGame, null);
81        Accelerometer.Calibration = AccelerometerCalibration.ZeroAngle;
82        Accelerometer.ListenAnalog(AccelerometerSensitivity.Realtime, ChangeGravity, null);
83
84        TileMap tiles = TileMap.FromStringArray(lines);
85        tiles['X'] = CreateGalaxy;
86        tiles['*'] = CreateSombrero;
87        tiles.Insert(tileWidth, tileHeight);
88        Level.CreateBorders();
89        Camera.ZoomToLevel();
90    }
91
92    public void MovePlayer(PhysicsObject player, Vector force)
93    {
94        player.Hit(force);
95    }
96
97    PhysicsObject CreateGalaxy()
98    {
99        PhysicsObject galaxy = PhysicsObject.CreateStaticObject(tileWidth, tileHeight);
100        galaxy.Color = Color.LightBlue;
101        AddCollisionHandler(galaxy, CollidedWithGalaxy);
102        galaxy.Image = galaxyImage;
103        return galaxy;
104    }
105
106    PhysicsObject CreateSombrero()
107    {
108        PhysicsObject sombrero = PhysicsObject.CreateStaticObject(tileWidth, tileHeight);
109        sombrero.Color = Color.Yellow;
110        sombrero.Image = sombreroImage;
111        AddCollisionHandler(sombrero, CollidedWithSombrero);
112        return sombrero;
113    }
114
115    void CollidedWithGalaxy(PhysicsObject galaxy, PhysicsObject target)
116    {
117        Phone.Vibrate(40);
118        blopSound.Play();
119    }
120
121    void CollidedWithSombrero(PhysicsObject sombrero, PhysicsObject target)
122    {
123        Phone.Vibrate(400);
124        explosionSound.Play();
125        explosionSystem.AddEffect(target.X, target.Y, 50);
126        sombrero.Destroy();
127    }
128
129    void ChangeGravity(AnalogState s)
130    {
131        Gravity = s.StateVector * 2000;
132    }
133    void AlkuValikko()
134    {
135        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Lopeta");
136        Add(alkuValikko);
137        alkuValikko.AddItemHandler(0, AloitaPeli);
138       
139        alkuValikko.AddItemHandler(1, Exit);
140        alkuValikko.DefaultCancel = 1;
141        alkuValikko.Color = Color.Black;
142
143    }
144    void AloitaPeli()
145    {
146        Phone.DisplayResolution = DisplayResolution.Large;
147        Phone.DisplayOrientation = DisplayOrientation.LandscapeLeft;
148        Level.Background.Image = LoadImage("space");
149        Gravity = new Vector(0, -1000);
150        NewGame(null);
151        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
152        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
153    }
154}
Note: See TracBrowser for help on using the repository browser.