source: 2011/26/JaniN/neon wars/neon wars/neon wars/Peli.cs @ 2314

Revision 2314, 7.7 KB checked in by janiemit, 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;
8using Physics2DDotNet.Joints;
9using Physics2DDotNet.Ignorers;
10
11class Pelaaja : PhysicsObject
12{
13    public int Elamat = 10;
14
15    public Pelaaja(double leveys, double korkeus)
16        : base(leveys, korkeus)
17    {
18    }
19}
20class vihulainen : PhysicsObject
21{
22    public int Elamat = 2;
23
24    public vihulainen(double leveys, double korkeus)
25        : base(leveys, korkeus)
26    {
27    }
28}
29public class Peli : PhysicsGame
30{
31    Pelaaja pelaaja;
32    GameObject pyssy;
33    int montakoVihollistaLuotu = 0;
34    int montakoVihollistaLuodaan = 1;
35    PhysicsObject alareuna;
36    int pisteet = 0;
37    bool ladattu = true;
38    Label pistelaskuri;
39    int vihollisia;
40    int montakoVihollistaRuudullaEnintaan = 10;
41    BarGauge pelaajaElamaPalkki;
42    DoubleMeter pelaajanElamat;
43    Image peliloppui = LoadImage("gameover");
44    int kentanLeveys = 400;
45    int kentanKorkeus = 380;
46
47
48    public override void Begin()
49    {
50        ClearAll();
51        Keyboard.Listen(Key.Enter, ButtonState.Released, Start_game, null);
52        aloitusruudunnappulat();
53    }
54
55    void Start_game()
56    {
57        ClearAll();
58       
59        //Level.Width = Level.Width * 2;
60        Level.Width = kentanLeveys;
61        //Level.Height = Level.Height * 2;
62        //Level.Height = Level.Height / 2;
63        aseta_näppäimet();
64        Mouse.IsCursorVisible = true;
65        Camera.ZoomToLevel();
66        Timer latausajastin = new Timer();
67        latausajastin.Interval = 0.03;
68        latausajastin.Trigger += new Timer.TriggerHandler(latausajastin_Trigger);
69        latausajastin.Start();
70
71
72        vihollisia = 0;
73        montakoVihollistaLuodaan = 1;
74        montakoVihollistaRuudullaEnintaan = 10;
75        montakoVihollistaLuotu = 0;
76
77        Level.BackgroundColor = Color.DarkCyan;
78
79
80        Timer vihollistenLuontiAjastin = new Timer();
81        vihollistenLuontiAjastin.Interval = 1;
82        vihollistenLuontiAjastin.Trigger += TeeVihollisia;
83        vihollistenLuontiAjastin.Start();
84        //TeeVihollinen(ajastin);
85
86        Timer vihollistenLuomisenNopeutus = new Timer();
87        vihollistenLuomisenNopeutus.Interval = 5; // Kuinka monen sekunnin välein vihuja tulee lisää
88        vihollistenLuomisenNopeutus.Trigger += NopeutaVihollistenLuontia;
89        vihollistenLuomisenNopeutus.Tag = vihollistenLuontiAjastin;
90        vihollistenLuomisenNopeutus.Start();
91
92        pelaaja = new Pelaaja(50.0, 50.0);
93        pelaaja.X = 0;
94        pelaaja.Color = Color.Blue;
95        pelaaja.CollisionIgnoreGroup = 1;
96        pelaaja.Shape = Shape.Triangle;
97        pelaaja.Y = Level.Bottom + 100;
98        Add(pelaaja);
99
100        pelaajanElamat = new DoubleMeter(pelaaja.Elamat);
101        pelaajanElamat.LowerLimit += PeliLoppui;
102
103        pelaajaElamaPalkki = new BarGauge(20, Screen.Width / 3);
104        //pelaajaElamaPalkki.X = Screen.Left + Screen.Width / 4;
105        pelaajaElamaPalkki.Y = Screen.Bottom + 40;
106        pelaajaElamaPalkki.Angle = -Angle.FromDegrees(90);
107        pelaajaElamaPalkki.Color = Color.Red;
108        pelaajaElamaPalkki.BarColor = Color.Green;
109       
110        pelaajaElamaPalkki.BorderColor = Color.Purple;
111        pelaajanElamat.MaxValue = 10;
112        pelaajanElamat.Value = 10;
113        pelaajaElamaPalkki.BindTo(pelaajanElamat);
114       
115        Add(pelaajaElamaPalkki);
116
117        pyssy = new GameObject(100, 5);
118        pyssy.Color = Color.Black;
119        pelaaja.Add(pyssy);
120
121        pyssy.Image = LoadImage("Untitled");
122        Level.CreateBorders();
123
124        alareuna = Level.CreateBottomBorder();
125
126
127        pistelaskuri = new Label(pisteet.ToString());
128        pistelaskuri.Position = new Vector(Screen.Right - 40, Screen.Top - 10);
129        Add(pistelaskuri);
130    }
131
132    void PeliLoppui(double arvo)
133    {
134        ClearAll();
135        Level.Background.Image = peliloppui;
136        Timer.SingleShot(3, Begin);
137    }
138
139    void latausajastin_Trigger(Timer sender)
140    {
141        ladattu = true;
142    }
143
144    void aseta_näppäimet()
145    {
146        Mouse.Listen(MouseButton.Left, ButtonState.Down, ampuu, null);
147    }
148
149
150    protected override void Update(Time time)
151    {
152        if (pyssy != null)
153        {
154            pyssy.Angle = (Mouse.PositionOnWorld - pelaaja.Position).Angle;
155        }
156
157        base.Update(time);
158    }
159
160    void ampuu()
161    {
162        if (!ladattu) return;
163        PhysicsObject ammus = new PhysicsObject(5, 5);
164        ammus.Velocity = (Mouse.PositionOnWorld - pelaaja.Position).Normalize() * 500;
165
166        ammus.Tag = "ammus";
167        ammus.Destroyed += new Action(delegate { ammus_Destroyed(ammus); });
168        Add(ammus);
169        ammus.Position = pelaaja.Position + (Mouse.PositionOnWorld - pelaaja.Position).Normalize() * ((pyssy.Width / 2) - 14);
170
171        AddCollisionHandler(ammus, KasitteleAmmuksenTormays);
172        ammus.Shape = Shape.Circle;
173        ammus.Color = Color.Black;
174        ladattu = false;
175    }
176
177    void ammus_Destroyed(PhysicsObject ammus)
178    {
179        Explosion rajahdys = new Explosion(70);
180        rajahdys.Position = ammus.Position;
181        rajahdys.Force = 0;
182        rajahdys.ShockwaveColor = Color.Transparent;
183        Add(rajahdys);
184    }
185
186    void KasitteleAmmuksenTormays(PhysicsObject ammus, PhysicsObject kohde)
187    {
188        if (kohde != pelaaja && kohde.Tag.ToString() != "ammus") ammus.Destroy();
189        if (kohde is vihulainen)
190        {
191            vihulainen vihu = kohde as vihulainen;
192            vihu.Color = Color.Red;
193            vihu.Elamat -= 1;
194            if (vihu.Elamat <= 0) { vihu.Destroy(); vihollisia--; }
195        }
196    }
197    void KasitteleVihollisenTormays(PhysicsObject vihollinen, PhysicsObject kohde)
198    {
199        if (kohde == alareuna)
200        {
201            vihollinen.Destroy();
202            vihollisia--;
203            pelaajanElamat.Value--;
204        }
205    }
206
207    void NopeutaVihollistenLuontia(Timer sender)
208    {
209        pisteet++;
210        pistelaskuri.Text = pisteet.ToString();
211        montakoVihollistaLuodaan += 1;
212        MessageDisplay.Add("aalto numero " + montakoVihollistaLuodaan);
213    }
214
215    void TeeVihollisia(Timer sender)
216    {
217        if (vihollisia < montakoVihollistaRuudullaEnintaan)
218        {
219            vihollisia+=montakoVihollistaLuodaan;
220            for (int i = 0; i < montakoVihollistaLuodaan; i++)
221            {
222                montakoVihollistaLuotu++; // montakoVihollistaLuotu = montakoVihollistaLuotu + 1;
223                vihulainen vihollinen = new vihulainen(50, 50);
224                vihollinen.Shape = Shape.Triangle;
225                vihollinen.Velocity = new Vector(0, 300);
226                vihollinen.X = RandomGen.NextDouble(Level.Left + 10, Level.Right - 10);
227                vihollinen.Y = Level.Top - 35;
228                vihollinen.Tag = "vihollinen";
229                vihollinen.Color = Color.Green;
230                vihollinen.CollisionIgnoreGroup = 1;
231                //vihollinen.Image = LoadImage("vihollinen");
232                vihollinen.Angle = Angle.StraightAngle;
233                vihollinen.CanRotate = false;
234                AddCollisionHandler(vihollinen, KasitteleVihollisenTormays);
235                Add(vihollinen);
236            }
237        }
238    }
239    void aloitusruudunnappulat()
240    {
241        Mouse.IsCursorVisible = true;
242        luonappi("Aloita peli", new Vector(0, 0), new Action(Start_game), Color.Aqua);
243        //luonappi("
244    }
245    void luonappi(string Teksti, Vector paikka, Action action, Color väri)
246    {
247        PushButton nappi = new PushButton(Teksti);
248        nappi.Position = paikka;
249        nappi.Clicked += action;
250        nappi.Color = väri;
251        Add(nappi);
252    }
253
254}
Note: See TracBrowser for help on using the repository browser.