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

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