source: 2010/23/almiilhi/Tasohyppely2/Peli.cs @ 638

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