source: 2012/27/JuhoK/Impossible/Impossible/Impossible/Impossible.cs @ 3590

Revision 3590, 6.0 KB checked in by jumakall, 8 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Impossible : PhysicsGame
10{
11    double moveSpeed = 1600;
12    bool allowMove = false;
13    bool nextLevel = true;
14    int kenttaNro = 0;
15    int kenttaMax = 1;
16
17    PlatformCharacter cube;
18    GameObject pelaajanHaamu;
19
20    Image palikanKuva = LoadImage("palikka");
21    Image piikinKuva = LoadImage("piikki");
22    Image pelaajanKuva = LoadImage("cube");
23    Image maanKuva = LoadImage("viiva");
24
25    Vector currPos;
26    Vector prevPos;
27
28    ExplosionSystem es;
29
30    public override void Begin()
31    {
32        IsMouseVisible = true;
33        Level.BackgroundColor = Color.Black;
34
35        SetWindowSize(800, 480);
36
37        PushButton startButton = new PushButton("Start");
38        startButton.Clicked += new Action(startGame);
39        Add(startButton);
40
41        Keyboard.Listen(Key.Enter, ButtonState.Pressed, startGame, null);
42        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
43    }
44
45    protected override void Update(Time time)
46    {
47        base.Update(time);
48
49        if (allowMove == true) { 
50            move();
51            if (prevPos == currPos && cube.Position == currPos)
52            {
53                allowMove = false;
54                createExplosion(cube.Position);
55                MediaPlayer.Stop();
56                cube.Destroy();
57            }
58            else
59            {
60                prevPos = currPos;
61                currPos = cube.Position;
62            }
63        }
64    }
65
66    void startGame()
67    {
68        ClearAll();
69
70        es = new ExplosionSystem(LoadImage("explosion"), 100);
71        Add(es);
72
73        if (nextLevel == true) { kenttaNro++; nextLevel = false; }
74        if (kenttaNro <= kenttaMax)
75        {
76            Level.Background.Image = LoadImage("background");
77            LuoKentta(kenttaNro);
78            Level.Background.FitToLevel();
79
80            Keyboard.Listen(Key.Space, ButtonState.Down, jump, null);
81            Keyboard.Listen(Key.Enter, ButtonState.Pressed, startGame, null);
82
83            Gravity = new Vector(0, -7500);
84
85            Camera.Follow(pelaajanHaamu);
86            Camera.StayInLevel = true;
87            //Camera.ZoomToLevel();
88            Camera.ZoomFactor = 0.3;
89            MediaPlayer.Play("track"+kenttaNro);
90        }
91        else { gameOver(); }
92
93    }
94
95    void LuoKentta(int kenttaNro)
96    {
97        TileMap ruudut = TileMap.FromLevelAsset("kentta" + kenttaNro);
98        ruudut.SetTileMethod('=', LuoPalikka);
99        ruudut.SetTileMethod('P', LuoPelaaja);
100        ruudut.SetTileMethod('M', LuoMaali);
101        ruudut.SetTileMethod('L', LuoPiikki);
102        ruudut.SetTileMethod('_', LuoMaa);
103        ruudut.Execute(100, 100);
104    }
105
106    void LuoMaa(Vector paikka, double leveys, double korkeus)
107    {
108        PhysicsObject maa = PhysicsObject.CreateStaticObject(leveys, korkeus);
109        maa.Position = paikka;
110        maa.Shape = Shape.Rectangle;
111        maa.Color = Color.Black;
112        maa.IsVisible = false;
113        Add(maa);
114
115        GameObject viivanKuva = new GameObject(leveys, korkeus);
116        viivanKuva.Image = maanKuva;
117        viivanKuva.X = maa.X;
118        viivanKuva.Y = maa.Y + 35;
119        Add(viivanKuva);
120    }
121
122    void LuoPalikka(Vector paikka, double leveys, double korkeus)
123    {
124        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
125        palikka.Position = paikka;
126        palikka.Image = palikanKuva;
127        palikka.Shape = Shape.Rectangle;
128        palikka.Color = Color.Gray;
129        Add(palikka);
130    }
131   
132    void LuoPiikki(Vector paikka, double leveys, double korkeus)
133    {
134        PhysicsObject Piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
135        Piikki.Position = paikka;
136        Piikki.Image = piikinKuva;
137        Piikki.Shape = Shape.FromImage(piikinKuva);
138        Piikki.Color = Color.Pink;
139        Piikki.Tag = "piikki";
140        Add(Piikki);
141    }
142
143    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
144    {
145        cube = new PlatformCharacter(leveys, korkeus);
146        cube.Image = pelaajanKuva;
147        cube.Shape = Shape.Rectangle;
148        cube.Position = paikka;
149        cube.CanRotate = false;
150        cube.Y += 1;
151        Add(cube);
152        allowMove = true;
153        AddCollisionHandler(cube, cubeCollision);
154
155        pelaajanHaamu = new GameObject(leveys, korkeus);       
156        pelaajanHaamu.Position = new Vector(cube.Position.X + Screen.Width / 2, cube.Position.Y);
157        Add(pelaajanHaamu);
158        pelaajanHaamu.IsVisible = false;
159
160    }
161    void LuoMaali(Vector paikka, double leveys, double korkeus)
162    {
163        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
164        palikka.Position = paikka;
165        palikka.Shape = Shape.Rectangle;
166        palikka.Color = Color.Gray;
167        palikka.Tag = "maali";
168        Add(palikka);
169    }
170
171
172    void move()
173    {
174        cube.Move(new Vector(moveSpeed, 0));
175        pelaajanHaamu.Position = new Vector(cube.Position.X + Screen.Width * 1.1, cube.Position.Y);
176    }
177
178    void jump()
179    {
180        cube.Jump(1000);
181    }
182
183    void createExplosion(Vector position)
184    {       
185        es.AddEffect(position, 100);
186    }
187
188    void cubeCollision(PhysicsObject tormaaja, PhysicsObject kohde)
189    {
190        if (kohde.Tag.ToString() == "piikki")
191        {
192            createExplosion(cube.Position);
193            MediaPlayer.Stop();
194            cube.Destroy();
195            allowMove = false;
196        }
197        else if (kohde.Tag.ToString() == "maali")
198        {
199            MessageDisplay.Add("Next level reached!");
200            nextLevel = true;
201            startGame();
202        }
203    }
204
205    void gameOver()
206    {
207        Level.BackgroundColor = Color.Pink;
208        MessageDisplay.Add("OutOfMemoryExeption; GAME ABORTED!");
209    }
210}
211 
Note: See TracBrowser for help on using the repository browser.