source: 2017/27/PyryS/GravityAssist/GravityAssist/GravityAssist/GravityAssist.cs @ 8868

Revision 8868, 5.2 KB checked in by npo17_32, 4 years ago (diff)

Fixed jitter in GravityAssist?, adeed new graphics.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class GravityAssist : PhysicsGame
10{
11    const double nopeus = 30;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    bool GravityDirection;
16
17    PhysicsObject player;
18
19    Image[] playerImages = LoadImages("Player0", "Player1");
20    Image wall0 = LoadImage("SpaceStationWall0");
21    Image wall1 = LoadImage("SpaceStationWall1");
22    Image obstacle0 = LoadImage("Obstacle0");
23
24
25
26    public override void Begin()
27    {
28        Gravity = new Vector(0, 0);
29        SmoothTextures = false;
30
31        LuoKentta();
32        LisaaNappaimet();
33
34        Camera.Follow(player);
35        Camera.ZoomFactor = 1.0;
36        Camera.StayInLevel = true;
37    }
38
39    void LuoKentta()
40    {
41        TileMap kentta = TileMap.FromLevelAsset("kentta1");
42        kentta.SetTileMethod('A', LisaaTaso, false);
43        kentta.SetTileMethod('V', LisaaTaso, true);
44        kentta.SetTileMethod('.', AddObstacle, true);
45        kentta.SetTileMethod(',', AddObstacle, false);
46        kentta.SetTileMethod('N', LisaaPelaaja);
47        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
48        Level.CreateBorders();
49        Level.Background.CreateGradient(Color.White, Color.Black);
50    }
51
52    void LisaaTaso(Vector paikka, double leveys, double korkeus, bool flipped)
53    {
54        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
55        taso.Position = paikka;
56        taso.Image = RandomGen.SelectOne(wall0, wall0, wall0, wall1);
57        if (flipped) taso.FlipImage();
58        taso.Restitution = 0.0;
59        taso.KineticFriction = 0.0;
60        taso.StaticFriction = 0.0;
61        taso.Tag = "wall";
62        Add(taso);
63    }
64
65    void AddObstacle(Vector paikka, double leveys, double korkeus, bool flipped)
66    {
67        PhysicsObject obstacle = PhysicsObject.CreateStaticObject(leveys, korkeus);
68        obstacle.IgnoresCollisionResponse = true;
69        obstacle.Image = obstacle0;
70        if (flipped)
71        {
72            obstacle.FlipImage();
73            obstacle.Position = paikka + new Vector(0, -10);
74        }
75        else
76        {
77            obstacle.Position = paikka + new Vector(0, 10);
78        }
79        obstacle.Tag = "obstacle";
80        Add(obstacle);
81    }
82
83    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
84    {
85        player = new PhysicsObject(32, 13);
86        player.Position = paikka;
87        player.Mass = 100.0;
88        player.CanRotate = false;
89        player.KineticFriction = 0.0;
90        player.StaticFriction = 0.0;
91        player.Restitution = 0.0;
92        player.Image = playerImages[0];
93        player.Animation = new Animation(playerImages);
94        player.Animation.FPS = 15;
95        player.Animation.Start();
96        AddCollisionHandler(player, playerdeath);
97        Add(player);
98        player.IgnoresCollisionResponse = true;
99        Timer liikutusAjastin = new Timer();
100        liikutusAjastin.Interval = 0.02;
101        liikutusAjastin.Timeout += delegate { player.Velocity = new Vector(150, player.Velocity.Y); };
102        liikutusAjastin.Start();
103
104    }
105
106    void LisaaNappaimet()
107    {
108        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Exit");
109
110        Keyboard.Listen(Key.W, ButtonState.Pressed, GravitySwap, "Gravity Switched", player, 1.0);
111
112        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Exit");
113
114        ControllerOne.Listen(Button.A, ButtonState.Pressed, GravitySwap, "Gravity Switched", player, 1.0);
115    }
116
117
118    void GravitySwap(PhysicsObject Player, double Force)
119    {
120        //Player.Jump(Force);
121        if (GravityDirection == true)
122        {
123            //Gravity = new Vector(0, -1000);
124            //player.Hit(new Vector(0, -10));
125            player.Velocity = new Vector(player.Velocity.X, -150);
126            GravityDirection = false;
127            //Timer.SingleShot(0.2, delegate { player.TextureWrapSize = new Vector(1, 1); });
128            player.TextureWrapSize = new Vector(1, 1);
129        }
130        else if (GravityDirection == false)
131        {
132            //Gravity = new Vector(0, 1000);
133            player.Velocity = new Vector(player.Velocity.X, 150);
134            //player.Hit(new Vector(0, 10));
135            GravityDirection = true;
136            //Timer.SingleShot(0.2, delegate { player.TextureWrapSize = new Vector(1, -1); });
137            player.TextureWrapSize = new Vector(1, -1);
138        }
139    }
140
141    void playerdeath(PhysicsObject hahmo, PhysicsObject obstacle)
142    {
143
144        if (obstacle.Tag == "obstacle")
145        {
146
147            MessageDisplay.Add("You died.");
148            player.Destroy();
149        }
150
151        if (obstacle.Tag == "wall")
152        {
153            //Gravity = Vector.Zero;
154            player.Velocity = new Vector(player.Velocity.X, 0);
155            if (player.Y < obstacle.Top)
156            {
157                player.Y = obstacle.Bottom - player.Height / 2.0 - 0.2;
158            }
159            else
160            {
161                player.Y = obstacle.Top + player.Height / 2.0 + 0.2;
162            }
163        }
164       
165    }
166}
Note: See TracBrowser for help on using the repository browser.