source: 2014/30/SimonG/OmaPeli2014/OmaPeli2014/OmaPeli2014/OmaPeli2014.cs @ 5592

Revision 5592, 4.7 KB checked in by sidatogr, 8 years ago (diff)

Viholliset hyökkäävät nyt Pelaajan kimppuun, ajastimet yms laitettu.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class OmaPeli2014 : PhysicsGame
10{
11    PhysicsObject Pelaaja;
12    AssaultRifle PelaajanAse;
13    Timer aikaLaskuri;
14
15    public override void Begin()
16    {
17        IsMouseVisible = true;
18        SetWindowSize (800, 600);
19        AloitaPeli();
20    }
21
22    void AloitaPeli()
23    {
24        ClearAll();
25
26        Luokentta();
27        LuoHyokkaaja();
28        LuoAikaLaskuri();
29       
30        Level.CreateBorders ();
31        Camera.ZoomToLevel();
32       
33        Timer ajastin = new Timer();
34        ajastin.Interval = 6.9;
35        ajastin.Timeout += LuoHyokkaaja;
36        ajastin.Start();
37
38        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-1000, 0));
39        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, null, new Vector(1000, 0));
40        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 1000));
41        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -1000));
42       
43        Level.Background.Color = Color.DarkForestGreen;
44
45        // TODO: Kirjoita ohjelmakoodisi tähän
46       
47        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
48        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
49    }
50    void LiikutaPelaajaa(Vector vektori)
51    {
52        Pelaaja.Push(vektori);
53    }
54
55    void KunOllaanLahella()
56    {
57        if (!Pelaaja.IsDestroyed)
58        {
59            aikaLaskuri.Stop();
60            Pelaaja.Destroy();
61            MessageDisplay.Add("Hävisit");
62
63            Explosion rajahdys = new Explosion(1000);
64            rajahdys.Position = Pelaaja.Position;
65            Add(rajahdys);
66            rajahdys.Speed = 400.0;
67            rajahdys.Force = 1000;
68
69            Timer.SingleShot(4, AloitaPeli);
70        }
71       
72    }
73
74    void LuoAikaLaskuri()
75    {
76        aikaLaskuri = new Timer();
77        aikaLaskuri.Start();
78
79        Label aikaNaytto = new Label();
80        aikaNaytto.TextColor = Color.White;
81        aikaNaytto.DecimalPlaces = 1;
82        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
83        Add(aikaNaytto);
84
85    }
86    void Luokentta()
87    {
88        Pelaaja = new PhysicsObject(60, 60);
89        Pelaaja.Shape = Shape.Circle;
90        Pelaaja.Color = Color.Blue;
91        Pelaaja.Tag = "Pelaaja";
92        Add(Pelaaja);
93        Pelaaja.LinearDamping = 0.9;
94       
95        PelaajanAse = new AssaultRifle(70, 30);
96        PelaajanAse.Ammo.Value = 10000;
97        PelaajanAse.ProjectileCollision = AmmusOsui;
98        Pelaaja.Add(PelaajanAse);
99        PelaajanAse.AttackSound = null;
100       
101        Mouse.Listen (MouseButton.Left, ButtonState.Pressed, AmmuAseella, "Ammu", PelaajanAse);
102
103        Mouse.ListenMovement(0.0, Tahtaa, "Tähtää aseella");
104    }
105    void LuoHyokkaaja()
106    {
107        for (int i = 0; i < 18; i++)
108        {
109            FollowerBrain SeuraajanAivot = new FollowerBrain("Pelaaja");
110            SeuraajanAivot.Speed = 200;
111            SeuraajanAivot.DistanceFar = 8000;
112            SeuraajanAivot.DistanceClose = 56;
113            SeuraajanAivot.StopWhenTargetClose = false;
114            SeuraajanAivot.TargetClose += KunOllaanLahella;
115            SeuraajanAivot.Active = true;
116           
117            PhysicsObject Hyokkaaja = new PhysicsObject(50, 50);
118            Hyokkaaja.Shape = Shape.Circle;
119            Hyokkaaja.Color = Color.MediumPurple;
120            Hyokkaaja.Tag = "Hyokkaaja";
121            Add(Hyokkaaja);
122            Hyokkaaja.Brain = SeuraajanAivot;
123            SeuraajanAivot.Speed = 69;
124            Hyokkaaja.LinearDamping = 0.9;
125           
126            if (RandomGen.NextBool())
127            {
128                Hyokkaaja.X = RandomGen.SelectOne(Level.Left, Level.Right);
129                Hyokkaaja.Y = RandomGen.NextDouble(Level.Top, Level.Bottom);
130            }
131            else
132            {
133                Hyokkaaja.X = RandomGen.NextDouble(Level.Left + 50, Level.Right - 50);
134                Hyokkaaja.Y = RandomGen.SelectOne(Level.Bottom + 50, Level.Top - 50);
135            }
136        }
137    }
138    void Tahtaa(AnalogState hiirenliike)
139    {
140        Vector suunta = (Mouse.PositionOnWorld - PelaajanAse.AbsolutePosition).Normalize();
141        PelaajanAse.AbsoluteAngle = suunta.Angle;
142    }
143    void AmmusOsui(PhysicsObject ammus, PhysicsObject Hyokkaaja)
144    {
145        ammus.Destroy();
146        if (Hyokkaaja.Tag.Equals("Hyokkaaja")) Hyokkaaja.Destroy();
147    }
148    void AmmuAseella(AssaultRifle ase)
149    {
150        PhysicsObject ammus = ase.Shoot();
151    }
152
153}
Note: See TracBrowser for help on using the repository browser.