source: 2011/26/OssiV/tasohyppely.cs @ 2271

Revision 2271, 6.3 KB checked in by osmavanh, 12 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Peli : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 1000;
13    const int RUUDUN_KOKO = 40;
14    IntMeter pisteet;
15
16    PlatformCharacter pelaaja1;
17    PlatformCharacter pelaaja2;
18    // pelaajien kuvat
19    Image pelaajanKuva = LoadImage("peliukko1");
20    Image pelaajan2Kuva = LoadImage("peliukko2parempi");
21    Image tahtiKuva = LoadImage("raha");
22    Image tahtiKuva2 = LoadImage("musta neliö");
23    Image pahiksenKuva = LoadImage("pahis");
24
25    SoundEffect maaliAani = LoadSoundEffect("maali");
26
27    public override void Begin()
28    {
29
30        Gravity = new Vector(0, -1000);
31
32
33        luoKentta();
34        lisaaNappaimet();
35
36
37
38
39        Camera.Follow(pelaaja1);
40        Camera.ZoomFactor = 1.2;
41        Camera.StayInLevel = true;
42    }
43
44    void luoKentta()
45    {
46        TileMap kentta = TileMap.FromFile("kentta1.txt");
47        kentta['='] = lisaaHaivePalikka;
48        kentta['#'] = lisaaTaso;
49        kentta['*'] = lisaaTahti;
50        kentta['N'] = lisaaPelaaja;
51        kentta['M'] = lisaaPelaaja2;
52        kentta['V'] = lisaaPahis;
53        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
54        Level.CreateBorders();
55        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
56    }
57
58    PhysicsObject lisaaTaso()
59    {
60        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
61        taso.Color = Color.Black;
62        return taso;
63    }
64
65    PhysicsObject lisaaTahti()
66    {
67        PhysicsObject tahti = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
68        tahti.Image = tahtiKuva;
69        tahti.Tag = "tahti";
70        return tahti;
71    }
72
73    PlatformCharacter lisaaPelaaja()
74    {
75        pelaaja1 = new PlatformCharacter(40, 40);
76        pelaaja1.Mass = 4.0;
77        pelaaja1.Tag = "pelaaja";
78        pelaaja1.Shape = Shape.Circle;
79        pelaaja1.Image = pelaajanKuva;
80        AddCollisionHandler(pelaaja1, osuTahteen);
81        AddCollisionHandler(pelaaja1, osuHaivePalikkaan);
82        return pelaaja1;
83    }
84
85    void lisaaNappaimet()
86    {
87        // Komennot
88        Keyboard.Listen(Key.R, ButtonState.Released, AloitaAlusta, "aloita alusta");
89
90        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
91        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
92        // pelaaja1 ohjaimet
93        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
94        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
95        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
96
97        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
98
99        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
100        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
101        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
102        // Pelaaja2 ohjaimet
103        Keyboard.Listen(Key.A, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
104        Keyboard.Listen(Key.D, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja2, nopeus);
105        Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Pelaaja2 hyppää", pelaaja2, hyppyNopeus);
106
107    }
108
109    void liikuta(PlatformCharacter hahmo, double nopeus)
110    {
111        hahmo.Walk(nopeus);
112    }
113
114    void hyppaa(PlatformCharacter hahmo, double nopeus)
115    {
116        hahmo.Jump(nopeus);
117    }
118
119    void osuTahteen(PhysicsObject hahmo, PhysicsObject kohde)
120    {
121        if (kohde.Tag.ToString() == "tahti")
122        {
123            maaliAani.Play();
124            MessageDisplay.Add("Sait pisteen!");
125            kohde.Destroy();
126
127
128
129        }
130    }
131
132    PlatformCharacter lisaaPelaaja2()
133    {
134        pelaaja2 = new PlatformCharacter(40, 40);
135        pelaaja2.Shape = Shape.Circle;
136        pelaaja2.Mass = 4.0;
137        pelaaja2.Tag = "pelaaja";
138        pelaaja2.Image = pelaajan2Kuva;
139        AddCollisionHandler(pelaaja2, osuTahteen);
140
141        AddCollisionHandler(pelaaja2, osuHaivePalikkaan);
142        return pelaaja2;
143    }
144    void AloitaAlusta()
145    {
146        ClearAll();
147
148
149        Begin();
150
151
152    }
153
154    IntMeter LuoPisteLaskuri(double x, double y)
155    {
156        IntMeter laskuri = new IntMeter(0);
157        laskuri.MaxValue = 10;
158        Label naytto = new Label();
159        naytto.BindTo(laskuri);
160        naytto.X = x;
161        naytto.Y = y;
162        naytto.TextColor = Color.White;
163        naytto.BorderColor = Level.BackgroundColor;
164        naytto.Color = Level.BackgroundColor;
165        Add(naytto);
166        return laskuri;
167
168
169
170    }
171    void LisaaLaskurit()
172    {
173        pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0);
174
175    }
176    PhysicsObject lisaaHaivePalikka()
177    {
178 
179        PhysicsObject tahti = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
180        tahti.Image = tahtiKuva2;
181        tahti.Tag = "musta neliö";
182        return tahti;
183
184
185    }
186    void osuHaivePalikkaan(PhysicsObject hahmo, PhysicsObject haivePalikka)
187    {
188        if (haivePalikka.Tag.ToString() == "musta neliö")
189        {
190
191
192            haivePalikka.Destroy();
193
194
195        }
196    }
197         PhysicsObject lisaaPahis()
198        {
199            PhysicsObject pahis = new PhysicsObject(60, 60);
200            pahis.Mass = 10.0;
201            pahis.Shape = Shape.Circle;
202            pahis.Image = pahiksenKuva;
203           
204
205
206            TagFollowerBrain pahiksenAivot = new TagFollowerBrain("pelaaja", 50);
207           
208            pahiksenAivot.Active = true;
209            pahiksenAivot.TargetFollowDistance = 600;
210            pahiksenAivot.Speed = 4000;
211            //pahiksenAivot.TargetCloseDistance = 20;
212 
213           
214
215
216            //pahiksenAivot.StopWhenTargetClose = true;
217            pahis.Brain = pahiksenAivot;
218
219
220            Add (pahis);
221            return (pahis);
222             
223
224
225}
226}
227
Note: See TracBrowser for help on using the repository browser.