source: 2017/27/SimoR/Pong/Pong/Pong/Pong.cs @ 8918

Revision 8918, 4.4 KB checked in by sieerinn, 4 years ago (diff)

Räjähdykset ja aivot.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Pong : PhysicsGame
10{
11    double nopeus = 500;
12    PhysicsObject pelaaja;
13
14    Image pumKuva = LoadImage("pum");
15
16    public override void Begin()
17    {
18        LuoKentta();
19        LisaaOhjaimet();
20    }
21
22    void LuoPelaaja()
23    {
24        pelaaja = new PhysicsObject(50, 50);
25        pelaaja.Color = Color.Green;
26        Add(pelaaja);
27
28        AddCollisionHandler(pelaaja, "pallo", OsuiPalloon);
29        AddCollisionHandler(pelaaja, "pahapallo", OsuiPahaanPalloon);
30    }
31
32    void LuoVihollinen()
33    {
34        PhysicsObject vihu = new PhysicsObject(30, 30);
35        vihu.Tag = "vihollinen";
36        vihu.Shape = Shape.Circle;
37        vihu.Color = Color.Blue;
38        vihu.X = -300;
39        Add(vihu);
40
41        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
42        seuraajanAivot.Speed = 50;                 // Millä nopeudella kohdetta seurataan
43        seuraajanAivot.DistanceFar = 600;           // Etäisyys jolla aletaan seurata kohdetta
44        seuraajanAivot.DistanceClose = 100;         // Etäisyys jolloin ollaan lähellä kohdetta
45        seuraajanAivot.StopWhenTargetClose = true;  // Pysähdytään kun ollaan lähellä kohdetta
46        seuraajanAivot.TurnWhileMoving = true;
47        //seuraajanAivot.FarBrain = satunnaisAivot;
48
49        vihu.Brain = seuraajanAivot;
50
51        AssaultRifle ase = new AssaultRifle(60, 20);
52        ase.ProjectileCollision = AmmusOsui;
53        ase.FireRate = 900;
54        vihu.Add(ase);
55
56        Timer ajastin = new Timer();
57        ajastin.Interval = 0.02;
58        ajastin.Timeout += delegate { AmmuAseella(ase); };
59        ajastin.Start();
60    }
61
62    void AmmuAseella(AssaultRifle ase)
63    {
64        PhysicsObject ammus = ase.Shoot();
65
66        if (ammus != null)
67        {
68            //ammus.Size *= 3;
69            //ammus.Image = ...
70            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
71        }
72    }
73
74    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
75    {
76        ammus.Destroy();
77    }
78
79    void OsuiPalloon(PhysicsObject tormaaja, PhysicsObject kohde)
80    {
81        tormaaja.Size *= 1.1;
82        kohde.Destroy();
83    }
84
85    void OsuiPahaanPalloon(PhysicsObject tormaaja, PhysicsObject kohde)
86    {
87        tormaaja.Size *= 0.8;
88        kohde.Destroy();
89
90        Explosion rajahdys = new Explosion(50);
91        rajahdys.Image = pumKuva;
92        rajahdys.Position = kohde.Position;
93        Add(rajahdys);
94    }
95
96    void LuoKentta()
97    {
98        Level.Width = Window.Width;
99        Level.Height= Window.Height;
100
101        LuoPelaaja();
102        LuoVihollinen();
103
104        for (int i = 0; i < 120; i++)
105        {
106            LuoPallo(RandomGen.NextDouble(Level.Left, Level.Right), RandomGen.NextDouble(Level.Bottom, Level.Top));
107        }
108
109        for (int i = 0; i < 60; i++)
110        {
111            LuoPahaPallo(RandomGen.NextDouble(Level.Left, Level.Right), RandomGen.NextDouble(Level.Bottom, Level.Top));
112        }
113
114        Level.Background.Color = Color.Black;
115        Level.CreateBorders();
116    }
117
118    void LuoPallo(double x, double y)
119    {
120        PhysicsObject pallo = new PhysicsObject(10, 10);
121        pallo.Tag = "pallo";
122        pallo.Shape = Shape.Circle;
123        pallo.X = x;
124        pallo.Y = y;
125        Add(pallo);
126    }
127
128    void LuoPahaPallo(double x, double y)
129    {
130        PhysicsObject pallo = new PhysicsObject(20, 20);
131        pallo.Tag = "pahapallo";
132        pallo.Shape = Shape.Circle;
133        pallo.Color = Color.Red;
134        pallo.X = x;
135        pallo.Y = y;
136        Add(pallo);
137    }
138
139    void LisaaOhjaimet()
140    {
141        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
142
143        Keyboard.Listen(Key.Up, ButtonState.Down, Liikuta, "Pelaaja liikkuu ylös", new Vector(0, nopeus));
144        Keyboard.Listen(Key.Down, ButtonState.Down, Liikuta, "Pelaaja liikkuu alas", new Vector(0, -nopeus));
145        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", new Vector(-nopeus, 0));
146        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", new Vector(nopeus, 0));
147    }
148
149    void Liikuta(Vector suunta)
150    {
151        pelaaja.Push(suunta);
152    }
153}
Note: See TracBrowser for help on using the repository browser.