source: 2010/30/johulkko/FysiikkaPeli2/Peli.cs @ 1375

Revision 1375, 5.3 KB checked in by johulkko, 10 years ago (diff)

Hahmo, tasot, maa ja pyssyt

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5
6public class Peli : PhysicsGame
7{
8    double nopeusvasemmalle = -200;
9    double nopeusoikealle = 200;
10
11    double maastonLeveys = 1000;
12    double maastonKorkeus = 300;
13    Image maastonKuva = LoadImage("tausta2");
14    Shape maastonMuoto;
15    Image olionKuva = LoadImage("hahmo2 pienenpi");
16    PlatformCharacter hahmo;
17
18    protected override void Begin()
19    {
20        LuoKentta();
21        LuoOhjaimet();
22        Camera.ZoomToLevel();
23    }
24
25    void LuoKentta()
26    {
27        //maastonMuoto = Shapes.FromImage(maastonLeveys, maastonKorkeus, maastonKuva);
28        //PhysicsObject maasto =
29        //    PhysicsObject.CreateStaticObject(
30        //    maastonLeveys,
31        //    maastonKorkeus,
32        //    maastonMuoto);
33        //maasto.Image = maastonKuva;
34        //maasto.Color = Color.Green;
35        //Add(maasto);
36        //maasto.Y = -300;
37        Mouse.IsCursorVisible = true;
38
39        PhysicsObject maa = PhysicsObject.CreateStaticObject(Level.Width, 110.0);
40        maa.Y = -350;
41        maa.Color = Color.Green;
42        Add(maa);
43
44        LuoTaso(200, 100);
45        LuoTaso(0, -100);
46        LuoTaso(-200, 100);
47       
48        Gravity = new Vector(0.0, -800.0);
49       
50        Level.CreateLeftBorder();
51        Level.CreateBottomBorder();
52        Level.CreateRightBorder();
53
54        hahmo = new PlatformCharacter(50, 72);
55       
56        hahmo.Shape = Shapes.Rectangle;
57        hahmo.Image = olionKuva;
58        hahmo.Tag = "tyyppi";
59        Add(hahmo);
60       
61        hahmo.Y = -180;
62        hahmo.X = -110;
63    }
64
65    void Liikuta(PlatformCharacter hahmo, double nopeus)
66    {
67        hahmo.Walk(nopeus);
68    }
69    void LuoOhjaimet()
70    {
71    Keyboard.Listen( Key.Escape, ButtonState.Pressed, Exit, "Poistu" );
72   
73    Keyboard.Listen(Key.Left, ButtonState.Down, HahmoLiikkuu, "hahmo liikkuu vasemmalle", hahmo, nopeusvasemmalle);
74    Keyboard.Listen(Key.Left, ButtonState.Released, HahmoLiikkuu , null, hahmo, 0.0);
75    Keyboard.Listen(Key.Right, ButtonState.Down, HahmoLiikkuu, "hahmo liikkuu oikealle", hahmo, nopeusoikealle);
76    Keyboard.Listen(Key.Right, ButtonState.Released, HahmoLiikkuu, null, hahmo, 0.0);
77    Keyboard.Listen(Key.Up, ButtonState.Pressed, Hahmohyppaa, "hahmo liikkuu oikealle", hahmo);
78    Keyboard.Listen(Key.Up, ButtonState.Released, Hahmohyppaa, null, hahmo);
79
80    Keyboard.Listen(Key.A, ButtonState.Down, HahmoLiikkuu, "hahmo liikkuu vasemmalle", hahmo, nopeusvasemmalle);
81    Keyboard.Listen(Key.A, ButtonState.Released, HahmoLiikkuu, null, hahmo, 0.0);
82    Keyboard.Listen(Key.D, ButtonState.Down, HahmoLiikkuu, "hahmo liikkuu oikealle", hahmo, nopeusoikealle);
83    Keyboard.Listen(Key.D, ButtonState.Released, HahmoLiikkuu, null, hahmo, 0.0);
84    Keyboard.Listen(Key.W, ButtonState.Pressed, Hahmohyppaa, "hahmo liikkuu oikealle", hahmo);
85    Keyboard.Listen(Key.W, ButtonState.Released, Hahmohyppaa, null, hahmo);   
86       
87        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, Ammu, "hahmo liikkuu oikealle");
88
89    }
90
91    void HahmoLiikkuu(PlatformCharacter hahmo, double nopeus)
92    {
93        hahmo.Walk(nopeus);
94    }
95   
96    void Hahmohyppaa(PlatformCharacter hahmo)
97    {
98        hahmo.Jump(1000);
99    }
100
101    void LuoTaso( double x, double y)
102    {
103        PhysicsObject taso = PhysicsObject.CreateStaticObject(100, 20);
104        taso.X = x;
105        taso.Y = y;
106        taso.Color = Color.Gray;
107        Add(taso);
108
109    }
110
111    void Ammu()
112    {
113        PhysicsObject panos = new PhysicsObject(6, 6);
114        panos.Color = Color.Yellow;
115        panos.Shape = Shapes.Circle;
116
117        Vector Pyssynteho = Mouse.PositionOnWorld;
118        panos.Angle = Pyssynteho.Angle;
119        Pyssynteho.X = Pyssynteho.X * 5;
120        Pyssynteho.Y = Pyssynteho.Y * 5;
121        if (Pyssynteho.X < hahmo.X)
122        {
123            panos.X = hahmo.X - 20;
124            panos.Y = hahmo.Y;
125        }
126        else 
127        {
128            panos.X = hahmo.X + 20;
129            panos.Y = hahmo.Y;
130        }
131        panos.Hit(Pyssynteho);
132        panos.IgnoresGravity = false;
133        TimeSpan elinaika = new TimeSpan(10000000);
134        panos.MaximumLifetime = elinaika;
135        AddCollisionHandler(panos, PanosOsuu);
136        Add(panos);
137    }
138    void PanosOsuu(PhysicsObject panos, PhysicsObject kohde)
139    {
140        if (kohde.Tag.ToString() != "tyyppi")
141        {
142            panos.Destroy();
143        }
144    }
145
146
147    IntMeter pisteLaskuri;
148
149    void LuoLaskuri()
150    {
151        pisteLaskuri = new IntMeter(5);
152
153        Label pisteNaytto = new Label();
154        pisteNaytto.X = Screen.Left + 100;
155        pisteNaytto.Y = Screen.Top - 100;
156        pisteNaytto.TextColor = Color.Red;
157
158        pisteNaytto.BindTo(pisteLaskuri);
159        Add(pisteNaytto);
160        Label pisteTeksti = new Label("Pisteitä: ");
161       
162        pisteTeksti.X = Screen.Left + 50;
163        pisteTeksti.Y = Screen.Top - 100;
164        pisteTeksti.TextColor = Color.Red;
165        Add(pisteTeksti);
166       
167        pisteLaskuri.Value++;
168        pisteLaskuri.Value += 1;
169        pisteLaskuri.Value = pisteLaskuri.Value + 1;
170
171        IntMeter laskuri = new IntMeter(5);
172        laskuri.MinValue = 10;
173        laskuri.LowerLimit += ElamatLoppu;
174
175    }
176
177    void ElamatLoppu(int elamat)
178    {
179
180    }
181
182}
Note: See TracBrowser for help on using the repository browser.