source: 2013/30/RikoV/PerusPeli3/PerusPeli3/PerusPeli3/PerusPeli3.cs @ 4601

Revision 4601, 5.0 KB checked in by rikvalko, 8 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 PerusPeli3 : PhysicsGame
10{
11    Image pelaajanKuva = LoadImage("poliisi1");
12    Image vihollisenkuva = LoadImage("poliisi2");
13    Pelaaja pelaaja;
14
15    public override void Begin()
16    {
17        alkuvalikko();
18    }
19
20    void aloitapeli()
21    {
22        Mouse.IsCursorVisible = true;
23        Level.BackgroundColor = Color.Black;
24
25        Luokentta();
26        Camera.Follow(pelaaja);
27
28        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
29
30        Keyboard.Listen(Key.Up, ButtonState.Down, Liikutapelaajaa, "liikuttaa pelaajaa", pelaaja, new Vector(0, 30));
31        Keyboard.Listen(Key.Down, ButtonState.Down, Liikutapelaajaa, "liikuttaa pelaajaa", pelaaja, new Vector(0, -30));
32        Keyboard.Listen(Key.Left, ButtonState.Down, Liikutapelaajaa, "liikuttaa pelaajaa", pelaaja, new Vector(-30, 0));
33        Keyboard.Listen(Key.Right, ButtonState.Down, Liikutapelaajaa, "liikuttaa pelaajaa", pelaaja, new Vector(30, 0));
34
35        Mouse.ListenMovement(0.0, KuunteleLiiketta, null);
36        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, Ammu, "Ammu aseella.", pelaaja.Ase);
37    }
38
39    void alkuvalikko()
40    {
41        MultiSelectWindow alkuValikko = new MultiSelectWindow("Alkuvalikko", "Aloita peli", "Parhaat pisteet", "Lopeta");
42        Add(alkuValikko);
43
44        alkuValikko.AddItemHandler(0, aloitapeli);
45        //alkuValikko.AddItemHandler(1, ParhaatPisteet);
46        alkuValikko.AddItemHandler(2, Exit);
47    }
48
49    void KuunteleLiiketta(AnalogState hiirenTila)
50    {
51        pelaaja.Angle = (Mouse.PositionOnWorld - pelaaja.Position).Angle;
52    }
53
54    void Liikutapelaajaa(PhysicsObject pelaaja, Vector suunta)
55    {
56        pelaaja.Hit(suunta);
57    }
58
59    void Luokentta()
60    {
61        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta1");
62
63        ruudut.SetTileMethod(Color.Black, LuoTaso);
64        ruudut.SetTileMethod("4CFF00", LuoPelaaja);
65        ruudut.SetTileMethod("FF0000", luovihollinen);
66        ruudut.Execute(60, 60);
67
68        LuoElamaLaskuri();
69    }
70
71    void LuoElamaLaskuri()
72    {
73        ProgressBar elamaPalkki = new ProgressBar(150, 20);
74        elamaPalkki.X = Screen.Left + 150;
75        elamaPalkki.Y = Screen.Top - 20;
76        elamaPalkki.BindTo(pelaaja.ElamaLaskuri);
77        Add(elamaPalkki);
78    }
79
80    void ElamaLoppui()
81    {
82        MessageDisplay.Add("Elämät loppuivat, voi voi.");
83    }
84
85    void luovihollinen(Vector paikka, double levelys, double korkeus)
86    {
87        Vihollinen vihollinen = new Vihollinen(levelys, korkeus);
88        vihollinen.Shape = Shape.Circle;
89        vihollinen.Position = paikka;
90        vihollinen.Image = vihollisenkuva;
91        vihollinen.LinearDamping = 0.8;
92        Add(vihollinen);
93
94        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
95        seuraajanAivot.Speed = 300;     
96        seuraajanAivot.DistanceFar = 600;
97        seuraajanAivot.DistanceClose = 200;
98        seuraajanAivot.StopWhenTargetClose = true;
99
100        vihollinen.Brain = seuraajanAivot;
101    }
102
103    void LuoPelaaja(Vector paikka, double levelys, double korkeus)
104    {
105        pelaaja = new Pelaaja(levelys, korkeus);
106        pelaaja.Shape = Shape.Circle;
107        pelaaja.Position = paikka;
108        pelaaja.Image = pelaajanKuva;
109        pelaaja.LinearDamping = 0.8;
110        Add(pelaaja);
111        pelaaja.Ase.ProjectileCollision = AmmusOsui;
112    }
113
114    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
115    {
116        ammus.Destroy();
117    }
118
119    void LuoTaso(Vector paikka, double leveys, double korkeus)
120    {
121        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
122        taso.Position = paikka;
123        //taso.Image = groundImage;
124        taso.CollisionIgnoreGroup = 1;
125        Add(taso);
126    }
127
128    void Ammu(AssaultRifle ase)
129    {
130        PhysicsObject ammus = ase.Shoot();
131
132        if (ammus != null)
133        {
134            ammus.Size *= 50;
135            //ammus.Image = ...
136            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
137        }
138
139
140
141    }
142}
143
144class Pelaaja : PhysicsObject
145{
146    private IntMeter elamaLaskuri = new IntMeter(30, 0, 30);
147    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
148
149    public AssaultRifle Ase;
150
151    public Pelaaja(double leveys, double korkeus)
152        : base(leveys, korkeus)
153    {
154        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
155        Tag = "pelaaja";
156
157        Ase = new AssaultRifle(30, 10);
158        Ase.Ammo.Value = 1000;
159        Add(Ase);
160    }
161}
162
163class Vihollinen : PhysicsObject
164{
165    private IntMeter elamaLaskuri = new IntMeter(30, 0, 30);
166    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
167
168
169
170    public Vihollinen(double leveys, double korkeus)
171        : base(leveys, korkeus)
172    {
173        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
174    }
175}
Note: See TracBrowser for help on using the repository browser.