source: 2015/27/VilleHy/Tasohyppelypeli2/Tasohyppelypeli2/Tasohyppelypeli2/Tasohyppelypeli2.cs @ 6684

Revision 6684, 5.0 KB checked in by misakana, 5 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 Tasohyppelypeli2 : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    PlatformCharacter pelaaja2;
17    Image pelaajan1Kuva = LoadImage("pelaaja");
18    Image pelaajan2Kuva = LoadImage("pelaaja2");
19    Image[] vihukuvat = LoadImages("pahis", "pahis2", "pahis3", "pahis4", "pahis5", "pahis6");
20    AssaultRifle pelaajan1ase;
21    AssaultRifle pelaajan2ase;
22
23   
24
25    SoundEffect maaliAani = LoadSoundEffect("maali");
26
27    public override void Begin()
28    {
29        Gravity = new Vector(0, -1000);
30
31        LuoKentta();
32        LisaaNappaimet();
33
34        Camera.Follow(pelaaja1);
35        Camera.ZoomFactor = 1.2;
36        Camera.StayInLevel = true;
37
38        Timer ajastin = new Timer();
39        ajastin.Interval = 5;
40        ajastin.Timeout += luovihu;
41        ajastin.Start();
42    }
43
44    void LuoKentta()
45    {
46        TileMap kentta = TileMap.FromLevelAsset("kentta1");
47        kentta.SetTileMethod('#', LisaaTaso);
48       
49        kentta.SetTileMethod('N', LisaaPelaaja);
50        kentta.SetTileMethod('K', LisaaPelaaja2);
51        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
52        kentta.Optimize('#');
53        Level.CreateBorders();
54        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
55    }
56
57    void LisaaTaso(Vector paikka, double leveys, double korkeus)
58    {
59        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
60        taso.Position = paikka;
61        taso.Color = Color.Green;
62        Add(taso);
63    }
64
65   
66     
67   
68
69    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
70    {
71        pelaaja1 = new PlatformCharacter(leveys, korkeus);
72        pelaaja1.Position = paikka;
73        pelaaja1.Mass = 4.0;
74        pelaaja1.Image = pelaajan1Kuva;
75        Add(pelaaja1);
76
77        pelaajan1ase = new AssaultRifle(leveys * 0.3, korkeus * 0.2);
78        pelaaja1.Weapon = pelaajan1ase;
79        AddCollisionHandler(pelaaja1,"ammus", delegate(PhysicsObject a, PhysicsObject b)
80        {
81            pelaaja1.Weapon.Destroy();
82            a.Destroy();
83        });
84    }
85    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
86    {
87        pelaaja2 = new PlatformCharacter(leveys, korkeus);
88        pelaaja2.Position = paikka;
89        pelaaja2.Mass = 4.0;
90        pelaaja2.Image = pelaajan2Kuva;
91        Add(pelaaja2);
92
93        pelaajan2ase = new AssaultRifle(leveys * 0.3, korkeus * 0.2);
94        pelaaja2.Weapon = pelaajan2ase;
95}
96    void LisaaNappaimet()
97    {
98        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
99        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
100
101        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
102        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
103        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
104
105        Keyboard.Listen(Key.RightControl, ButtonState.Down, Ampuu, "pelaaja ampuu", pelaaja1);
106        Keyboard.Listen(Key.Q, ButtonState.Down, Ampuu, "pelaaja ampuu", pelaaja2);
107
108        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
109
110        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
111        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
112        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
113
114        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
115        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, nopeus);
116        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
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    void Ampuu(PlatformCharacter hahmo)
129    {
130     PhysicsObject ammus = hahmo.Weapon.Shoot();
131     if (ammus != null)
132     {
133
134         ammus.Tag = "ammus";
135         AddCollisionHandler(ammus, delegate(PhysicsObject a, PhysicsObject b) 
136         { 
137             a.Destroy(); 
138         });
139
140         
141     }
142    }
143    void luovihu()
144    {
145        PlatformCharacter vihu = new PlatformCharacter(RUUDUN_KOKO, RUUDUN_KOKO);
146        vihu.X = RandomGen.NextDouble(Level.Left, Level.Right);
147        vihu.Y = RandomGen.NextDouble(Level.Bottom, Level.Top);
148        vihu.Mass = 4.0;
149        vihu.Image = RandomGen.SelectOne(vihukuvat);
150        Add(vihu);
151    }
152
153}
Note: See TracBrowser for help on using the repository browser.