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

Revision 5619, 4.7 KB checked in by sidatogr, 9 years ago (diff)

Peli melkein valmis.

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    Image PelaajaKuva = LoadImage("Pelaaja123");
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        // TODO - Background (!!2d camo background) (minecraft grass block top!!)
31        // TODO -  Alien Paint.Net
32
33        Level.CreateBorders ();
34        Camera.ZoomToLevel();
35       
36        Timer ajastin = new Timer();
37        ajastin.Interval = 6.9;
38        ajastin.Timeout += LuoHyokkaaja;
39        ajastin.Start();
40
41        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-1000, 0));
42        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, null, new Vector(1000, 0));
43        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 1000));
44        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -1000));
45       
46        Level.Background.Color = Color.DarkForestGreen;
47       
48        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
49        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
50    }
51    void LiikutaPelaajaa(Vector vektori)
52    {
53        Pelaaja.Push(vektori);
54    }
55
56    void KunOllaanLahella()
57    {
58        if (!Pelaaja.IsDestroyed)
59        {
60            aikaLaskuri.Stop();
61            Pelaaja.Destroy();
62            MessageDisplay.Add("Hävisit");
63
64            Explosion rajahdys = new Explosion(500);
65            rajahdys.Position = Pelaaja.Position;
66            Add(rajahdys);
67            rajahdys.Speed = 600.0;
68            rajahdys.Force = 500;
69
70            Timer.SingleShot(2.5, AloitaPeli);
71        }
72       
73    }
74
75    void LuoAikaLaskuri()
76    {
77        aikaLaskuri = new Timer();
78        aikaLaskuri.Start();
79
80        Label aikaNaytto = new Label();
81        aikaNaytto.TextColor = Color.White;
82        aikaNaytto.DecimalPlaces = 1;
83        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
84        Add(aikaNaytto);
85
86    }
87    void Luokentta()
88    {
89        Pelaaja = new PhysicsObject(60, 60);
90        Pelaaja.Tag = "Pelaaja";
91        Pelaaja.Image = PelaajaKuva;
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.Down, AmmuAseella, "Ammu", PelaajanAse);
102
103        Mouse.ListenMovement(0.0, Tahtaa, "Tähtää aseella");
104    }
105    void LuoHyokkaaja()
106    {
107        for (int i = 0; i < 30; i++)
108        {
109            FollowerBrain SeuraajanAivot = new FollowerBrain("Pelaaja");
110            SeuraajanAivot.Speed = 200;
111            SeuraajanAivot.DistanceFar = 8000;
112            SeuraajanAivot.DistanceClose = 55;
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}
Note: See TracBrowser for help on using the repository browser.