source: 2018/24/TOMASM/TomaksenPeli/TomaksenPeli/TomaksenPeli.cs @ 9785

Revision 9770, 6.1 KB checked in by tovitama, 2 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Widgets;
7
8public class TomaksenPeli : PhysicsGame
9{
10    PhysicsObject kolmio1;
11    PhysicsObject kolmio2;
12    Image alus2 = LoadImage("avaruusalus2");
13    Image alus1 = LoadImage("avaruusalus1");
14    Image ruoho = LoadImage("space");
15    int pelaajanTerveys = 7;
16    Image olionKuva = LoadImage("keltapallo");
17
18    AssaultRifle pelaajan1Ase;
19    AssaultRifle pelaajan2Ase;
20    IntMeter pisteLaskuri;
21
22    public override void Begin()
23    {
24        Level.Background.Image = ruoho;
25        Level.Background.Size = Screen.Size;
26
27        kolmio1 = LuoPelaaja(35, new Vector(-120, 50), alus1);
28        kolmio2 = LuoPelaaja(35, new Vector(120, 50), alus2);
29        pelaajan1Ase = LuoPelaajanAse(kolmio1);
30        pelaajan2Ase = LuoPelaajanAse(kolmio2);
31        Level.AmbientLight = 0.3;
32
33        LuoPistelaskuri();
34
35
36       // Camera.Follow(kolmio1, kolmio2);
37
38
39
40        Keyboard.Listen(Key.A, ButtonState.Down, Rotate, "rotate to left", kolmio1, 3.0);
41        Keyboard.Listen(Key.D, ButtonState.Down, Rotate, "rotate to right", kolmio1, -3.0);
42        Keyboard.Listen(Key.W, ButtonState.Down, Thrust, "thrust forward", kolmio1, 300.0);
43
44        Keyboard.Listen(Key.A, ButtonState.Released, Rotate, "", kolmio1, 0.0);
45        Keyboard.Listen(Key.D, ButtonState.Released, Rotate, "", kolmio1, 0.0);
46
47        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
48        Keyboard.Listen(Key.Enter, ButtonState.Down, AmmuAseella, "Ammu", pelaajan2Ase);
49
50
51        Keyboard.Listen(Key.Left, ButtonState.Down, Rotate, "rotate to left", kolmio2, 3.0);
52        Keyboard.Listen(Key.Right, ButtonState.Down, Rotate, "rotate to right", kolmio2, -3.0);
53        Keyboard.Listen(Key.Up, ButtonState.Down, Thrust, "thrust forward", kolmio2, 350.0);
54
55        Keyboard.Listen(Key.Left, ButtonState.Released, Rotate, "", kolmio2, 0.0);
56        Keyboard.Listen(Key.Right, ButtonState.Released, Rotate, "", kolmio2, 0.0);
57
58        AddCollisionHandler(kolmio2, "pahis", PelaajaTormasi);
59        AddCollisionHandler(kolmio1, "pahis", PelaajaTormasi);
60        AddCollisionHandler(kolmio1, "health", PelaajaParantuu);
61
62        Surfaces seinat = Level.CreateBorders(false);
63        seinat.Left.Tag = "seina";
64        seinat.Right.Tag = "seina";
65        seinat.Bottom.Tag = "seina";
66        seinat.Top.Tag = "seina";
67       
68        LuoRandomOlio();
69        Timer ajastin = new Timer();
70        ajastin.Interval = 1.6;
71        ajastin.Timeout += LuoRandomOlio;
72        ajastin.Start();
73
74
75
76        //foreach (Surface s in Level.CreateBorders(false)) s.Tag = "pahis";
77        // kolmio2.Tag = "pahis";
78        //kolmio1.Tag = "pahis";
79        //kolmio2.LifetimeLeft = TimeSpan.FromSeconds(3.0);
80
81
82        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
83    }
84
85    void Rotate(PhysicsObject kolmio1, double kiertonopeus)
86    {
87
88        kolmio1.AngularVelocity = kiertonopeus;
89
90    }
91    void Thrust(PhysicsObject kolmio1, double acceleration)
92    {
93        Vector playerDirection = Vector.FromLengthAndAngle(acceleration, kolmio1.Angle);
94        kolmio1.Push(playerDirection);
95
96    }
97
98    void PelaajaTormasi(PhysicsObject pelaaja, PhysicsObject kohde)
99    {
100        MessageDisplay.Add("-1 life!");
101        pisteLaskuri.AddValue(-5);       
102            pelaajanTerveys--;
103
104
105
106        //if (pelaajanTerveys <= 0)
107        //kolmio1.Destroy();
108        //kolmio2.Destroy();
109        if (pelaajanTerveys <= 0)
110        {
111            pelaaja.Destroy();
112            MessageDisplay.Add("You Have No Lives Left.");
113            MessageDisplay.Add("DEED BOII!");
114        }
115    }
116    void LuoRandomOlio()
117    {
118
119        PhysicsObject olio = new PhysicsObject(45, 45);
120        olio.Image = olionKuva;
121        olio.Position = Level.GetRandomPosition();
122        Add(olio);
123       
124        FollowerBrain seuraajanAivot = new FollowerBrain(kolmio1, kolmio2)
125        {
126            Speed = 100,
127            Active = true,
128    };
129        olio.Brain = seuraajanAivot;
130        //AddCollisionHandler(olio, "hyvis", OlioonOsui);
131        olio.Tag = "pahis";
132
133    }
134 
135   
136
137
138
139    PhysicsObject LuoPelaaja(double koko, Vector sijainti, Image avaruusalus)
140    {
141        PhysicsObject pelaaja = new PhysicsObject(koko, koko)
142        {
143            Tag = "pelaaja",
144            Position = sijainti,
145            Image = avaruusalus,
146            CollisionIgnoreGroup = 1
147        };
148        Add(pelaaja,1);
149        return pelaaja;
150    }
151    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
152    {
153        if (kohde.Tag != "pelaaja" && kohde.Tag != "seina")
154        {
155            kohde.Destroy();
156            pisteLaskuri.AddValue(10);
157        }
158        ammus.Destroy();
159       
160    }
161
162    void PelaajaParantuu(PhysicsObject kolmio1, PhysicsObject kohde)
163    {
164        pelaajanTerveys++;
165    }
166
167
168    void AmmuAseella(AssaultRifle ase)
169    {
170       
171        PhysicsObject ammus = ase.Shoot();
172
173
174        if (ammus != null)
175        {
176            ammus.Tag = "hyvis";
177            ammus.CollisionIgnoreGroup = 1;
178        }
179        {
180            //ammus.Size *= 3;
181            //ammus.Image = ...
182            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
183        }
184    }
185    AssaultRifle LuoPelaajanAse(PhysicsObject omistaja)
186    {
187        AssaultRifle ase = new AssaultRifle(1, 1);
188
189        ase.InfiniteAmmo = true;
190       
191        ase.ProjectileCollision = AmmusOsui;
192        ase.FireRate = 7.0;
193        ase.Power.DefaultValue = 500.0;
194        omistaja.Add(ase);
195        return ase;
196    }
197    void LuoPistelaskuri()
198    {
199        pisteLaskuri = new IntMeter(0);
200
201        Label pisteNaytto = new Label();
202        pisteNaytto.X = Screen.Right + -030;
203        pisteNaytto.Y = Screen.Top - 30;
204        pisteNaytto.TextColor = Color.Black;
205        pisteNaytto.Color = Color.White;
206
207        pisteNaytto.BindTo(pisteLaskuri);
208        Add(pisteNaytto);
209    }
210}
211
212
213
214       
Note: See TracBrowser for help on using the repository browser.