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

Revision 1387, 5.1 KB checked in by vematata, 10 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    PhysicsObject pallo;
13   
14
15    PhysicsObject hahmo;
16
17    protected override void Begin()
18    {
19        Testi();
20        AsetaOhjaimet();
21    }
22
23    void Testi()
24    {
25        Hahmo(0,0);
26        Kivi(45, -100, 180);
27        Kivi(50, 100, 100);
28        Kivi(200, 400, 50);
29        Puu(40, -100, 100);
30        Puu(20, -190, -20);
31       
32    }
33
34    void Hahmo(double x, double y)
35    {
36        hahmo = new PhysicsObject(40,40);
37        hahmo.Shape = Shapes.Circle;
38        hahmo.Color = Color.LightCyan;
39        hahmo.X = x;
40        hahmo.Y = y;
41        hahmo.LinearDamping = 0.5;
42        Add(hahmo);
43
44        Camera.Follow(hahmo);
45        Camera.Zoom(1.5);
46    }
47   
48    PhysicsObject Kivi(double koko, double x, double y) 
49    {
50        PhysicsObject kivi = new PhysicsObject(koko, koko, Shapes.Circle);
51        kivi.Color = Color.DarkGray;
52        kivi.X = x;
53        kivi.Y = y;
54        kivi.LinearDamping = 0.85;
55        if (koko >= 100)
56            kivi.Mass = koko * 2;
57        else
58            kivi.Mass = koko / 2;
59        Add(kivi);
60        return(kivi);
61    }
62
63    PhysicsObject Puu(double koko, double x, double y)
64    {
65        PhysicsObject runko = PhysicsObject.CreateStaticObject(koko, koko, Shapes.Circle);
66        PhysicsObject lehdet = new PhysicsObject(7*koko, 7*koko, Shapes.Circle);
67        lehdet.X = runko.X = x;
68        lehdet.Y = runko.Y = y;
69        lehdet.IgnoresCollisionResponse = true;
70        lehdet.IgnoresExplosions = true;
71        lehdet.Tag = "lehdet";
72        runko.Tag = "runko";
73        runko.Color = Color.Brown;
74        lehdet.Color = Color.ForestGreen;
75       
76        Timer Ajastin = new Timer();
77        Ajastin.Interval = 0.1;
78        Ajastin.Trigger += Lapinakyvyys;
79        Ajastin.Tag = lehdet;
80        Add(Ajastin);
81        Ajastin.Start();
82
83
84
85        Add(runko);
86        Add(lehdet);
87
88        return(runko);
89    }
90
91    void Lapinakyvyys(Timer Ajastin) 
92    {
93        PhysicsObject kohde = Ajastin.Tag as PhysicsObject;
94
95        if(kohde != null)
96        {
97            Vector etaisyys = new Vector(kohde.X - hahmo.X, kohde.Y - hahmo.Y);
98            if (etaisyys.Magnitude < (kohde.Width/2+10))
99            {
100                kohde.IsVisible = false;
101            }
102            else 
103            {
104                kohde.IsVisible = true;
105            }
106        }
107   
108    }
109
110    PhysicsObject Seina(double leveys, double pituus, double x, double y)
111    {
112        PhysicsObject seina = PhysicsObject.CreateStaticObject(leveys, pituus, Shapes.Rectangle);
113        seina.Color = Color.LightYellow;
114        seina.X = x;
115        seina.Y = y;
116        Add(seina);
117        return (seina);
118    }
119   
120    void AsetaOhjaimet()
121    {
122        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "Liiku ylös", hahmo, nopeusYlos);
123        Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, hahmo, Vector.Zero);
124        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Liiku alas", hahmo, nopeusAlas);
125        Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, hahmo, Vector.Zero);
126        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "liiku vasemmalle", hahmo, nopeusVasen);
127        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, hahmo, Vector.Zero);
128        Keyboard.Listen(Key.D, ButtonState.Down, AsetaNopeus, "Liiku oikealle", hahmo, nopeusOikea);
129        Keyboard.Listen(Key.D, ButtonState.Released, AsetaNopeus, null, hahmo, Vector.Zero);
130
131                                   
132        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
133
134        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
135
136        AsetaHiiri();
137
138    }
139
140    void AsetaHiiri()
141    {
142        pallo = new PhysicsObject(10.0, 10.0, Shapes.Circle);
143        pallo.IgnoresExplosions = pallo.IgnoresCollisionResponse = true;
144        Add(pallo);
145        //Mouse.IsCursorVisible = true;
146        Mouse.ListenMovement(0.1, KuunteleLiiketta, null);
147        Mouse.Listen(MouseButton.Left, ButtonState.Down, Teksti, null);
148        Mouse.Listen(MouseButton.Left, ButtonState.Released, Teksti2, null);
149       
150
151    }
152
153    void KuunteleLiiketta(AnalogState hiirenTila)
154    {
155        pallo.X = Mouse.PositionOnWorld.X;
156        pallo.Y = Mouse.PositionOnWorld.Y;
157    }
158
159    void Teksti() 
160    {
161       
162        Explosion rajahdys = new Explosion(20);
163        rajahdys.Position = Mouse.PositionOnWorld; 
164        rajahdys.Speed = 500.0;
165        rajahdys.Force = 1000;
166        Add(rajahdys);
167        MessageDisplay.Add("toimii");
168    }
169    void Teksti2()
170    {
171        MessageDisplay.Add("päästettiin");
172    }
173
174   // void Rajahdys()
175   // {
176
177
178   // }
179       
180    void AsetaNopeus(PhysicsObject hahmo, Vector nopeus)
181    {
182        hahmo.Velocity = nopeus;
183    }
184
185}
Note: See TracBrowser for help on using the repository browser.