source: 2011/23/tojukarp/EuroPacman/EuroPacman/EuroPacman/Peli.cs @ 10335

Revision 1873, 3.0 KB checked in by tojukarp, 8 years ago (diff)

New game

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Peli : PhysicsGame
10{
11    Image[] pacKuvat = LoadImages("pac1", "pac2", "pac3", "pac4", "pac5");
12    Image esKuva = LoadImage("es");
13
14    const double maxPurkkeja = 10;
15    double purkkejaKentalla = 0;
16
17    IntMeter esCounter = new IntMeter(0);
18
19    public override void Begin()
20    {
21        Level.BackgroundColor = Color.LightPink;
22        Level.Width = 600;
23        Level.Height = 800;
24        Level.CreateBorders();
25        Camera.ZoomToLevel();
26
27        CrazyObject pacman = new CrazyObject(64, 64, 0);
28        pacman.Animation = new Animation(pacKuvat);
29        pacman.Animation.FPS = 20;
30        pacman.Animation.Start();
31        pacman.Mass = 1.0;
32        Add(pacman);
33
34        Timer esTimer = new Timer();
35        esTimer.Interval = 2.0;
36        esTimer.Trigger += new Timer.TriggerHandler(spawnES);
37        esTimer.Start();
38
39        Label pisteNaytto = new Label();
40        pisteNaytto.TextColor = Color.Yellow;
41        pisteNaytto.Left = Screen.Left + 20;
42        pisteNaytto.Top = Screen.Top - 30;
43        pisteNaytto.BindTo(esCounter);
44        Add(pisteNaytto);
45
46        Keyboard.Listen(Key.Left, ButtonState.Down, Liiku, null, pacman, -30 * Vector.UnitX);
47        Keyboard.Listen(Key.Right, ButtonState.Down, Liiku, null, pacman, 30 * Vector.UnitX);
48        Keyboard.Listen(Key.Up, ButtonState.Down, Liiku, null, pacman, 30 * Vector.UnitY);
49        Keyboard.Listen(Key.Down, ButtonState.Down, Liiku, null, pacman, -30 * Vector.UnitY);
50        Keyboard.Listen(Key.Enter, ButtonState.Pressed, UusiPeli, null);
51
52        AddCollisionHandler(pacman, PacmanTormaa);
53    }
54
55    void UusiPeli()
56    {
57        ClearAll();
58        esCounter.Reset();
59        Begin();
60    }
61
62    void Liiku(PhysicsObject olio, Vector liike)
63    {
64        olio.Angle = liike.Angle;
65        //olio.Move(liike);
66        olio.Hit(liike * olio.Mass);
67    }
68
69    void spawnES(Timer sender)
70    {
71        if (purkkejaKentalla >= maxPurkkeja) return;
72
73        CrazyObject purkki = new CrazyObject(10, 30, 1);
74        purkki.IgnoresCollisionResponse = true;
75        purkki.Image = esKuva;
76        purkki.Animation.FPS = 20;
77        purkki.Animation.Start();
78        purkki.X = RandomGen.NextDouble(Level.Left, Level.Right);
79        purkki.Y = RandomGen.NextDouble(Level.Bottom, Level.Top);
80        Add(purkki);
81   }
82
83    void PacmanTormaa(PhysicsObject tormaaja, PhysicsObject kohde)
84    {
85        if (tormaaja is CrazyObject && kohde is CrazyObject)
86        {
87            ((CrazyObject)tormaaja).Vibration += ((CrazyObject)kohde).Vibration;
88            kohde.Destroy();
89            esCounter.Value++;
90        }
91        else
92        {
93            Explosion paukku = new Explosion(tormaaja.Width);
94            paukku.Position = tormaaja.Position;
95            Add(paukku);
96            tormaaja.Destroy();
97        }
98    }
99}
Note: See TracBrowser for help on using the repository browser.