source: 2016/koodauskerho/VilleH/Tasohyppelypeli/Tasohyppelypeli/Tasohyppelypeli/ninjakissanhikileikit.cs @ 8361

Revision 8361, 5.8 KB checked in by koannak, 3 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 Tasohyppelypeli1 : PhysicsGame
10{
11    const double nopeus = 550;
12    const double hyppyNopeus = 500;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    AssaultRifle pelaajan1Ase;
17    Image pelaajanKuva = LoadImage("kissa");
18    Image doritos = LoadImage("doritos-nacho-cheese");
19    Image piikkikuva = LoadImage("piikki");
20    SoundEffect maaliAani = LoadSoundEffect("maali");
21
22    public override void Begin()
23    {
24        Gravity = new Vector(0, -1000);
25
26        LuoKentta();
27        LisaaNappaimet();
28
29        Camera.Follow(pelaaja1);
30        Camera.ZoomFactor = 1.2;
31        Camera.StayInLevel = true;
32        //Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella");
33        //Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
34    }
35
36    void LuoKentta()
37    {
38        TileMap kentta = TileMap.FromLevelAsset("kentta1");
39        kentta.SetTileMethod('#', LisaaTaso);
40        kentta.SetTileMethod('p', LisaaPiikki);
41        kentta.SetTileMethod('*', LisaaTahti);
42        kentta.SetTileMethod('N', LisaaPelaaja);
43        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
44        Level.CreateBorders();
45        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
46    }
47
48    void LisaaTaso(Vector paikka, double leveys, double korkeus)
49    {
50        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
51        taso.Position = paikka;
52        taso.Color = Color.Green;
53        Add(taso);
54    }
55
56    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
57    {
58        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
59        piikki.Position = paikka;
60        piikki.Color = Color.Red;
61        piikki.Image = piikkikuva;
62        Add(piikki);
63        piikki.Tag = "piikki";
64    }
65
66    void LisaaTahti(Vector paikka, double leveys, double korkeus)
67    {
68        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
69        tahti.IgnoresCollisionResponse = true;
70        tahti.Position = paikka;
71        tahti.Image = doritos;
72        tahti.Tag = "tahti";
73        Add(tahti);
74    }
75
76    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
77    {
78        pelaaja1 = new PlatformCharacter(leveys, korkeus);
79        pelaaja1.Position = paikka;
80        pelaaja1.Mass = 4.0;
81        pelaaja1.Image = pelaajanKuva;
82        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
83        AddCollisionHandler(pelaaja1, "piikki", tormaapiikkiin);
84        Add(pelaaja1);
85
86        //...
87        pelaajan1Ase = new AssaultRifle(30, 10);
88
89        //Ammusten määrä aluksi:
90        pelaajan1Ase.Ammo.Value = 1000;
91
92        //Mitä tapahtuu kun ammus osuu johonkin?
93        pelaajan1Ase.ProjectileCollision = AmmusOsui;
94
95        pelaaja1.Weapon = pelaajan1Ase;
96
97        //pelaaja1 on PlatformCharacter-tyyppinen
98        pelaaja1.Weapon = new AssaultRifle(30, 10);
99
100        //Ammusten määrä aluksi:
101        pelaaja1.Weapon.Ammo.Value = 1000;
102
103        //Mitä tapahtuu kun ammus osuu johonkin?
104        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
105
106    }
107    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
108    {
109        //ammus.Destroy();
110    }
111
112    void LisaaNappaimet()
113    {
114        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
115        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
116
117        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
118        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
119        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
120
121        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
122
123        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
124        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
125        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
126
127        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
128       // Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
129
130    }
131
132    void Liikuta(PlatformCharacter hahmo, double nopeus)
133    {
134        hahmo.Walk(nopeus);
135    }
136
137    void Hyppaa(PlatformCharacter hahmo, double nopeus)
138    {
139        hahmo.Jump(nopeus);
140    }
141
142    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
143    {
144        maaliAani.Play();
145        MessageDisplay.Add("Keräsit tähden!");
146        tahti.Destroy();
147    }
148    void tormaapiikkiin(PhysicsObject hahmo, PhysicsObject piikki)
149    {
150        MessageDisplay.Add("sinä hävisit");
151        pelaaja1.Destroy();
152    }
153
154    //void AmmuAseella(AssaultRifle ase)
155    //{
156    //    PhysicsObject ammus = ase.Shoot();
157
158    //    if (ammus != null)
159    //    {
160    //        //ammus.Size *= 3;
161    //        //ammus.Image = ...
162    //        //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
163    //    }
164    //}
165
166    //void AmmuAseella(PlatformCharacter pelaaja)
167    //{
168    //    PhysicsObject ammus = pelaaja.Weapon.Shoot();
169
170    //    if (ammus != null)
171    //    {
172    //        //ammus.Size *= 3;
173    //        //ammus.Image =
174    //       //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
175    //    }
176    //}
177
178    //void Tahtaa(AnalogState hiirenLiike)
179    //{
180    //    Vector suunta = (Mouse.PositionOnWorld - pelaaja1.Weapon.AbsolutePosition).Normalize();
181    //    pelaaja1.Weapon.Angle = suunta.Angle;
182    //}
183
184}
185
Note: See TracBrowser for help on using the repository browser.