source: 2010/31/juiitamm/Tappelu/Peli.cs @ 1685

Revision 1685, 3.1 KB checked in by juiitamm, 12 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5using Physics2DDotNet.Joints;
6using Physics2DDotNet.Ignorers;
7
8
9class Tasohyppely : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyVoima = 4000;
13
14    PlatformCharacter pelaaja1;
15    PhysicsObject maila;
16
17    protected override void Begin()
18    {
19        Gravity = new Vector(0, -1000);
20
21        luoKentta();
22        lisaaNappaimet();
23        luoAse();
24
25        ObjectIgnorer ignorer = new ObjectIgnorer();
26        pelaaja1.CollisionIgnorer = ignorer;
27        maila.CollisionIgnorer = ignorer;
28
29        HingeJoint nivel = PhysicsGame.CreateHingeJoint(pelaaja1, maila, pelaaja1.Position);
30        nivel.Softness = 0.1;
31        Add(nivel);
32
33        Camera.Follow(pelaaja1);
34        //Camera.ZoomFactor = 2.0;
35        Camera.StayInLevel = true;
36    }
37
38    void luoAse()
39    {
40        maila = new PhysicsObject(10, 100);
41        maila.Y = pelaaja1.Y + maila.Height / 2;
42        maila.X = pelaaja1.X;
43        maila.Color = Color.Gray;
44        maila.Restitution = 0.1;
45        AddCollisionHandler(maila, mailaOsui);
46        Add(maila);
47
48    }
49
50    void mailaOsui(PhysicsObject maila, PhysicsObject kohde)
51    {
52        if (kohde.Tag.ToString() == "palikka")
53        {
54            kohde.Destroy();
55        }
56    }
57
58    void luoKentta()
59    {
60        Level.CreateBorders();
61        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
62
63        Timer ajastin = new Timer();
64        ajastin.Interval = 1.0;
65        ajastin.Trigger += lisaaTaso;
66        ajastin.Start();
67       
68
69        lisaaPelaajat();
70    }
71
72    void lisaaTaso(Timer t)
73    {
74        PhysicsObject taso = PhysicsObject.CreateStaticObject(30, 30);
75        taso.Color = Color.Green;
76        taso.X = RandomGen.NextDouble(Level.Left, Level.Right);
77        taso.Y = Level.Bottom + 15;
78        taso.Tag = "palikka";
79        Add(taso);
80    }
81
82    void lisaaPelaajat()
83    {
84        pelaaja1 = new PlatformCharacter(40, 40);
85        pelaaja1.Mass = 4.0;
86        pelaaja1.Image = LoadImage("norsu");
87        pelaaja1.X = 0;
88        pelaaja1.Y = Level.Bottom + 120;
89
90        Add(pelaaja1);
91    }
92
93    void lisaaNappaimet()
94    {
95        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
96        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
97
98        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
99        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
100        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
101
102        Keyboard.Listen(Key.A, ButtonState.Down,liikutaKeppia, null, 5.0);
103        Keyboard.Listen(Key.D, ButtonState.Down, liikutaKeppia, null, -5.0);
104
105    }
106
107    void liikutaKeppia(double nopeus)
108    {
109        maila.AngularVelocity += nopeus;
110    }
111
112    void liikuta(PlatformCharacter hahmo, double nopeus)
113    {
114        hahmo.Walk(nopeus);
115    }
116
117    void hyppaa(PlatformCharacter hahmo, double voima)
118    {
119        hahmo.Jump(voima);
120    }
121}
Note: See TracBrowser for help on using the repository browser.