source: 2016/27/JouniP/VenienteFragore/VenienteFragore/VenienteFragore/VenienteFragore.cs @ 7774

Revision 7774, 4.7 KB checked in by jotapoti, 3 years ago (diff)

Luolia, joihin voi menna.
Vihollinen aloiteltu

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class VenienteFragore : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("norsu");
18    Image tahtiKuva = LoadImage("tahti");
19    Image ruohonKuva = LoadImage("ruohotekstuuri");
20    Image luolanKuva = LoadImage("luola");
21    Image ilkeanOmenanKuva = LoadImage("ilkeaomena");
22     
23    SoundEffect maaliAani = LoadSoundEffect("maali");
24
25    public override void Begin()
26    {
27        Gravity = new Vector(0, -1000);
28
29        LuoKentta();
30        LisaaNappaimet();
31
32        Camera.Follow(pelaaja1);
33        Camera.ZoomFactor = 1.2;
34        Camera.StayInLevel = true;
35    }
36
37    void LuoKentta()
38    {
39        TileMap kentta = TileMap.FromLevelAsset("kentta1");
40        kentta.SetTileMethod('#', LisaaTaso);
41        kentta.SetTileMethod('*', LisaaTahti);
42        kentta.SetTileMethod('N', LisaaPelaaja);
43        kentta.SetTileMethod('O', LisaaLuola);
44        kentta.SetTileMethod('z', LisaaIlkeaTyyppi);
45        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
46        Level.CreateBorders();
47        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
48    }
49
50    void LisaaIlkeaTyyppi(Vector paikka, double leveys, double korkeus)
51    {
52        // TODO lisaa tekoaly talle ilkealle tyypille!
53        PhysicsObject tyyppi = new PhysicsObject(leveys, korkeus);
54        tyyppi.Position = paikka;
55        tyyppi.Image = ilkeanOmenanKuva;
56        Add(tyyppi);
57    }
58    void LisaaLuola(Vector paikka, double leveys, double korkeus)
59    {
60        PhysicsObject luola = new PhysicsObject(2*leveys, 2*korkeus);
61        luola.MakeStatic();
62        luola.IgnoresCollisionResponse = true;
63        //luola.Color = Color.Black;
64        luola.Position = paikka + new Vector(0.0, korkeus/2);
65        luola.Tag = "luola";
66        luola.Image = luolanKuva;
67
68        Add(luola);
69    }
70
71    void LisaaTaso(Vector paikka, double leveys, double korkeus)
72    {
73        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
74        taso.Position = paikka;
75        taso.Color = Color.Green;
76        taso.Image = ruohonKuva;
77        Add(taso);
78    }
79
80    void LisaaTahti(Vector paikka, double leveys, double korkeus)
81    {
82        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
83        tahti.IgnoresCollisionResponse = true;
84        tahti.Position = paikka;
85        tahti.Image = tahtiKuva;
86        tahti.Tag = "tahti";
87        Add(tahti);
88    }
89
90    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
91    {
92        pelaaja1 = new PlatformCharacter(leveys, korkeus);
93        pelaaja1.Position = paikka;
94        pelaaja1.Mass = 4.0;
95        pelaaja1.Image = pelaajanKuva;
96        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
97        AddCollisionHandler(pelaaja1, "luola", TormaaLuolaan);
98        Add(pelaaja1);
99    }
100
101    void LisaaNappaimet()
102    {
103        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
104        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
105
106        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
107        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
108        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
109
110        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
111
112        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
113        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
114        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
115
116        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
117    }
118
119    void Liikuta(PlatformCharacter hahmo, double nopeus)
120    {
121        hahmo.Walk(nopeus);
122    }
123
124    void Hyppaa(PlatformCharacter hahmo, double nopeus)
125    {
126        hahmo.Jump(nopeus);
127    }
128
129    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
130    {
131        maaliAani.Play();
132        MessageDisplay.Add("Keräsit tähden!");
133        tahti.Destroy();
134    }
135
136    void TormaaLuolaan(PhysicsObject hahmo, PhysicsObject luola)
137    {
138        // TODO hahmo siirtyy toiseen kenttaan!
139        MessageDisplay.Add("Menit luolaan!");
140    }
141
142}
Note: See TracBrowser for help on using the repository browser.