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

Revision 7835, 5.3 KB checked in by jotapoti, 3 years ago (diff)

Vihuun osuessa tulee viesti ja pelaaja siirtyy aloituspaikkaan

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    Vector aloituspaikka = Vector.Zero;
26
27    public override void Begin()
28    {
29        ClearAll();
30        Gravity = new Vector(0, -1000);
31
32        LuoKentta();
33        LisaaNappaimet();
34
35        Camera.Follow(pelaaja1);
36        Camera.ZoomFactor = 1.2;
37        Camera.StayInLevel = true;
38    }
39
40    void LuoKentta()
41    {
42        TileMap kentta = TileMap.FromLevelAsset("kentta1");
43        kentta.SetTileMethod('#', LisaaTaso);
44        kentta.SetTileMethod('*', LisaaTahti);
45        kentta.SetTileMethod('N', LisaaPelaaja);
46        kentta.SetTileMethod('O', LisaaLuola);
47        kentta.SetTileMethod('z', LisaaIlkeaTyyppi);
48        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
49        Level.CreateBorders();
50        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
51    }
52
53    void LisaaIlkeaTyyppi(Vector paikka, double leveys, double korkeus)
54    {
55        // TODO lisaa tekoaly talle ilkealle tyypille!
56        PhysicsObject tyyppi = new PhysicsObject(leveys, korkeus);
57        tyyppi.Position = paikka;
58        tyyppi.Image = ilkeanOmenanKuva;
59        tyyppi.Tag = "pahis";
60        Add(tyyppi);
61    }
62    void LisaaLuola(Vector paikka, double leveys, double korkeus)
63    {
64        PhysicsObject luola = new PhysicsObject(2*leveys, 2*korkeus);
65        luola.MakeStatic();
66        luola.IgnoresCollisionResponse = true;
67        //luola.Color = Color.Black;
68        luola.Position = paikka + new Vector(0.0, korkeus/2);
69        luola.Tag = "luola";
70        luola.Image = luolanKuva;
71
72        Add(luola);
73    }
74
75    void LisaaTaso(Vector paikka, double leveys, double korkeus)
76    {
77        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
78        taso.Position = paikka;
79        taso.Color = Color.Green;
80        taso.Image = ruohonKuva;
81        Add(taso);
82    }
83
84    void LisaaTahti(Vector paikka, double leveys, double korkeus)
85    {
86        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
87        tahti.IgnoresCollisionResponse = true;
88        tahti.Position = paikka;
89        tahti.Image = tahtiKuva;
90        tahti.Tag = "tahti";
91        Add(tahti);
92    }
93
94    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
95    {
96        pelaaja1 = new PlatformCharacter(leveys, korkeus);
97        pelaaja1.Position = paikka;
98        aloituspaikka = paikka;
99        pelaaja1.Mass = 4.0;
100        pelaaja1.Image = pelaajanKuva;
101        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
102        AddCollisionHandler(pelaaja1, "luola", TormaaLuolaan);
103        AddCollisionHandler(pelaaja1, "pahis", TormaaPahikseen);
104        Add(pelaaja1);
105    }
106
107    void LisaaNappaimet()
108    {
109        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
110        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
111
112        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
113        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
114        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
115        Keyboard.Listen(Key.R, ButtonState.Pressed, Begin, "Aloita peli alusta");
116
117
118        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
119
120        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
121        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
122        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
123
124        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
125    }
126
127    void Liikuta(PlatformCharacter hahmo, double nopeus)
128    {
129        hahmo.Walk(nopeus);
130    }
131
132    void Hyppaa(PlatformCharacter hahmo, double nopeus)
133    {
134        hahmo.Jump(nopeus);
135    }
136
137    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
138    {
139        maaliAani.Play();
140        MessageDisplay.Add("Keräsit tähden!");
141        tahti.Destroy();
142    }
143
144    void TormaaLuolaan(PhysicsObject hahmo, PhysicsObject luola)
145    {
146        // TODO hahmo siirtyy toiseen kenttaan!
147        MessageDisplay.Add("Menit luolaan!");
148    }
149
150    void TormaaPahikseen(PhysicsObject hahmo, PhysicsObject pahis)
151    {
152        //MessageDisplay.Add("Osuit vihuun!");
153        MessageWindow ikkuna = new MessageWindow("Osuit vihuun!");
154        Add(ikkuna);
155
156        ikkuna.Closed += delegate
157        {
158            hahmo.Position = aloituspaikka;
159        };
160       
161
162    }
163
164}
Note: See TracBrowser for help on using the repository browser.