source: 2010/24/Vilvaini/Tasohyppely1/Peli.cs @ 971

Revision 962, 4.4 KB checked in by vilvaini, 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 = 4000;
11
12    IntMeter pisteLaskuri;
13    ValueDisplay pisteNaytto;
14
15    PlatformCharacter pelaaja1;
16
17    int kenttaNro; // monesko kenttä on menossa
18
19
20    protected override void Begin()
21    {
22        kenttaNro = 0;
23        Level.Width = 2000;
24        Level.Height = 1000;
25
26        // Luodaan pistelaskuri
27        pisteLaskuri = new IntMeter(0);
28
29        // luodaan pistelaskunäyttö
30        pisteNaytto = new ValueDisplay();
31        pisteNaytto.Text = "Pisteitä: ";
32        pisteNaytto.X = Screen.RightSafe - 250;
33        pisteNaytto.Y = Screen.TopSafe - 50;
34        pisteNaytto.BindTo(pisteLaskuri);
35        Add(pisteNaytto);    // lisätään peliin
36
37        // Zoomataan lähemmäksi
38        Camera.ZoomFactor = 2.0;
39
40        Camera.StayInLevel = true;
41
42        seuraavaKentta();
43        MessageDisplay.Add("Etsi iso tähti!");
44    }
45
46    void seuraavaKentta()
47    {
48        ClearAll();
49        pisteLaskuri.Reset();
50
51
52        kenttaNro += 1; // lisätään kenttänumeroa yhdellä
53        MessageDisplay.Add("Kenttä " + kenttaNro);
54
55        // Asetetaan painovoima
56        Gravity = new Vector(0, -1000);
57
58        luoKentta();
59       
60        Camera.Follow(pelaaja1);
61        PlasmaCannon plasmaTykki = new PlasmaCannon(1000, 200);
62
63        pelaaja1.Weapon = new PlasmaCannon(500, 100);
64        lisaaNappaimet();
65
66    }
67
68    void luoKentta()
69    {
70        Level.CreateBorders();
71        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
72
73        lisaaTaso(-200, -350);
74        lisaaTaso(0, -200);
75
76        lisaaMaali();
77        lisaaPelaajat();
78    }
79
80    void lisaaTaso(double x, double y)
81    {
82        PhysicsObject taso = PhysicsObject.CreateStaticObject(100, 30);
83        taso.Color = Color.Green;
84        taso.X = x;
85        taso.Y = y;
86        Add(taso);
87    }
88
89    void lisaaPelaajat()
90    {
91        pelaaja1 = new PlatformCharacter(40, 40);
92        pelaaja1.Mass = 4.0;
93        pelaaja1.Image = LoadImage("norsu");
94        pelaaja1.X = 0;
95        pelaaja1.Y = Level.Bottom + 120;
96
97        AddCollisionHandler(pelaaja1, osuiMaaliin);
98
99        Add(pelaaja1);
100    }
101
102    void lisaaMaali()
103    {
104        PhysicsObject maali = PhysicsObject.CreateStaticObject(50, 50, Shapes.Circle);
105        maali.Tag = "maali";
106        maali.IgnoresCollisionResponse = true;
107        maali.X = 30;
108        maali.Y = -60;
109        maali.Image = LoadImage("tahti");
110        Add(maali);
111    }
112
113    void lisaaNappaimet()
114    {
115        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
116        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
117
118        Keyboard.Listen(Key.Space, ButtonState.Down, pelaaja1.Weapon.Use, "Ammu");
119
120        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
121        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
122        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
123
124        lisaaGamePadNappaimet(ControllerOne);
125    }
126
127    void lisaaGamePadNappaimet(GamePad controller)
128    {
129        controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
130
131        controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
132        controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
133        controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
134    }
135
136    void liikuta(PlatformCharacter hahmo, double nopeus)
137    {
138        hahmo.Walk(nopeus);
139    }
140
141    void hyppaa(PlatformCharacter hahmo, double voima)
142    {
143        hahmo.Jump(voima);
144    }
145
146    void osuiMaaliin(PhysicsObject collidingObject, PhysicsObject otherObject)
147    {
148        if (otherObject.Tag.ToString() == "maali")
149        {
150            this.PlaySound("maali");
151            int edellisenKentanPisteet = pisteLaskuri.Value;
152            seuraavaKentta();
153            MessageDisplay.Add("Pääsit läpi kentän " + kenttaNro + ". Pisteitä: " + edellisenKentanPisteet);
154        }
155    }
156}
Note: See TracBrowser for help on using the repository browser.