source: 2010/24/Vilvaini/Smile Jump/Peli.cs @ 870

Revision 870, 5.9 KB checked in by vilvaini, 10 years ago (diff)

Smile Jumpista on tehty molemmat pelaajat, noin 35% tasosysteemistä, tekstuurit on lisätty, kamera-asetukset tehty ja joitain pikkuasioita on tehty.

Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5
6
7class Tasohyppely : PhysicsGame
8{
9    const double nopeus = 300;
10    const double tasokorkeus = 0;
11    const double hyppyVoima = 4000;
12
13    Timer aikaLaskuri;          // laskee aikaa
14
15    IntMeter pisteLaskuri;
16    ValueDisplay pisteNaytto;
17
18    PlatformCharacter pelaaja1;
19    PlatformCharacter pelaaja2;
20
21    int kenttaNro; // monesko kenttä on menossa
22
23    private void aikaLoppui(Timer sender)
24    {
25        // täydennä: mitä tapahtuu, kun aika loppui
26        lisaaTaso(RandomGen.NextInt(-150, 100), Level.Bottom + 150);
27        const double tasokorkeus = tasokorkeus + 200;
28        aikaLaskuri.Reset();  // nollataan aikalaskuri oletusarvoonsa, joka oli 0.
29    }
30
31    protected override void Begin()
32    {
33
34        kenttaNro = 0;
35        Level.Width = 1024;
36        Level.Height = 5000;
37
38        // Luodaan pistelaskuri
39        pisteLaskuri = new IntMeter(0);
40
41        // luodaan pistelaskunäyttö
42        pisteNaytto = new ValueDisplay();
43        pisteNaytto.Text = "Pisteitä: ";
44        pisteNaytto.X = Screen.RightSafe - 250;
45        pisteNaytto.Y = Screen.TopSafe - 50;
46        pisteNaytto.BindTo(pisteLaskuri);
47        Add(pisteNaytto);    // lisätään peliin
48
49        // Zoomataan lähemmäksi
50        //Camera.ZoomFactor = 2.0;
51
52        Camera.StayInLevel = true;
53
54        seuraavaKentta();
55        MessageDisplay.Add("Pompi pidemmälle kuin toinen pelaaja!");
56
57        aikaLaskuri = new Timer();                     // luodaan uusi ajastin, nimeltä aikaLaskuri
58        aikaLaskuri.Interval = 0.1;                      // ajastukseksi 5 sekuntia
59        aikaLaskuri.Trigger += new Timer.TriggerHandler(aikaLoppui);  //   // asetetaan tapahtuma, kun aikaLaskuri kun 5 sekuntia on kulunut.
60        Add(aikaLaskuri);                       // lisätään aikaLaskuri peliin
61        aikaLaskuri.Start();                           // käynnistetään aikaLaskuri
62    }
63
64    void seuraavaKentta()
65    {
66        ClearAll();
67        pisteLaskuri.Reset();
68
69        kenttaNro += 1; // lisätään kenttänumeroa yhdellä
70        MessageDisplay.Add("Kenttä " + kenttaNro);
71
72        // Asetetaan painovoima
73        Gravity = new Vector(0, -600);
74
75        luoKentta();
76        lisaaNappaimet();
77       
78    }
79
80    void luoKentta()
81    {
82        Level.CreateBorders(1, true); // Miksei reunat näy?
83        Level.Background.CreateGradient(Color.Beige, Color.Wheat);
84
85        lisaaTaso(RandomGen.NextInt(-150, 100), Level.Bottom + 150);
86        lisaaTaso(RandomGen.NextInt(-50, 200), Level.Bottom + 300);
87        lisaaTaso(RandomGen.NextInt(-100, 350), Level.Bottom + 450);
88        lisaaTaso(RandomGen.NextInt(-250, 400), Level.Bottom + 600);
89        lisaaTaso(RandomGen.NextInt(-450, 500), Level.Bottom + 750);
90        lisaaTaso(RandomGen.NextInt(-550, 400), Level.Bottom + 900);
91        lisaaTaso(RandomGen.NextInt(-350, 600), Level.Bottom + 1050);
92
93        lisaaMaali();
94        lisaaPelaajat();
95    }
96
97    void lisaaTaso(double x, double y)
98    {
99        PhysicsObject taso = PhysicsObject.CreateStaticObject(150, 30);
100        taso.Color = Color.Green;
101        taso.X = x;
102        taso.Y = y;
103        Add(taso);
104    }
105
106    void lisaaPelaajat()
107    {
108        pelaaja1 = new PlatformCharacter(40, 40);
109        pelaaja1.Mass = 4.0;
110        pelaaja1.Image = LoadImage("smile jump(keltainen pelaaja)");
111        pelaaja1.X = 0;
112        pelaaja1.Y = Level.Bottom + 120;
113
114        pelaaja2 = new PlatformCharacter(40, 40);
115        pelaaja2.Mass = 4.0;
116        pelaaja2.Image = LoadImage("smile jump (vihreä pelaaja)");
117        pelaaja2.X = 50;
118        pelaaja2.Y = Level.Bottom + 120;
119
120        Add(pelaaja1); 
121        Add(pelaaja2);
122    }
123
124    void lisaaMaali()
125    {
126        PhysicsObject maali = PhysicsObject.CreateStaticObject(50, 50, Shapes.Circle);
127        maali.Tag = "maali";
128        maali.IgnoresCollisionResponse = true;
129        maali.X = 30;
130        maali.Y = -60;
131        maali.Image = LoadImage("tahti");
132        Add(maali);
133    }
134
135    void lisaaNappaimet()
136    {
137        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
138        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
139
140        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
141        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
142        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
143
144        Keyboard.Listen(Key.A, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
145        Keyboard.Listen(Key.D, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja2, nopeus);
146        Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja2, hyppyVoima);
147
148        lisaaGamePadNappaimet(ControllerOne);
149    }
150
151    void lisaaGamePadNappaimet(GamePad controller)
152    {
153        controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
154
155        controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
156        controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
157        controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
158    }
159
160    void liikuta(PlatformCharacter hahmo, double nopeus)
161    {
162        hahmo.Walk(nopeus);
163    }
164
165    void hyppaa(PlatformCharacter hahmo, double voima)
166    {
167        hahmo.Jump(voima);
168    }
169
170
171    protected override void Update(Time time)
172    {
173        if (pelaaja1.Y > pelaaja2.Y)
174        {
175            Camera.Follow(pelaaja1);
176        }
177        else
178        {
179            Camera.Follow(pelaaja2);
180        }
181        base.Update(time);
182       
183    }
184}
Note: See TracBrowser for help on using the repository browser.