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

Revision 600, 6.2 KB checked in by vesal, 5 years ago (diff)

Kun puhelimen muutokset tehty

Line 
1using System;
2using Jypeli;
3using Jypeli.Controls;
4using Jypeli.Effects;
5using Jypeli.WP7;
6using Jypeli.Widgets;
7
8public class GalaxyTrip : PhysicsGame
9{
10    private static String[] lines = {
11                  "           ",
12                  "           ",
13                  "           ",
14                  "   X   X   ",
15                  "X          ",
16                  "         * ", 
17                  "     X   X ",
18                  "           ",
19                  "           ",
20                  "           ",
21                  "           ",
22                  "*  X   X   ",
23                  "X          ",
24                  "         * ", 
25                  "     X   X ",
26                  "           ",
27                  "           ",
28                  "           ",
29                  "   *       ",
30                  "   X   X   ",
31                  "X          ",
32                  "           ", 
33                  "     X   X ",
34                  "           ",
35                  };
36
37    private static int tileWidth = 800 / lines[0].Length;
38    private static int tileHeight = 480 / lines.Length;
39    private static Image playerImage = LoadImage("ship");
40    private static Image galaxyImage = LoadImage("galaxy2");
41    private static Image sombreroImage = LoadImage("sombrero");
42    private static Image explosionImage = LoadImage("bum");
43
44    private SoundEffect blopSound = LoadSoundEffect("blop");
45    private SoundEffect explosionSound = LoadSoundEffect("exp");
46
47    private ExplosionSystem explosionSystem;
48    private PhysicsObject player;
49
50
51#if WINDOWS_PHONE
52    private Label vasemmalleLiikutusPainike;
53    private Label oikealleLiikutusPainike;
54    private Label hyppyPainike;
55#endif
56
57
58    public override void Begin()
59    {
60        Level.Background.Image = LoadImage("space");
61        Gravity = new Vector(0, -1000);
62        NewGame(null);
63    }
64
65
66    void NewGame(Touch touch)
67    {
68        ClearGameObjects();
69        ClearControls();
70
71        player = new PhysicsObject(50, 50, Shape.Circle);
72        player.Image = playerImage;
73        Add(player);
74
75        explosionSystem = new ExplosionSystem(explosionImage, 50);
76        Add(explosionSystem);
77
78        Keyboard.Listen(Key.Up, ButtonState.Pressed, MovePlayer, "Move up", player, new Vector(0, 500));
79        Keyboard.Listen(Key.Down, ButtonState.Pressed, MovePlayer, null, player, new Vector(0, -500));
80        Keyboard.Listen(Key.Left, ButtonState.Pressed, MovePlayer, null, player, new Vector(-150, 0));
81        Keyboard.Listen(Key.Right, ButtonState.Pressed, MovePlayer, null, player, new Vector(150, 0));
82        // PhoneBackButton.Listen(Exit, "End game");
83
84
85        LuoPuhelinOhjaus();
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
96    private void LuoPuhelinOhjaus()
97    {
98#if WINDOWS_PHONE
99        Phone.DisplayOrientation = DisplayOrientation.LandscapeLeft; 
100
101        TouchPanel.Listen(ButtonState.Pressed, NewGame, null);
102        Accelerometer.Calibration = AccelerometerCalibration.ZeroAngle;
103        Accelerometer.ListenAnalog(AccelerometerSensitivity.Realtime, ChangeGravity, null);
104
105        double marginaali = 10;
106        Color vari = new Color(30, 30, 30, 30);
107
108        vasemmalleLiikutusPainike = new Label(Screen.Width * 0.30, Screen.Height * 0.4, "<-") { Color = vari, BorderColor = Color.Gray, TextColor = Color.White };
109        vasemmalleLiikutusPainike.X = Screen.Left + marginaali + vasemmalleLiikutusPainike.Width / 2;
110        vasemmalleLiikutusPainike.Y = Screen.Bottom + marginaali + vasemmalleLiikutusPainike.Height / 2;
111        Add(vasemmalleLiikutusPainike);
112
113        oikealleLiikutusPainike = new Label(Screen.Width * 0.30, Screen.Height * 0.4, "->") { Color = vari, BorderColor = Color.Gray, TextColor = Color.White };
114        oikealleLiikutusPainike.X = Screen.Right - marginaali - oikealleLiikutusPainike.Width / 2;
115        oikealleLiikutusPainike.Y = Screen.Bottom + marginaali + oikealleLiikutusPainike.Height / 2;
116        Add(oikealleLiikutusPainike);
117
118        hyppyPainike = new Label(Screen.Width * 0.30, Screen.Height * 0.3, " ^ ") { Color = vari, BorderColor = Color.Gray, TextColor = Color.White };
119        hyppyPainike.X = Screen.Center.X;
120        hyppyPainike.Y = Screen.Bottom + marginaali + hyppyPainike.Height / 2;
121        Add(hyppyPainike);
122
123        TouchPanel.ListenOn(vasemmalleLiikutusPainike, ButtonState.Down, delegate { MovePlayer(player,new Vector(-150, 0)); }, null );
124        TouchPanel.ListenOn(oikealleLiikutusPainike, ButtonState.Down, delegate { MovePlayer(player, new Vector(-150, 0)); }, null);
125        TouchPanel.ListenOn(hyppyPainike, ButtonState.Pressed, delegate { MovePlayer(player, new Vector(0, 2000)); }, null);
126#endif
127    }
128
129
130    public void MovePlayer(PhysicsObject player, Vector force)
131    {
132        player.Hit(force);
133    }
134
135
136    private PhysicsObject CreateGalaxy()
137    {
138        PhysicsObject galaxy = PhysicsObject.CreateStaticObject(tileWidth, tileHeight);
139        galaxy.Color = Color.LightBlue;
140        AddCollisionHandler(galaxy, CollidedWithGalaxy);
141        galaxy.Image = galaxyImage;
142        return galaxy;
143    }
144
145
146    private PhysicsObject CreateSombrero()
147    {
148        PhysicsObject sombrero = PhysicsObject.CreateStaticObject(tileWidth, tileHeight);
149        sombrero.Color = Color.Yellow;
150        sombrero.Image = sombreroImage;
151        AddCollisionHandler(sombrero, CollidedWithSombrero);
152        return sombrero;
153    }
154
155
156    private void CollidedWithGalaxy(PhysicsObject galaxy, PhysicsObject target)
157    {
158        Phone.Vibrate(40);  // puhelimen takia
159        blopSound.Play();
160    }
161
162
163    private void CollidedWithSombrero(PhysicsObject sombrero, PhysicsObject target)
164    {
165        Phone.Vibrate(400); // puhelimen takia
166        explosionSound.Play();
167        explosionSystem.AddEffect(target.X, target.Y, 50);
168        sombrero.Destroy();
169    }
170
171
172    void ChangeGravity(AnalogState s)
173    {
174        Gravity = s.StateVector * 2000;
175    }
176
177}
Note: See TracBrowser for help on using the repository browser.