source: 2016/24/JesseH/Cubes/Cubes/Cubes/Cubes.cs @ 7310

Revision 7310, 5.0 KB checked in by jejapehi, 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 Cubes : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 700;
13    const int RUUDUN_KOKO = 40;
14
15    List<Hahmo> pelaajat=new List<Hahmo>();
16    int aktiivinenPelaaja = 0;
17    Image fredKuva = LoadImage("Fred");
18    Image lulaKuva = LoadImage("Lula");
19    Image brandonKuva = LoadImage("Brandon");
20    Image oviKuva = LoadImage("Ovi");
21    Image VasenKuva = LoadImage("Vasen");
22    Image OikeaKuva = LoadImage("Oikea");
23    IntMeter pelaajiaMaalissa;
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        LuoPistelaskuri(); 
34        Camera.Follow(pelaajat[aktiivinenPelaaja]);
35        Camera.ZoomFactor = 1.2;
36        Camera.StayInLevel = true;
37    }
38
39    void LuoKentta()
40    {
41        TileMap kentta = TileMap.FromLevelAsset("kentta1");
42        kentta.SetTileMethod('#', LisaaTaso);
43        kentta.SetTileMethod('D', LisaaVasen);
44        kentta.SetTileMethod('P', LisaaOikea);
45        kentta.SetTileMethod('*', LisaaOvi);
46        kentta.SetTileMethod('N', LisaaPelaaja, fredKuva, 0.5,hyppyNopeus* 0.5, "fred");
47        kentta.SetTileMethod('K', LisaaPelaaja, lulaKuva, 1.0,hyppyNopeus* 1.0, "lula");
48        kentta.SetTileMethod('L', LisaaPelaaja, brandonKuva, 1.5,hyppyNopeus* 1.5, "brandon");
49        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
50        Level.CreateBorders();
51        Level.Background.CreateGradient(Color.LightGray, Color.Gray);
52    }
53
54    void LisaaTaso(Vector paikka, double leveys, double korkeus)
55    {
56        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
57        taso.Position = paikka;
58        taso.Color = Color.Black;
59        Add(taso);
60    }
61    void LisaaVasen(Vector paikka, double leveys, double korkeus)
62    {
63        PhysicsObject Vasen = PhysicsObject.CreateStaticObject(leveys, korkeus);
64        Vasen.Position = paikka;
65        Vasen.Color = Color.Black;
66        Add(Vasen);
67    }
68    void LisaaOikea(Vector paikka, double leveys, double korkeus)
69    {
70        PhysicsObject Oikea = PhysicsObject.CreateStaticObject(leveys, korkeus);
71        Oikea.Position = paikka;
72        Oikea.Color = Color.Black;
73        Add(Oikea);
74    }
75        void LisaaOvi(Vector paikka, double leveys, double korkeus)
76    {
77        PhysicsObject ovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
78        ovi.IgnoresCollisionResponse = true;
79        ovi.Position = paikka;
80        ovi.Image = oviKuva;
81        ovi.Tag = "Ovi";
82        Add(ovi);
83    }
84
85
86    void LisaaPelaaja(Vector paikka, double leveys, double korkeus, Image kuva, double kerroin,double hyppyNopeus, string nimi)
87    {
88        Hahmo pelaaja = new Hahmo (leveys * kerroin, korkeus * kerroin);
89        pelaaja.Position = paikka;
90        pelaaja.Mass = 1.0;
91        pelaaja.Image = kuva;
92        pelaaja.Tag = nimi;
93        AddCollisionHandler(pelaaja, "Ovi", TormaaTahteen);
94        Add(pelaaja);
95        pelaajat.Add(pelaaja);
96        pelaaja.Hyppynopeus = hyppyNopeus;
97    }
98
99
100    void LuoPistelaskuri()
101    {
102        pelaajiaMaalissa = new IntMeter(0);
103
104        Label pelaajaNaytto = new Label();
105        pelaajaNaytto.X = Screen.Left + 100;
106        pelaajaNaytto.Y = Screen.Top - 100;
107        pelaajaNaytto.TextColor = Color.Black;
108        pelaajaNaytto.Color = Color.White;
109
110        pelaajaNaytto.BindTo(pelaajiaMaalissa);
111        Add(pelaajaNaytto);
112    }
113
114    void LisaaNappaimet()
115    {
116        Keyboard.Listen(Key.LeftAlt, ButtonState.Pressed, VaihdaPelaajaa, "vaihda pelaaja");
117        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
118        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
119
120        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle",  -nopeus);
121        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle",  nopeus);
122        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää");
123        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää" );
124       
125
126       
127
128       
129    }
130    void VaihdaPelaajaa()
131    {
132        aktiivinenPelaaja++;
133        if (aktiivinenPelaaja>pelaajat.Count-1)
134        {
135            aktiivinenPelaaja = 0;
136        }
137        Camera.Follow(pelaajat[aktiivinenPelaaja]);
138    }
139    void Liikuta( double nopeus)
140    {
141       pelaajat[aktiivinenPelaaja].Walk(nopeus);
142    }
143
144    void Hyppaa()
145    {
146        pelaajat[aktiivinenPelaaja].Jump(pelaajat[aktiivinenPelaaja].Hyppynopeus);
147    }
148
149    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
150    {
151       
152        hahmo.Destroy();
153        pelaajiaMaalissa.Value++;
154
155        if (pelaajiaMaalissa.Value >= 3)
156        {
157            MessageDisplay.Add("You Win!");
158            tahti.Destroy();
159        }
160    }
161}
Note: See TracBrowser for help on using the repository browser.