source: 2010/27/sijoseha/PathFinding/Peli.cs @ 1327

Revision 1327, 2.3 KB checked in by sijoseha, 11 years ago (diff)

Commit, jotta voin jatkaa kotona.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Widgets;
5using Jypeli.Assets;
6
7public class Peli : PhysicsGame
8{
9    const int ruudunKoko = 10;
10    const int kentanKoko = 100;
11    List<GameObject> palikat;
12    protected override void Begin()
13    {
14        Sekoita();
15    }
16
17    void Sekoita()
18    {
19        LuoKentta(10);
20    }
21
22    void LuoKentta(int esteidenMaara)
23    {
24        ClearAll();
25        Keyboard.Listen(Key.Space, ButtonState.Released, Sekoita, "Sekoita kentta");
26        Keyboard.Listen(Key.Enter, ButtonState.Released, EtsiReitti, "Etsi reitti");
27        palikat = new List<GameObject>();
28        Level.Height = kentanKoko+ruudunKoko;
29        Level.Width = kentanKoko+ruudunKoko;
30        Camera.ZoomToLevel();
31        for (int i = 0; i < esteidenMaara; i++)
32        {
33            LisaaPalikka(Color.Black);
34        }
35        LisaaPalikka(Color.Green);
36        LisaaPalikka(Color.Red);
37    }
38
39    void LisaaPalikka(Color color)
40    {
41        Vector sijainti = randomSijainti();
42        while (palikat.Exists(delegate(GameObject p) { return p.Position == sijainti; }))
43            sijainti = randomSijainti();
44        palikat.Add(LuoPalikka(sijainti, color));
45    }
46
47    PhysicsObject LuoPalikka(Vector sijainti, Color color)
48    {
49        PhysicsObject palikka = new PhysicsObject(ruudunKoko, ruudunKoko);
50        palikka.Position = sijainti;
51        palikka.Color = color;
52        Add(palikka);
53        return palikka;
54    }
55
56    Vector randomSijainti()
57    {
58        int kentanMin = -(kentanKoko / ruudunKoko / 2);
59        int kentanMax = kentanKoko / ruudunKoko / 2;
60        Vector s = new Vector(RandomGen.NextInt(kentanMin, kentanMax) * ruudunKoko, RandomGen.NextInt(kentanMin, kentanMax) * ruudunKoko);
61        return s;
62    }
63
64    void EtsiReitti()
65    {
66        PhysicsObject alku = (PhysicsObject)palikat.Find(delegate(GameObject a) { return a.Color == Color.Green; });
67        PhysicsObject loppu = (PhysicsObject)palikat.Find(delegate(GameObject l) { return l.Color == Color.Red; });
68        Vector suunta = loppu.Position - alku.Position;
69        RaySegment r = new RaySegment(alku.Position, suunta, 1);
70        PhysicsObject path = new PhysicsObject(r);
71        Add(path);
72    }
73}
Note: See TracBrowser for help on using the repository browser.