source: 2011/24/VeikkaH/Pallopeli/Pallopeli/Pallopeli/Peli.cs @ 2023

Revision 2023, 5.2 KB checked in by veilhalo, 9 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 Peli : PhysicsGame
10{
11    SoundEffect maali = LoadSoundEffect("maali");
12    Image hahmoKuva = LoadImage("hahmo");
13    Image hahmo2Kuva = LoadImage("hahmo2");
14    Image palloKuva = LoadImage("pallo");
15    Image tahtiKuva = LoadImage("tahti");
16    double alkuLiike = 1;
17    PhysicsObject hahmo;
18    IntMeter pisteLaskuri;
19
20    public override void Begin()
21    {
22        IsFullScreen = true;
23        Level.CreateBorders(1, true);
24        Camera.ZoomToLevel();
25        Level.BackgroundColor = Color.Black;
26        MessageDisplay.TextColor = Color.White;
27        luoHahmo();
28        LuoLaskuri();
29        for (int i = 0; i < 1000; i++)
30        {
31            //luoPallo();
32            luoTahti();
33        }
34        pisteLaskuri.Reset();
35    }
36    void LuoLaskuri()
37    {
38
39        pisteLaskuri = new IntMeter(0);
40        pisteLaskuri.MaxValue = 100;
41        pisteLaskuri.UpperLimit += tahdetKeratty;
42
43        Label pisteNaytto = new Label();
44        pisteNaytto.X = 0;
45        pisteNaytto.Y = Screen.Bottom + 20;
46        pisteNaytto.TextColor = Color.Red;
47        pisteNaytto.HorizontalAlignment = HorizontalAlignment.Left;
48        pisteNaytto.Title = "Pisteet";
49
50        pisteNaytto.BindTo(pisteLaskuri);
51        Add(pisteNaytto);
52
53        PhysicsObject tietoPohja;
54        tietoPohja = PhysicsObject.CreateStaticObject(100, 30);
55        tietoPohja.Restitution = 1;
56        tietoPohja.KineticFriction = 0;
57        tietoPohja.X = 0;
58        tietoPohja.Y = Level.Bottom + 15;
59        tietoPohja.Color = Color.Aqua;
60        Add(tietoPohja);
61    }
62    void tahdetKeratty(int arvo)
63    {
64        MessageDisplay.Add("Voitit pelin!");
65    }
66    void luoPallo()
67    {
68        PhysicsObject pallo;
69        pallo = new PhysicsObject(RandomGen.NextDouble(10, 100), RandomGen.NextDouble(10, 100), Shape.Circle, CollisionShapeQuality.Best);
70        pallo.X = RandomGen.NextDouble(Level.Left, Level.Right);
71        pallo.Y = RandomGen.NextDouble(Level.Bottom, Level.Top);
72        pallo.Restitution = 1;
73        pallo.KineticFriction = 0;
74        pallo.Color = Color.Red;
75        pallo.Image = palloKuva;
76        Add(pallo);
77        pallo.Hit((new Vector(RandomGen.NextDouble(-1, 1), RandomGen.NextDouble(-1, 1)).Normalize()) * RandomGen.NextDouble(0, alkuLiike * 1000));
78    }
79    void luoTahti()
80    {
81        PhysicsObject tahti;
82        tahti = new PhysicsObject(10, 10);
83        tahti.X = RandomGen.NextDouble(Level.Left, Level.Right);
84        tahti.Y = RandomGen.NextDouble(Level.Bottom, Level.Top);
85        tahti.Restitution = 1;
86        tahti.KineticFriction = 0;
87        tahti.Color = Color.Yellow;
88        tahti.Image = tahtiKuva;
89        tahti.Tag = "tahti";
90        tahti.Mass = 0.1;
91        Add(tahti);
92    }
93    void luoHahmo()
94    {
95        hahmo = new PhysicsObject(50, 50, Shape.Circle);
96        hahmo.X = 0;
97        hahmo.Y = 0;
98        hahmo.Restitution = 1;
99        hahmo.KineticFriction = 0;
100        hahmo.Color = Color.Blue;
101        hahmo.Image = hahmoKuva;
102        hahmo.Mass = 1;
103        hahmo.LinearDamping = 0.9;
104        AddCollisionHandler(hahmo, osu);
105        Add(hahmo);
106
107        Vector ylos = new Vector(0, 1000);
108        Vector alas = new Vector(0, -1000);
109        Vector oikealle = new Vector(1000, 0);
110        Vector vasemmalle = new Vector(-1000, 0);
111
112        Keyboard.Listen(Key.Up, ButtonState.Down, aseta, "Liiku ylös", hahmo, ylos);
113        Keyboard.Listen(Key.Up, ButtonState.Released, aseta, null, hahmo, Vector.Zero);
114        Keyboard.Listen(Key.Down, ButtonState.Down, aseta, "Liiku alas", hahmo, alas);
115        Keyboard.Listen(Key.Down, ButtonState.Released, aseta, null, hahmo, Vector.Zero);
116        Keyboard.Listen(Key.Right, ButtonState.Down, aseta, "Liiku oikealle", hahmo, oikealle);
117        Keyboard.Listen(Key.Right, ButtonState.Released, aseta, null, hahmo, Vector.Zero);
118        Keyboard.Listen(Key.Left, ButtonState.Down, aseta, "Liiku vasemmalle", hahmo, vasemmalle);
119        Keyboard.Listen(Key.Left, ButtonState.Released, aseta, null, hahmo, Vector.Zero);
120
121        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohje");
122        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
123
124        Keyboard.Listen(Key.D1, ButtonState.Pressed, aseta, "Liiku vasemmalle", hahmo, vasemmalle);
125        }
126    void aseta (PhysicsObject hahmoAseta, Vector liike2)
127    {
128        hahmoAseta.Push(liike2);
129    }
130    void osu(PhysicsObject hahmo, PhysicsObject kohde)
131    {
132        bool alhaalla = false;
133        if (Keyboard.GetKeyState(Key.Up) == ButtonState.Down ||
134            Keyboard.GetKeyState(Key.Down) == ButtonState.Down ||
135            Keyboard.GetKeyState(Key.Left) == ButtonState.Down ||
136            Keyboard.GetKeyState(Key.Right) == ButtonState.Down)
137        {
138            alhaalla = true;
139        }
140        if ((kohde.Tag.ToString() == "tahti") && (alhaalla == true))
141        {
142            maali.Play();
143            MessageDisplay.Add("Keräsit tähden!");
144            kohde.Destroy();
145            pisteLaskuri.Value++;
146        }
147    }
148}
Note: See TracBrowser for help on using the repository browser.