source: 2016/30/RoniM/HvM/HvM/HvM/HvM.cs @ 8370

Revision 8370, 4.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 HvM : PhysicsGame
10{
11    const double nopeus = 150;
12    const double hyppyNopeus = 450;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajakuva = LoadImage("norsu");
18    Image tahdenKuva = LoadImage("tahti");
19    Image groundImage = LoadImage("muuri");
20    SoundEffect maaliAani = LoadSoundEffect("maali");
21    Image aseenkuva = LoadImage("Ase");
22    public override void Begin()
23    {
24
25        LuoKentta();
26        Gravity = new Vector(0, -1275);
27        LisaaNappaimet();
28    }
29    void LuoKentta()
30    {
31        //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä.
32        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta1");
33
34        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa.
35        ruudut.SetTileMethod(Color.FromHexCode("00FFFF"), LisaaPelaaja);
36
37        ruudut.SetTileMethod(Color.FromHexCode("00FF21"), LuoTaso);
38        ruudut.SetTileMethod(Color.Yellow, LuoTahti);
39
40        //3. Execute luo kentän
41        //   Parametreina leveys ja korkeus
42        ruudut.Execute(20, 20);
43        Camera.Follow(pelaaja1);
44        Camera.ZoomFactor = 7.59;
45    }
46
47
48    void LuoTaso(Vector paikka, double leveys, double korkeus)
49    {
50        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
51        taso.Position = paikka;
52        taso.Image = groundImage;
53        taso.CollisionIgnoreGroup = 1;
54        taso.Tag = "m";
55       
56        Add(taso);
57    }
58
59    void LuoTahti(Vector paikka, double leveys, double korkeus)
60    {
61        PhysicsObject tahti = new PhysicsObject(5, 5);
62        tahti.IgnoresCollisionResponse = true;
63        tahti.Position = paikka;
64        tahti.Image = tahdenKuva;
65        tahti.Tag = "tahti";
66        Add(tahti, 1);
67    }
68    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
69    {
70        pelaaja1 = new PlatformCharacter(leveys, korkeus);
71        pelaaja1.Position = paikka;
72        pelaaja1.Mass = 4.0;
73        pelaaja1.Image = pelaajakuva;
74        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
75
76        pelaaja1.Weapon = new AssaultRifle(30, 10);
77       // pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
78        pelaaja1.Weapon.InfiniteAmmo = true;
79        pelaaja1.Weapon.Power.DefaultValue = 50;
80        pelaaja1.Weapon.AmmoIgnoresGravity = true;
81        pelaaja1.Weapon.AmmoIgnoresExplosions = true;
82        pelaaja1.Weapon.CanHitOwner = false;
83        pelaaja1.Weapon.Image = aseenkuva;
84        pelaaja1.Weapon.FireRate = 1.2;
85        pelaaja1.Weapon.Y = 5;
86
87        Add(pelaaja1);
88    }
89
90
91    void LisaaNappaimet()
92    {
93        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
94        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
95
96        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
97        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
98        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
99        Keyboard.Listen(Key.E, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
100
101        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
102
103        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
104        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
105        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
106
107        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
108    }
109
110    void Liikuta(PlatformCharacter hahmo, double nopeus)
111    {
112        hahmo.Walk(nopeus);
113    }
114
115    void Hyppaa(PlatformCharacter hahmo, double nopeus)
116    {
117        hahmo.Jump(nopeus);
118    }
119
120    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
121    {
122        maaliAani.Play();
123        MessageDisplay.Add("Keräsit tähden!");
124        tahti.Destroy();
125    }
126    void AmmuAseella(PlatformCharacter pelaaja1)
127    {
128        if (pelaaja1.IsDestroyed) return;
129
130        PhysicsObject ammus = pelaaja1.Weapon.Shoot();
131
132        if (ammus != null)
133        {
134            //ammus.Size *= 0.10;
135            ammus.Width = 5;
136            ammus.Height = 5;
137            //ammus.Image = ...
138            ammus.MaximumLifetime = TimeSpan.FromSeconds(0.1);
139        }
140
141
142    }
143    void AmmusOsui(PhysicsObject ammus, PhysicsObject taso)
144    {
145        ammus.Destroy();
146
147   
148    }
149
150}
Note: See TracBrowser for help on using the repository browser.