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

Revision 7838, 6.0 KB checked in by jotapoti, 3 years ago (diff)

vihollisilla on aivot ja vihut pomppivat

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