source: 2010/24/joaamaka/The hole/Peli.cs @ 868

Revision 868, 4.4 KB checked in by joaamaka, 11 years ago (diff)

Tein omaa peliä.

Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5
6
7class Tasohyppely : PhysicsGame
8{
9    const double nopeus = 1000;
10    const double hyppyVoima = 20000;
11
12    IntMeter pisteLaskuri;
13    ValueDisplay pisteNaytto;
14
15    PhysicsObject olio;
16    PhysicsObject olio2;
17
18    int kenttaNro; // monesko kenttä on menossa
19
20
21    protected override void Begin()
22    {
23        kenttaNro = 0;
24        Level.Width = 1500;
25        Level.Height = 1000;
26
27        // Luodaan pistelaskuri
28        pisteLaskuri = new IntMeter(0);
29
30        // luodaan pistelaskunäyttö
31        pisteNaytto = new ValueDisplay();
32        pisteNaytto.Text = "Pisteitä: ";
33        pisteNaytto.X = Screen.RightSafe - 250;
34        pisteNaytto.Y = Screen.TopSafe - 50;
35        pisteNaytto.BindTo(pisteLaskuri);
36        Add(pisteNaytto);    // lisätään peliin
37
38        // Zoomataan lähemmäksi
39        Camera.ZoomFactor = 2.0;
40
41        Camera.StayInLevel = true;
42
43        seuraavaKentta();
44        MessageDisplay.Add("Etsi iso tähti!");
45    }
46
47    void seuraavaKentta()
48    {
49        ClearAll();
50        pisteLaskuri.Reset();
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        lisaaNappaimet();
60        Camera.Follow(olio);
61    }
62
63    void luoKentta()
64    {
65        Level.CreateBorders();
66        Level.Background.CreateGradient(Color.Yellow, Color.Green);
67
68        lisaaTaso(-200, -350);
69        lisaaTaso(0, -200);
70
71        lisaaMaali();
72        lisaaPelaajat();
73    }
74
75    void lisaaTaso(double x, double y)
76    {
77        PhysicsObject taso = PhysicsObject.CreateStaticObject(150, 30);
78        taso.Color= Color.Red;
79        taso.X = x;
80        taso.Y = y;
81        Add(taso);
82    }
83
84    void lisaaPelaajat()
85    {
86        olio = new PhysicsObject(40, 34.64);
87        olio.Shape = Shapes.Rectangle;
88        olio.Color = Color.Black;
89        olio.Size = new Vector(40, 40);
90        olio.X = -50;
91
92        AddCollisionHandler(olio, osuiMaaliin);
93
94        Add(olio);
95
96        olio2 = new PhysicsObject(40, 40);
97        olio2.Shape = Shapes.Triangle;
98        olio2.Color = Color.Black;
99        olio2.Size = new Vector(40, 40);
100        olio2.X = -60;
101
102        AddCollisionHandler(olio2, osuiMaaliin);
103
104        Add(olio2);
105    }
106
107    void lisaaPiikit()
108    {
109        PhysicsObject piikit = new PhysicsObject(50, 50, Shapes.Rectangle);
110        piikit.X = 100;
111        piikit.Y = 50;
112        piikit.Image = LoadImage("Spikes");
113        Add(piikit);
114    }
115
116    void lisaaMaali()
117    {
118        PhysicsObject maali = PhysicsObject.CreateStaticObject(50, 50, Shapes.Circle);
119        maali.Tag = "maali";
120        maali.IgnoresCollisionResponse = true;
121        maali.X = 30;
122        maali.Y = -60;
123        maali.Image = LoadImage("tahti");
124        Add(maali);
125    }
126
127    void lisaaNappaimet()
128    {
129        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
130        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
131
132        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", olio, -nopeus);
133        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", olio, nopeus);
134        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", olio, hyppyVoima);
135
136        Keyboard.Listen(Key.A, ButtonState.Down, liikuta, "Liikkuu vasemmalle", olio2, -nopeus);
137        Keyboard.Listen(Key.D, ButtonState.Down, liikuta, "Liikkuu oikealle", olio2, nopeus);
138        Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Hyppää", olio2, hyppyVoima);
139    }
140
141
142    void liikuta(PhysicsObject hahmo, double nopeus)
143    {
144        hahmo.Push(new Vector (nopeus, 0));
145    }
146
147    void hyppaa(PhysicsObject hahmo, double voima)
148    {
149        hahmo.Push(new Vector (0, voima));
150    }
151
152    void osuiMaaliin(PhysicsObject collidingObject, PhysicsObject otherObject)
153    {
154        if (otherObject.Tag.ToString() == "maali")
155        {
156            this.PlaySound("maali");
157            int edellisenKentanPisteet = pisteLaskuri.Value;
158            seuraavaKentta();
159            MessageDisplay.Add("Pääsit läpi kentän " + kenttaNro + ". Pisteitä: " + edellisenKentanPisteet);
160        }
161    }
162}
Note: See TracBrowser for help on using the repository browser.