source: 2011/31/MaijaH/Smiley/Smiley/Peli.cs @ 2523

Revision 2523, 5.7 KB checked in by matehaat, 10 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Peli : PhysicsGame
10{
11
12   
13    const double nopeus = 200;
14    const double hyppyNopeus = 1000;
15    const int RUUDUN_KOKO = 40;
16
17    PlatformCharacter pelaaja1;
18
19    Image maaliKuva = LoadImage("Maali");
20    Image pelaajanKuva = LoadImage("Smiley");
21    Image tahtiKuva = LoadImage("tahti");
22
23    SoundEffect maaliAani = LoadSoundEffect("maaliAani");
24
25    PhysicsObject KentanAlaReuna;
26
27    int kenttaNro = 1;
28
29    public override void Begin()
30    { 
31        SeuraavaKentta(kenttaNro);
32        Gravity = new Vector(0, -1000);
33
34        lisaaNappaimet();
35
36        Camera.Follow(pelaaja1);
37        Camera.ZoomFactor = 1.2;
38        Camera.StayInLevel = true;
39    }
40
41    void luoKentta(string kenttaTiedostonNimi)
42    {
43        TileMap kentta = TileMap.FromLevelAsset(kenttaTiedostonNimi);
44        kentta.SetTileMethod('T', luoMaali);
45        kentta.SetTileMethod('n', lisaaNakymatonTaso);
46        kentta.SetTileMethod('#', lisaaTaso);
47        kentta.SetTileMethod('m', lisaaLiikkuvaTaso);
48        kentta.SetTileMethod('*', lisaaTahti);
49        kentta.SetTileMethod('N', lisaaPelaaja);
50        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
51        Level.CreateBorders();
52        KentanAlaReuna = Level.CreateBottomBorder();
53        Level.Background.CreateGradient(Color.SkyBlue, Color.SkyBlue);
54    }
55    void lisaaNakymatonTaso(Vector paikka, double leveys, double korkeus)
56    {
57        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
58        taso.Position = paikka;
59        taso.Color = Color.Blue;
60        taso.IsVisible = false;
61        taso.Tag = "nakymaton";
62        Add(taso);
63    }
64    void lisaaTaso(Vector paikka, double leveys, double korkeus)
65    {
66        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
67        taso.Position = paikka;
68        taso.Color = Color.Green;
69        taso.Tag = "taso";
70        Add(taso);
71    }
72   
73    void lisaaLiikkuvaTaso(Vector paikka, double leveys, double korkeus)
74    {
75//        PhysicsObject taso = PhysicsObject.CreateStaticObject(3*leveys, korkeus);
76        PhysicsObject taso = new PhysicsObject(3 * leveys, korkeus);
77        taso.Mass = 99999999999999999;
78        taso.CanRotate = false;
79        taso.Velocity = (new Vector(-100, 0));
80        taso.IgnoresGravity = true;
81        taso.Position = paikka;
82        taso.Color = Color.Red;
83        Add(taso);
84        AddCollisionHandler (taso, KasitteleTasonTormays);
85    }
86    void KasitteleTasonTormays (PhysicsObject taso, PhysicsObject kohde)
87    {
88        if (kohde.Tag.ToString() == "nakymaton" || kohde.Tag.ToString() == "taso")
89        {
90            if (taso.Velocity.X < 0)
91                taso.Velocity = (new Vector(100, 0));
92            else
93                taso.Velocity = (new Vector(-100, 0));
94        }
95   
96    }
97    void lisaaTahti(Vector paikka, double leveys, double korkeus)
98    {
99        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
100        tahti.IgnoresCollisionResponse = true;
101        tahti.Position = paikka;
102        tahti.Image = tahtiKuva;
103        tahti.Tag = "tahti";
104        Add(tahti);
105    }
106
107    void lisaaPelaaja(Vector paikka, double leveys, double korkeus)
108    {
109        pelaaja1 = new PlatformCharacter(leveys, korkeus);
110        pelaaja1.Position = paikka;
111        pelaaja1.Mass = 4.0;
112        pelaaja1.Image = pelaajanKuva;
113        AddCollisionHandler(pelaaja1, kasittelePelaajanTormays);
114        Add(pelaaja1);
115    }
116
117    void lisaaNappaimet()
118    {
119        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
120        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
121
122        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
123        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
124        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
125
126        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
127
128        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
129        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
130        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
131    }
132
133    void liikuta(PlatformCharacter hahmo, double nopeus)
134    {
135        hahmo.Walk(nopeus);
136    }
137
138    void hyppaa(PlatformCharacter hahmo, double nopeus)
139    {
140        hahmo.Jump(nopeus);
141    }
142
143    void kasittelePelaajanTormays(PhysicsObject hahmo, PhysicsObject kohde)
144    {
145        if (kohde.Tag.ToString() == "tahti")
146        {
147            maaliAani.Play();
148            kohde.Destroy();
149        }
150        if (kohde == KentanAlaReuna)
151        {
152            hahmo.Destroy();
153        }
154    }
155   
156   
157
158    void SeuraavaKentta(int kenttaNro)
159    {
160        ClearAll();
161
162        if (kenttaNro == 1) luoKentta("kentta1");
163        else if (kenttaNro == 2) luoKentta("kentta2");
164        else if (kenttaNro == 3) luoKentta("kentta3");
165
166    }
167    void luoMaali(Vector paikka, double leveys, double korkeus)
168    {
169        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
170        maali.Position = paikka;
171        maali.Color = Color.Black;
172        maali.Tag = "maali";
173        Add(maali);
174        maali.Image = maaliKuva;
175    }
176 
177}
178   
179   
Note: See TracBrowser for help on using the repository browser.