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

Revision 3587, 4.9 KB checked in by janiemit, 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    int kenttaNro = 1;
14
15    PlatformCharacter cube;
16    GameObject pelaajanHaamu;
17
18    Image palikanKuva = LoadImage("palikka");
19    Image piikinKuva = LoadImage("piikki");
20    Image pelaajanKuva = LoadImage("cube");
21    Image maanKuva = LoadImage("viiva");
22
23    Vector currPos;
24    Vector prevPos;
25
26    public override void Begin()
27    {
28        IsMouseVisible = true;
29        Level.BackgroundColor = Color.Black;
30
31        SetWindowSize(800, 480);
32
33        PushButton startButton = new PushButton("Start");
34        startButton.Clicked += new Action(startGame);
35        Add(startButton);
36
37        Keyboard.Listen(Key.Enter, ButtonState.Pressed, startGame, null);
38        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
39    }
40
41    protected override void Update(Time time)
42    {
43        base.Update(time);
44
45        if (allowMove == true) { 
46            move();
47            if (prevPos == currPos && cube.Position == currPos)
48            {
49                allowMove = false;
50                createExplosion(cube.Position);
51                cube.Destroy();
52            }
53            else
54            {
55                prevPos = currPos;
56                currPos = cube.Position;
57            }
58        }
59    }
60
61    void startGame()
62    {
63        ClearAll();
64        Level.Background.Image = LoadImage("background");
65        LuoKentta(kenttaNro);
66        Level.Background.FitToLevel();
67
68        Keyboard.Listen(Key.Space, ButtonState.Down, jump, null);
69        Keyboard.Listen(Key.Enter, ButtonState.Pressed, startGame, null);
70
71        Gravity = new Vector(0, -7500);
72
73         Camera.Follow(pelaajanHaamu);
74        Camera.StayInLevel = true;
75        //Camera.ZoomToLevel();
76        Camera.ZoomFactor = 0.3;
77
78    }
79
80    void LuoKentta(int kenttaNro)
81    {
82        TileMap ruudut = TileMap.FromLevelAsset("kentta" + kenttaNro);
83        ruudut.SetTileMethod('=', LuoPalikka);
84        ruudut.SetTileMethod('P', LuoPelaaja);
85        ruudut.SetTileMethod('M', LuoMaali);
86        ruudut.SetTileMethod('L', LuoPiikki);
87        ruudut.SetTileMethod('_', LuoMaa);
88        ruudut.Execute(100, 100);
89    }
90
91    void LuoMaa(Vector paikka, double leveys, double korkeus)
92    {
93        PhysicsObject maa = PhysicsObject.CreateStaticObject(leveys, korkeus);
94        maa.Position = paikka;
95        maa.Shape = Shape.Rectangle;
96        maa.Color = Color.Black;
97        maa.IsVisible = false;
98        Add(maa);
99
100        GameObject viivanKuva = new GameObject(leveys, korkeus);
101        viivanKuva.Image = maanKuva;
102        viivanKuva.X = maa.X;
103        viivanKuva.Y = maa.Y + 35;
104        Add(viivanKuva);
105    }
106
107    void LuoPalikka(Vector paikka, double leveys, double korkeus)
108    {
109        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
110        palikka.Position = paikka;
111        palikka.Image = palikanKuva;
112        palikka.Shape = Shape.Rectangle;
113        palikka.Color = Color.Gray;
114        Add(palikka);
115    }
116   
117    void LuoPiikki(Vector paikka, double leveys, double korkeus)
118    {
119        PhysicsObject Piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
120        Piikki.Position = paikka;
121        Piikki.Image = piikinKuva;
122        Piikki.Shape = Shape.Triangle;
123        Piikki.Color = Color.Pink;
124        Add(Piikki);
125    }
126
127    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
128    {
129        cube = new PlatformCharacter(leveys, korkeus);
130        cube.Image = pelaajanKuva;
131        cube.Shape = Shape.Rectangle;
132        cube.Position = paikka;
133        cube.CanRotate = false;
134        cube.Y += 1;
135        Add(cube);
136        allowMove = true;
137
138        pelaajanHaamu = new GameObject(leveys, korkeus);       
139        pelaajanHaamu.Position = new Vector(cube.Position.X + Screen.Width / 2, cube.Position.Y);
140        Add(pelaajanHaamu);
141        pelaajanHaamu.IsVisible = false;
142
143    }
144    void LuoMaali(Vector paikka, double leveys, double korkeus)
145    {
146        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
147        palikka.Position = paikka;
148        palikka.Shape = Shape.Rectangle;
149        palikka.Color = Color.Gray;
150        Add(palikka);
151    }
152
153
154    void move()
155    {
156        cube.Move(new Vector(moveSpeed, 0));
157        pelaajanHaamu.Position = new Vector(cube.Position.X + Screen.Width * 1.1, cube.Position.Y);
158    }
159
160    void jump()
161    {
162        cube.Jump(1000);
163    }
164
165    void createExplosion(Vector position)
166    {
167        Explosion explosion = new Explosion(100);
168        explosion.Position = position;
169        explosion.Size = new Vector(50, 50);
170        explosion.Speed = 1;
171        Add(explosion);
172    }
173}
174 
Note: See TracBrowser for help on using the repository browser.