source: 2010/24/malaleht/Tasohyppely1/Peli.cs @ 901

Revision 901, 5.5 KB checked in by malaleht, 11 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5
6
7class Tasohyppely : PhysicsGame
8{
9    const double nopeus = 200;
10    const double hyppyVoima = 15000;
11
12    IntMeter pisteLaskuri;
13    ValueDisplay pisteNaytto;
14
15    PlatformCharacter pelaaja2;
16    PlatformCharacter pelaaja1;
17
18    int kenttaNro; // monesko kenttä on menossa
19
20
21    protected override void Begin()
22    {
23        kenttaNro = 1;
24        Level.Width = 1800;
25        Level.Height = 1100;
26
27        // Luodaan pistelaskuri
28        pisteLaskuri = new IntMeter(0);
29
30        // luodaan pistelaskunäyttö
31        pisteNaytto = new ValueDisplay();
32        pisteNaytto.Text = "Pisteitä: ";
33        pisteNaytto.X = Screen.RightSafe - 1000;
34        pisteNaytto.Y = Screen.TopSafe - 1000;
35        pisteNaytto.BindTo(pisteLaskuri);
36        Add(pisteNaytto);    // lisätään peliin
37
38        // Zoomataan lähemmäksi
39        Camera.ZoomFactor = 0.8;
40
41        Camera.StayInLevel = false;
42
43        seuraavaKentta();
44        MessageDisplay.Add("Etsi iso tähti!");
45    }
46
47    void seuraavaKentta()
48
49    {
50
51        ClearAll();
52        pisteLaskuri.Reset();
53
54        kenttaNro += 1; // lisätään kenttänumeroa yhdellä
55        MessageDisplay.Add("Kenttä " + kenttaNro);
56
57        // Asetetaan painovoima
58        Gravity = new Vector(0, -2000);
59
60        luoKentta();
61        lisaaNappaimet();
62       
63    }
64
65    void luoKentta()
66    { 
67        Level.CreateBorders();
68        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
69
70        for (int i = 0; i < 200; i = i + 9)
71        {
72
73            lisaataso(RandomGen.NextInt(-900, 900), RandomGen.NextInt(-550, 550));
74           
75
76        }
77
78        lisaaMaali(RandomGen.NextInt(-900,900),RandomGen.NextInt (-550,550));
79        lisaaPelaajat();
80    }
81
82    void lisaataso (double x, double y)
83    {
84        PhysicsObject taso = PhysicsObject.CreateStaticObject(100, 30);
85        taso.Color = Color.DarkViolet;
86        taso.X = x;
87        taso.Y = y;
88        Add(taso);
89    }
90
91    void lisaaPelaajat()
92    {
93       
94
95       
96
97
98
99
100        pelaaja2 = new PlatformCharacter(60, 80);
101        pelaaja2.Mass = 10.0;
102        pelaaja2.Image = LoadImage("untitled");
103        AddCollisionHandler(pelaaja2, osuiMaaliin);
104        Add(pelaaja2);
105
106
107        AssaultRifle pyssy = new AssaultRifle(20, 5);
108        pyssy.Ammo.Value = 500;
109        pelaaja2.Weapon = new AssaultRifle(100, 40);
110       
111
112       
113
114        pelaaja1 = new PlatformCharacter(60, 80);
115        pelaaja1.Mass = 10.0;
116        pelaaja1.Image = LoadImage("norsu");
117        pelaaja1.X = 0;
118        pelaaja1.Y = Level.Bottom + 120;
119
120        PlasmaCannon tykki = new PlasmaCannon(20, 5);
121        pyssy.Ammo.Value = 500;
122        pelaaja1.Weapon = new PlasmaCannon(100, 40);
123       
124        AddCollisionHandler(pelaaja1, osuiMaaliin);
125       
126
127
128        Add(pelaaja1);
129    }   
130
131    void lisaaMaali(double x, double y)
132    {
133        PhysicsObject maali = PhysicsObject.CreateStaticObject(50, 50, Shapes.Circle);
134        maali.Tag = "maali";
135        maali.IgnoresCollisionResponse = true;
136        maali.Image = LoadImage("tahti");
137        maali.Position = new Vector(x, y);
138       
139        Add(maali);
140     
141    }
142
143    void lisaaNappaimet()
144
145    {
146 
147
148        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
149        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
150
151        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
152        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
153        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
154
155        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
156        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
157
158
159        Keyboard.Listen(Key.A, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
160        Keyboard.Listen(Key.D, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja2, nopeus);
161        Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja2, hyppyVoima);
162
163        Keyboard.Listen(Key.Space, ButtonState.
164
165
166
167
168
169
170        lisaaGamePadNappaimet(ControllerOne);
171    }
172
173    void lisaaGamePadNappaimet(GamePad controller)
174    {
175        controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
176
177        controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
178        controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
179        controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
180    }
181
182    void liikuta(PlatformCharacter hahmo, double nopeus)
183    {
184        hahmo.Walk(nopeus);
185    }
186
187    void hyppaa(PlatformCharacter hahmo, double voima)
188    {
189        hahmo.Jump(voima);
190    }
191
192    void osuiMaaliin(PhysicsObject collidingObject, PhysicsObject otherObject)
193    {
194        if (otherObject.Tag.ToString() == "maali")
195        {
196            this.PlaySound("maali");
197            int edellisenKentanPisteet = pisteLaskuri.Value;
198            seuraavaKentta();
199            MessageDisplay.Add("Pääsit läpi kentän " + kenttaNro + ". Pisteitä: " + edellisenKentanPisteet);
200        }
201    }
202}
Note: See TracBrowser for help on using the repository browser.