source: 2010/30/vematata/SeikailuRoolipeli/Peli.cs @ 1358

Revision 1358, 3.9 KB checked in by vematata, 11 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5
6public class Peli : PhysicsGame
7{
8    Vector nopeusYlos = new Vector(0, 300);
9    Vector nopeusAlas = new Vector(0, -300);
10    Vector nopeusVasen = new Vector(-300, 0);
11    Vector nopeusOikea = new Vector(300, 0);
12    Vector paikkaRuudulla = Mouse.PositionOnScreen;
13
14    PhysicsObject hahmo;
15
16    protected override void Begin()
17    {
18        Testi();
19        AsetaOhjaimet();
20    }
21
22    void Testi()
23    {
24        Hahmo(0, 0);
25        Kivi(30, -200, -300);
26        Kivi(60, 100, 300);
27        Puu(20, 100, -400);
28        Seina(50, 10, 30, 30);
29        Seina(50, 10, 30, -30);
30        Puu(50, -100, -200);
31
32
33    }
34
35    void Hahmo(double x, double y)
36    {
37        hahmo = new PhysicsObject(40,40);
38        hahmo.Shape = Shapes.Circle;
39        hahmo.Color = Color.Pink;
40        hahmo.X = x;
41        hahmo.Y = y;
42        hahmo.LinearDamping = 0.5;
43        Add(hahmo);
44
45        Camera.Follow(hahmo);
46    }
47   
48    PhysicsObject Kivi(double koko, double x, double y) 
49    {
50        PhysicsObject kivi = PhysicsObject.CreateStaticObject(koko, koko, Shapes.Circle);
51        kivi.Color = Color.DarkGray;
52        kivi.X = x;
53        kivi.Y = y;
54        Add(kivi);
55        return(kivi);
56    }
57
58    PhysicsObject Puu(double koko, double x, double y)
59    {
60        PhysicsObject runko = PhysicsObject.CreateStaticObject(koko, koko, Shapes.Circle);
61        PhysicsObject lehdet = new PhysicsObject(7*koko, 7*koko, Shapes.Circle);
62        lehdet.X = runko.X = x;
63        lehdet.Y = runko.Y = y;
64        lehdet.IgnoresCollisionResponse = true;
65        lehdet.Tag = "lehdet";
66        runko.Tag = "runko";
67        runko.Color = Color.Brown;
68        lehdet.Color = Color.ForestGreen;
69       
70        Timer Ajastin = new Timer();
71        Ajastin.Interval = 0.1;
72        Ajastin.Trigger += Lapinakyvyys;
73        Ajastin.Tag = lehdet;
74        Add(Ajastin);
75        Ajastin.Start();
76
77
78
79        Add(runko);
80        Add(lehdet);
81
82        return(runko);
83    }
84
85    void Lapinakyvyys(Timer Ajastin) 
86    {
87        PhysicsObject kohde = Ajastin.Tag as PhysicsObject;
88
89        if(kohde != null)
90        {
91            Vector etaisyys = new Vector(kohde.X - hahmo.X, kohde.Y - hahmo.Y);
92            if (etaisyys.Magnitude < (kohde.Width/2+10))
93            {
94                kohde.IsVisible = false;
95            }
96            else 
97            {
98                kohde.IsVisible = true;
99            }
100        }
101   
102    }
103
104    PhysicsObject Seina(double leveys, double pituus, double x, double y)
105    {
106        PhysicsObject seina = PhysicsObject.CreateStaticObject(leveys, pituus, Shapes.Rectangle);
107        seina.Color = Color.LightYellow;
108        seina.X = x;
109        seina.Y = y;
110        Add(seina);
111        return (seina);
112    }
113   
114    void AsetaOhjaimet()
115    {
116        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "Liiku ylös", hahmo, nopeusYlos);
117        Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, hahmo, Vector.Zero);
118        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Liiku alas", hahmo, nopeusAlas);
119        Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, hahmo, Vector.Zero);
120        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "liiku vasemmalle", hahmo, nopeusVasen);
121        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, hahmo, Vector.Zero);
122        Keyboard.Listen(Key.D, ButtonState.Down, AsetaNopeus, "Liiku oikealle", hahmo, nopeusOikea);
123        Keyboard.Listen(Key.D, ButtonState.Released, AsetaNopeus, null, hahmo, Vector.Zero);
124
125                                   
126        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
127
128        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
129
130    }
131
132    void AsetaNopeus(PhysicsObject hahmo, Vector nopeus)
133    {
134        hahmo.Velocity = nopeus;
135    }
136
137}
Note: See TracBrowser for help on using the repository browser.