source: 2010/23/johanh/Tasohyppely1/Peli.cs @ 632

Revision 632, 5.3 KB checked in by paaaanro, 12 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5
6
7namespace Tasohyppely1
8{
9    class Tasohyppely : PhysicsGame
10    {
11        const double nopeus = 555;
12        const double hyppyVoima = 4000;
13
14        IntMeter pisteLaskuri;
15        ValueDisplay pisteNaytto;
16
17        PlatformCharacter pelaaja1;
18
19        int kenttaNro; // monesko kenttä on menossa
20       
21
22
23        protected override void Begin()
24        {
25            kenttaNro = 0;
26            Level.Width = 2000;
27            Level.Height = 1000;
28
29            // Luodaan pistelaskuri
30            pisteLaskuri = new IntMeter(0);
31
32            // luodaan pistelaskunäyttö
33            pisteNaytto = new ValueDisplay();
34            pisteNaytto.Text = "Pisteitä: ";
35            pisteNaytto.X = Screen.RightSafe - 250;
36            pisteNaytto.Y = Screen.TopSafe - 50;
37            pisteNaytto.BindTo(pisteLaskuri);
38            Add(pisteNaytto);    // lisätään peliin
39
40            // Zoomataan lähemmäksi
41            Camera.ZoomFactor = 1.75;
42
43            Camera.StayInLevel = true;
44
45            seuraavaKentta();
46            MessageDisplay.Add("Etsi iso tähti!");
47        }
48
49        void seuraavaKentta()
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, -900);
59
60            luoKentta();
61            lisaaNappaimet();
62            Camera.Follow(pelaaja1);
63        }
64
65        void luoKentta()
66        {
67            Level.CreateBorders();
68            Level.Background.CreateGradient(Color.White, Color.SkyBlue);
69
70            lisaaTaso(-200, -350);
71            lisaaTaso(0, -200);
72            lisaaTaso(0, -250);
73            lisaaTaso(100, 500);
74            lisaaTaso(0, 700);
75            lisaaTaso(0, 900);
76
77            lisaaMaali();
78            lisaaPelaajat();
79        }
80
81        void lisaaTaso(double x, double y)
82        {
83            PhysicsObject taso = PhysicsObject.CreateStaticObject(350, 100);
84            taso.Color = Color.Blue;
85            taso.X = x;
86            taso.Y = y;
87            Add(taso);
88        }
89
90        void lisaaPelaajat()
91        {
92            pelaaja1 = new PlatformCharacter(50, 50);
93            pelaaja1.Mass = 4.0;
94            pelaaja1.Image = LoadImage("Ukko");
95            pelaaja1.X = 0;
96            pelaaja1.Y = Level.Bottom + 120;
97            Image[] tekstuurit = LoadImages("Ukko2");
98            Animation kavelyTekstuuri = new Animation(tekstuurit);
99
100            pelaaja1.LeftWalkingAnimation = kavelyTekstuuri;
101            pelaaja1.RightWalkingAnimation = Animation.Mirror(kavelyTekstuuri);
102            AssaultRifle pyssy = new AssaultRifle(20, 5);
103            pyssy.Ammo.Value = 500;
104         
105
106            pelaaja1.Add(pyssy);
107
108       
109
110
111
112            AddCollisionHandler(pelaaja1, osuiMaaliin);
113
114            Add(pelaaja1);
115        }
116
117        void lisaaMaali()
118        {
119            PhysicsObject maali = PhysicsObject.CreateStaticObject(50, 50, Shapes.Circle);
120            maali.Tag = "maali";
121            maali.IgnoresCollisionResponse = true;
122            maali.X = 750;
123            maali.Y = -60;
124            maali.Image = LoadImage("tahti");
125            Add(maali);
126        }
127
128        void lisaaNappaimet()
129        {
130            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
131            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
132
133            Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
134            Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
135            Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
136            Keyboard.Listen(Key.Space, ButtonState.Down, pelaaja1.Weapon.Use, "Ammu");
137
138
139            lisaaGamePadNappaimet(ControllerOne);
140        }
141
142        void lisaaGamePadNappaimet(GamePad controller)
143        {
144            controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
145
146            controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
147            controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
148            controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
149        }
150
151        void liikuta(PlatformCharacter hahmo, double nopeus)
152        {
153            hahmo.Walk(nopeus);
154        }
155
156        void hyppaa(PlatformCharacter hahmo, double voima)
157        {
158            hahmo.Jump(voima);
159        }
160
161        void osuiMaaliin(PhysicsObject collidingObject, PhysicsObject otherObject)
162        {
163            if (otherObject.Tag.ToString() == "maali")
164            {
165                this.PlaySound("maali");
166                int edellisenKentanPisteet = pisteLaskuri.Value;
167                seuraavaKentta();
168                MessageDisplay.Add("Pääsit läpi kentän " + kenttaNro + ". Pisteitä: " + edellisenKentanPisteet);
169            }
170        }
171    }
172}
Note: See TracBrowser for help on using the repository browser.