source: 2010/31/vivevinu/Mittelo maasta/Peli.cs @ 6454

Revision 1673, 7.2 KB checked in by paaaanro, 10 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Widgets;
5using Jypeli.Assets;
6
7public class Peli : PhysicsGame
8{
9    Image pelto = LoadImage("pelto");
10    Image sintorni = LoadImage("sintorni");
11    Image sinlippu = LoadImage("sinlippu");
12    Image puntorni = LoadImage("puntorni");
13    Image punlippu = LoadImage("punlippu");
14    Image lentokentta = LoadImage("lentokentta");
15    bool a = false;
16
17    Vector paikka;
18
19    string b = "pelaaja2";
20    const int ruudunLeveys = 40;
21    const int ruudunKorkeus = 40;
22    Label teksti2;
23    Label teksti5;
24
25    List<PhysicsObject> pelaaja1maat = new List<PhysicsObject>();
26    List<PhysicsObject> pelaaja2maat = new List<PhysicsObject>();
27
28    protected override void Begin()
29    {
30        paikka = new Vector(0,0);
31        teksti2 = new Label();
32        teksti5 = new Label("pelaaja1");
33        Add(teksti5);
34        Add(teksti2);
35        LuoKentta();
36        Vuoro();
37    }
38    void LuoKentta()
39    {
40        TileMap ruudut = TileMap.FromFile("kentta.txt");
41        ruudut['0'] = LuoPelto;
42        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
43        Label teksti1 = new Label(50.0, 20.0, "Vuorossa:");
44        teksti1.X = Screen.Left + 50;
45        teksti1.Y = Screen.Top - 15;
46       
47        Add(teksti1);
48        for (int i = -15; i < 16; i++)
49        {
50            Label teksti3 = new Label(10, 10, i.ToString());
51            teksti3.X = Screen.Left + 640+40*i;
52            teksti3.Y = Screen.Top - 40;
53            Add(teksti3);
54        }
55        for (int i = 11; i > -12; i--)
56        {
57            Label teksti4 = new Label(10, 10, i.ToString());
58            teksti4.Y = Screen.Top -515 + 40 * i;
59            teksti4.X = Screen.Left + 15;
60            Add(teksti4);
61        }
62    }
63    void Vuoro()
64    {
65        if (b == "pelaaja1")
66        {
67            b = "pelaaja2";
68            teksti5.Text = b;
69            teksti5.X = Screen.Left + 160;
70            teksti5.Y = Screen.Top - 15;
71        }
72        else
73        {
74            b = "pelaaja1";
75            teksti5.Text = b; 
76            teksti5.X = Screen.Left + 160;
77            teksti5.Y = Screen.Top - 15;
78        }
79        Liikkuminen();
80    }
81    void Liikkuminen()
82    {
83        ClearControls();
84        Vector vasen = new Vector(-1, 0);
85        Vector ylos = new Vector(0,1);
86
87        Keyboard.Listen(Key.Up, ButtonState.Pressed, LiikutaValintaa, null, ylos);
88        Keyboard.Listen(Key.Down, ButtonState.Pressed, LiikutaValintaa, null, -ylos);
89        Keyboard.Listen(Key.Left, ButtonState.Pressed, LiikutaValintaa, null, vasen);
90        Keyboard.Listen(Key.Right, ButtonState.Pressed, LiikutaValintaa, null, -vasen);
91        teksti2.Text = "Ostettava ruutu: " + paikka.X + ", " + paikka.Y;
92        teksti2.X = Screen.Left + 600;
93        teksti2.Y = Screen.Top - 15;
94        Keyboard.Listen(Key.Enter, ButtonState.Pressed, Ostamaa, null);
95    }
96
97    void LiikutaValintaa(Vector maara)
98    {
99        paikka += maara;
100        teksti2.Text = "Ostettava ruutu: " + paikka.X + ", " + paikka.Y;
101    }
102
103    void Ostamaa()
104    {
105        if (TarkistaPaikka(paikka) != null)
106        {
107            Liikkuminen();
108            return;
109        }
110        if (TarkistaPaikka(paikka) == null)
111        {
112            PhysicsObject lippu = PhysicsObject.CreateStaticObject(40.0, 40.0);
113            PhysicsObject torni = PhysicsObject.CreateStaticObject(40, 40);
114            PhysicsObject rata = PhysicsObject.CreateStaticObject(40.0, 40.0);
115            rata.Image = lentokentta;
116            if (-16 < paikka.X && paikka.X < 16 && -12 < paikka.Y && paikka.Y < 12)
117            {
118                if (b == "pelaaja1")
119                {
120                    lippu.Image = sinlippu;
121                    lippu.Tag = "pelaaja1";
122                    pelaaja1maat.Add(lippu);
123                }
124                else
125                {
126                    lippu.Tag = "pelaaja2";
127                    lippu.Image = punlippu;
128                    pelaaja2maat.Add(lippu);
129                }
130            }
131            lippu.Position = 40 * paikka;           
132            Add(lippu);           
133            Tutkisuorat();                     
134            Vuoro();
135        }
136    }
137
138    PhysicsObject TarkistaPaikka(Vector paikka)
139    {
140        foreach (PhysicsObject lippu in pelaaja1maat)
141        {
142            if (lippu.Position == paikka * 40) return lippu;
143        }
144        foreach (PhysicsObject lippu in pelaaja2maat)
145        {
146            if (lippu.Position == paikka * 40) return lippu;
147        }
148
149        return null;
150    }
151    void Tutkisuorat()
152    {
153        foreach (PhysicsObject lippu in pelaaja1maat)
154        {
155            if (TarkistaVaakaSuora(lippu, "pelaaja1") || TarkistaPystySuora(lippu, "pelaaja1"))
156            {
157                PaataPeli("pelaaja1");
158            }
159
160        }
161        foreach (PhysicsObject lippu in pelaaja2maat)
162        {
163            if (TarkistaVaakaSuora(lippu, "pelaaja2") || TarkistaPystySuora(lippu, "pelaaja2"))
164            {
165                PaataPeli("pelaaja2");
166            }
167        }
168    }
169
170    bool TarkistaVaakaSuora(PhysicsObject lippu, string omistaja)
171    {
172        Vector lipunPaikka = lippu.Position;
173        Vector tarkistuspaikka = new Vector(0, 0);
174        tarkistuspaikka.Y = (lippu.Y / 40);
175        bool suora = true;
176        for (int i = 1; i < 5; i++)
177        {
178            tarkistuspaikka.X = (lipunPaikka.X / 40) - i;
179
180            if (TarkistaPaikka(tarkistuspaikka) == null)
181            {
182                suora = false;
183                break;
184            }
185            if (TarkistaPaikka(tarkistuspaikka).Tag.ToString() != omistaja)
186            {
187                suora = false;
188                break;
189            }
190        }
191        return suora;
192    }
193
194    bool TarkistaPystySuora(PhysicsObject lippu, string omistaja)
195    {
196        Vector lipunPaikka = lippu.Position;
197        Vector tarkistuspaikka = new Vector(0, 0);
198        tarkistuspaikka.X = (lippu.X / 40);
199        bool suora = true;
200        for (int i = 1; i < 5; i++)
201        {
202            tarkistuspaikka.Y = (lipunPaikka.Y / 40) - i;
203
204            if (TarkistaPaikka(tarkistuspaikka) == null)
205            {
206                suora = false;
207                break;
208            }
209            if (TarkistaPaikka(tarkistuspaikka).Tag.ToString() != omistaja)
210            {
211                suora = false;
212                break;
213            }
214        }
215
216        return suora;
217    }
218
219    void Tutkiymparisto()
220    {
221        foreach(PhysicsObject lippu in pelaaja1maat)
222        {
223            //if(lippu.Position==(lippu.Position.Y+1, lippu.Position.X)
224        }
225    }
226    PhysicsObject LuoPelto()
227    {
228        PhysicsObject peltomaa = PhysicsObject.CreateStaticObject(40.0, 40.0);
229        peltomaa.Image = pelto;
230        return peltomaa;
231    }
232
233    void PaataPeli(string voittaja)
234    {
235        ClearAll();
236        Label teksti6 = new Label(voittaja + " voitti pelin!");
237        teksti6.Position = new Vector(0, 0);
238        Add(teksti6);
239        Timer ajastin = new Timer();
240        ajastin.Interval = 3;
241        ajastin.Trigger += Loppu;
242        ajastin.Start();
243               
244
245    }
246    void Loppu(Timer sender)
247    {
248        Exit();
249    }
250}
Note: See TracBrowser for help on using the repository browser.