source: 2014/koodauskerho/38/JuhoJ/Lapsylintu/Lapsylintu/Lapsylintu/Lapsylintu.cs @ 5729

Revision 5729, 4.4 KB checked in by sieerinn, 6 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Lapsylintu : PhysicsGame
10{
11
12    const double hyppyNopeus = 550;
13    const int RUUDUN_KOKO = 40;
14    const double nopeus = 15000;
15
16
17    PlatformCharacter pelaaja1;
18
19    Image pelaajanKuva = LoadImage("sankari");
20    Image[] pelaajanHyppykuvat = LoadImages("sankari", "sankari2");
21    Image pelaajanKuolemakuva = LoadImage("ded");
22    Image tahtiKuva = LoadImage("kolikko");
23    Image pilvikuva = LoadImage("pilvi");
24    SoundEffect maaliAani = LoadSoundEffect("maali");
25    bool peliKaynnissa = false;
26    Timer liikutusajastin;
27
28    public override void Begin()
29    {
30        SmoothTextures = false;
31        Gravity = new Vector(0, -1000);
32
33        LuoKentta();
34        LisaaNappaimet();
35
36        Camera.Follow(pelaaja1);
37        Camera.ZoomFactor = 1.2;
38        Camera.StayInLevel = true;
39         liikutusajastin = new Timer();
40        liikutusajastin.Interval = 0.01;
41        liikutusajastin.Timeout += SiirraPelaajaaOikeammalle;
42        liikutusajastin.Start();
43        peliKaynnissa = true;
44    }
45    void SiirraPelaajaaOikeammalle()
46    {
47        pelaaja1.Push(new Vector(nopeus, 0.0));
48       
49    }
50
51    void LuoKentta()
52    {
53        TileMap kentta = TileMap.FromLevelAsset("kentta1");
54        kentta.SetTileMethod('#', LisaaTaso);
55        kentta.SetTileMethod('*', LisaaTahti);
56        kentta.SetTileMethod('L', LisaaPelaaja);
57        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
58        Level.CreateBorders();
59        Level.Background.CreateGradient(Color.White, Color.Orange);
60    }
61
62    void LisaaTaso(Vector paikka, double leveys, double korkeus)
63    {
64        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
65        taso.Position = paikka;
66        taso.Color = Color.Green;
67        taso.Image = pilvikuva;
68        taso.Tag = "seinä";
69        Add(taso);
70    }
71
72    void LisaaTahti(Vector paikka, double leveys, double korkeus)
73    {
74        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
75        tahti.IgnoresCollisionResponse = true;
76        tahti.Position = paikka;
77        tahti.Image = tahtiKuva;
78        tahti.Tag = "tahti";
79        Add(tahti);
80    }
81
82    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
83    {
84        pelaaja1 = new PlatformCharacter(leveys*2.5, korkeus*1.5);
85        pelaaja1.Position = paikka;
86        pelaaja1.Mass = 4.0;
87        pelaaja1.Image = pelaajanKuva;
88        pelaaja1.AnimJump = new Animation(pelaajanHyppykuvat);
89        pelaaja1.AnimFall = new Animation(pelaajanKuva);
90        pelaaja1.AnimJump.FPS = 7;
91        pelaaja1.IgnoresExplosions = true;
92
93        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
94        AddCollisionHandler(pelaaja1, "seinä", TormaaTasoon);
95        Add(pelaaja1);
96    }
97
98    void LisaaNappaimet()
99    {
100        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
101        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
102
103
104        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
105
106        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
107
108
109        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
110
111        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
112    }
113
114    void Liikuta(PlatformCharacter hahmo, double nopeus)
115    {
116        hahmo.Walk(nopeus);
117    }
118
119    void Hyppaa(PlatformCharacter hahmo, double nopeus)
120    {
121        hahmo.ForceJump(nopeus);
122    }
123
124    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
125    {
126        maaliAani.Play();
127        MessageDisplay.Add("On sulla taskut massii pullollaan!");
128        tahti.Destroy();
129    }
130    void TormaaTasoon(PhysicsObject tormaaja, PhysicsObject kohde)
131    {
132        if (peliKaynnissa)
133       
134            MessageDisplay.Add("Massit meni lääkäri kuluihin! :(");
135            pelaaja1.Image = pelaajanKuolemakuva;
136            Keyboard.Disable(Key.Up);
137            liikutusajastin.Stop();
138            Explosion rajahdys = new Explosion(50);
139            rajahdys.Position = pelaaja1.Position;
140            rajahdys.ShockwaveColor = Color.Red;
141            Add(rajahdys);
142            peliKaynnissa = false;
143       
144    }
145}
Note: See TracBrowser for help on using the repository browser.