source: 2013/27/JuhanaR/Korispeli/Korispeli/Korispeli/Korispeli.cs @ 4369

Revision 4369, 6.1 KB checked in by juronnbe, 10 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Korispeli : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14    List<Pelaaja> pelaajat = new List<Pelaaja>();
15    int vuorossaOlevaPelaaja = 0;
16
17    PlatformCharacter pelaaja1;
18
19    Image pelaajanKuva = LoadImage("pelaaja1");
20    Image vastustajanKuva = LoadImage("Vastustaja");
21    Image tuomarinKuva = LoadImage("Tuomari");
22    Image korinKuva = LoadImage("tahti");
23    Image koripallonKuva = LoadImage("Koripallo");
24
25    SoundEffect maaliAani = LoadSoundEffect("maali");
26
27    public override void Begin()
28    {
29        Gravity = new Vector(0, -1000);
30        for (int i = 0; i < 4; i++)
31        {
32            pelaajat.Add(new Pelaaja());
33        }
34
35        //pelaajat.Add(new Pelaaja());
36        //pelaajat.Add(new Pelaaja());
37
38        LuoKentta();
39        LuoNaytot();
40        LisaaNappaimet();
41
42        Camera.ZoomToLevel();
43        //Camera.Follow(pelaaja1);
44        //Camera.ZoomFactor = 1.2;
45        //Camera.StayInLevel = true;
46    }
47
48    void VaihdaPelaajaaVuorossa()
49    {
50        if (vuorossaOlevaPelaaja + 1 >= pelaajat.Count)
51            vuorossaOlevaPelaaja = 0;
52        else vuorossaOlevaPelaaja++;
53        MessageDisplay.Add("Pelaajan " + (vuorossaOlevaPelaaja + 1) + " vuoro");
54        pelaaja1.Position = new Vector(-200, 0);
55    }
56
57
58    void LuoNaytot()
59    {
60        Label ylareuna = new Label("Pisteet");
61        ylareuna.Position = new Vector(Screen.Right -50, Screen.Top -50);
62        int i =1 ;
63        foreach (var item in pelaajat)
64        {
65            Label pisteet = new Label(100, 50);
66            pisteet.BindTo(item.Pisteet);
67            ylareuna.Add(pisteet);
68            pisteet.Position += new Vector(0, -i++ * 20); 
69        }
70        Add(ylareuna);
71    }
72
73
74    void LuoKentta()
75    {
76        TileMap kentta = TileMap.FromLevelAsset("kentta1");
77        kentta.SetTileMethod('V', LisaaVastustaja);
78       
79       
80        kentta.SetTileMethod('#', LisaaTaso);
81        kentta.SetTileMethod('K', LisaaKori);
82        kentta.SetTileMethod('N', LisaaPelaaja);
83        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
84        Level.CreateBorders();
85        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
86       
87    }
88
89    void LisaaTaso(Vector paikka, double leveys, double korkeus)
90    {
91        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
92        taso.Position = paikka;
93        taso.Color = Color.Green;
94        Add(taso);
95    }
96
97    void LisaaKori(Vector paikka, double leveys, double korkeus)
98    {
99        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
100        tahti.IgnoresCollisionResponse = true;
101        tahti.Position = paikka;
102        //tahti.Image = tahtiKuva;
103        tahti.Tag = "tahti";
104        Add(tahti);
105    }
106
107    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
108    {
109        pelaaja1 = new PlatformCharacter(leveys, korkeus);
110        pelaaja1.Position = paikka;
111        pelaaja1.Mass = 4.0;
112        pelaaja1.Image = pelaajanKuva;
113        pelaaja1.CollisionIgnoreGroup = 1;
114        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
115        Add(pelaaja1);
116    }
117
118    void LisaaVastustaja(Vector paikka, double leveys, double korkeus)
119    {
120        PlatformCharacter Vastustaja = new PlatformCharacter(leveys, korkeus);
121        Vastustaja.Position = paikka;
122        Vastustaja.Mass = 1000.0;
123        Vastustaja.Image = vastustajanKuva;
124        Add(Vastustaja);
125        Timer hyppyAjastin = new Timer();
126        hyppyAjastin.Start();
127        hyppyAjastin.Interval = 4;
128        hyppyAjastin.Timeout += delegate { if (Vastustaja != null) Vastustaja.Jump(1000); };
129    }
130
131    void LisaaPallo()
132    {
133        PhysicsObject Pallo = new PhysicsObject (20,20);
134        Pallo.Shape = Shape.Circle;
135        Pallo.Image = koripallonKuva;
136        Pallo.Position = pelaaja1.Position;
137        Pallo.CollisionIgnoreGroup = 1;
138        Add(Pallo);
139    }
140
141    void LisaaNappaimet()
142    {
143        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
144        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
145
146        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
147        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
148        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
149
150        Mouse.Listen(MouseButton.Left, ButtonState.Released, HeitaPallo, "");
151
152        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
153
154        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
155        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
156        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
157
158        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
159    }
160
161    void HeitaPallo()
162    {
163        LisaaPallo();
164    }
165
166    void Liikuta(PlatformCharacter hahmo, double nopeus)
167    {
168        if (hahmo.Position.X >= 200 && nopeus > 0)
169        {
170            hahmo.Velocity = Vector.Zero;
171            return;
172        }
173            hahmo.Walk(nopeus);
174    }
175
176    void Hyppaa(PlatformCharacter hahmo, double nopeus)
177    {
178        hahmo.Jump(nopeus);
179    }
180
181    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
182    {
183        maaliAani.Play();
184        MessageDisplay.Add("Heitit korin!");
185        pelaajat[vuorossaOlevaPelaaja].Pisteet.Value++;
186        VaihdaPelaajaaVuorossa();
187        //tahti.Destroy();
188    }
189}
190
191public class Pelaaja
192{
193    IntMeter pisteet;
194    public IntMeter Pisteet { get { return pisteet; } }
195
196    public Pelaaja()
197    {
198        pisteet = new IntMeter(0, 0, 10);
199    }
200
201}
Note: See TracBrowser for help on using the repository browser.