source: 2014/koodauskerho/38/VilhoP/Lapsylintu/Lapsylintu/Lapsylintu/Lapsylintu.cs @ 5736

Revision 5736, 3.9 KB checked in by jotapoti, 7 years ago (diff)

ensimmäisen koodauskerhopäivän päätteeksi

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    const double nopeus = 10000;
12
13    const double hyppyNopeus = 500;
14    const int RUUDUN_KOKO = 40;
15
16    PlatformCharacter pelaaja1;
17
18    Image pelaajanKuva = LoadImage("lintu");
19    Image tahtiKuva = LoadImage("tahti");
20    Image[] pelaajanHyppykuvat = LoadImages("lapsy", "lintu");
21    Image[] pelaajanPutoamiskuva = LoadImages("lintu");   
22
23    SoundEffect maaliAani = LoadSoundEffect("maali");
24
25    bool peliKaynnissa = false;
26    public override void Begin()
27        {
28        Gravity = new Vector(0, -1000);
29
30        LuoKentta();
31        LisaaNappaimet();
32
33        Camera.Follow(pelaaja1);
34        Camera.ZoomFactor = 1.2;
35        Camera.StayInLevel = true;
36
37        Timer liikutusajastin = new Timer();
38        liikutusajastin.Interval = 0.01;
39        liikutusajastin.Timeout += SiirraPelaajaaOikeammalle;
40        liikutusajastin.Start();
41        peliKaynnissa = true;
42    }
43
44    void SiirraPelaajaaOikeammalle()
45    {
46        pelaaja1.Push(new Vector(nopeus, 1000));
47
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.SkyBlue);
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.Tag = "seina";
68        Add(taso);
69    }
70
71    void LisaaTahti(Vector paikka, double leveys, double korkeus)
72    {
73        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
74        tahti.IgnoresCollisionResponse = true;
75        tahti.Position = paikka;
76        tahti.Image = tahtiKuva;
77        tahti.Tag = "tahti";
78        Add(tahti);
79    }
80
81    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
82    {
83        pelaaja1 = new PlatformCharacter(leveys, korkeus);
84        pelaaja1.Position = paikka;
85        pelaaja1.Mass = 4.0;
86        pelaaja1.Image = pelaajanKuva;
87        pelaaja1.AnimJump = new Animation(pelaajanHyppykuvat);
88        pelaaja1.AnimFall = new Animation(pelaajanKuva);
89
90        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
91        Add(pelaaja1);
92        AddCollisionHandler(pelaaja1, "seina", TormaaTasoon);
93    }
94    void TormaaTasoon(PhysicsObject tormaaja, PhysicsObject kohde)
95    {
96        if (peliKaynnissa)
97        {
98            MessageDisplay.Add("Hahahahaa!KUOLIT!Muhahahaa! >:D");
99            Keyboard.Disable(Key.Space);
100            peliKaynnissa = false;
101        }
102}
103
104    void LisaaNappaimet()
105    {
106        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
107        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
108        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
109
110        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
111        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
112
113        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
114    }
115
116    void Liikuta(PlatformCharacter hahmo, double nopeus)
117    {
118        hahmo.Walk(nopeus);
119    }
120
121    void Hyppaa(PlatformCharacter hahmo, double nopeus)
122    {
123        hahmo.ForceJump(nopeus);
124    }
125
126    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
127    {
128        maaliAani.Play();
129        MessageDisplay.Add("Keräsit tähden!");
130        tahti.Destroy();
131    }
132}
Note: See TracBrowser for help on using the repository browser.