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

Revision 9760, 5.5 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
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
34
35       // Camera.Follow(kolmio1, kolmio2);
36
37
38
39        Keyboard.Listen(Key.A, ButtonState.Down, Rotate, "rotate to left", kolmio1, 3.0);
40        Keyboard.Listen(Key.D, ButtonState.Down, Rotate, "rotate to right", kolmio1, -3.0);
41        Keyboard.Listen(Key.W, ButtonState.Down, Thrust, "thrust forward", kolmio1, 300.0);
42
43        Keyboard.Listen(Key.A, ButtonState.Released, Rotate, "", kolmio1, 0.0);
44        Keyboard.Listen(Key.D, ButtonState.Released, Rotate, "", kolmio1, 0.0);
45
46        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
47        Keyboard.Listen(Key.Enter, ButtonState.Down, AmmuAseella, "Ammu", pelaajan2Ase);
48
49
50        Keyboard.Listen(Key.Left, ButtonState.Down, Rotate, "rotate to left", kolmio2, 3.0);
51        Keyboard.Listen(Key.Right, ButtonState.Down, Rotate, "rotate to right", kolmio2, -3.0);
52        Keyboard.Listen(Key.Up, ButtonState.Down, Thrust, "thrust forward", kolmio2, 350.0);
53
54        Keyboard.Listen(Key.Left, ButtonState.Released, Rotate, "", kolmio2, 0.0);
55        Keyboard.Listen(Key.Right, ButtonState.Released, Rotate, "", kolmio2, 0.0);
56
57        AddCollisionHandler(kolmio2, "pahis", PelaajaTormasi);
58        AddCollisionHandler(kolmio1, "pahis", PelaajaTormasi);
59        AddCollisionHandler(kolmio1, "health", PelaajaParantuu);
60
61        Surfaces seinat = Level.CreateBorders(false);
62        seinat.Left.Tag = "seina";
63        seinat.Right.Tag = "seina";
64        seinat.Bottom.Tag = "seina";
65        seinat.Top.Tag = "seina";
66       
67        LuoRandomOlio();
68        Timer ajastin = new Timer();
69        ajastin.Interval = 1.0;
70        ajastin.Timeout += LuoRandomOlio;
71        ajastin.Start();
72
73
74
75        //foreach (Surface s in Level.CreateBorders(false)) s.Tag = "pahis";
76        // kolmio2.Tag = "pahis";
77        //kolmio1.Tag = "pahis";
78        //kolmio2.LifetimeLeft = TimeSpan.FromSeconds(3.0);
79
80
81        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
82    }
83
84    void Rotate(PhysicsObject kolmio1, double kiertonopeus)
85    {
86
87        kolmio1.AngularVelocity = kiertonopeus;
88
89    }
90    void Thrust(PhysicsObject kolmio1, double acceleration)
91    {
92        Vector playerDirection = Vector.FromLengthAndAngle(acceleration, kolmio1.Angle);
93        kolmio1.Push(playerDirection);
94
95    }
96
97    void PelaajaTormasi(PhysicsObject pelaaja, PhysicsObject kohde)
98    {
99        MessageDisplay.Add("-1 life!");
100
101        pelaajanTerveys--;
102
103
104
105        //if (pelaajanTerveys <= 0)
106        //kolmio1.Destroy();
107        //kolmio2.Destroy();
108        if (pelaajanTerveys <= 0)
109            pelaaja.Destroy();
110
111        if (pelaajanTerveys <= 0)
112        MessageDisplay.Add("You Have No Lives Left.");
113        MessageDisplay.Add("DEED BOII!");
114
115
116    }
117    void LuoRandomOlio()
118    {
119
120        PhysicsObject olio = new PhysicsObject(45, 45);
121        olio.Image = olionKuva;
122        olio.Position = Level.GetRandomPosition();
123        Add(olio);
124       
125        FollowerBrain seuraajanAivot = new FollowerBrain(kolmio1, kolmio2)
126        {
127            Speed = 50,
128            Active = true,
129    };
130        olio.Brain = seuraajanAivot;
131        //AddCollisionHandler(olio, "hyvis", OlioonOsui);
132        olio.Tag = "pahis";
133
134    }
135 
136   
137
138
139
140    PhysicsObject LuoPelaaja(double koko, Vector sijainti, Image avaruusalus)
141    {
142        PhysicsObject pelaaja = new PhysicsObject(koko, koko)
143        {
144            Tag = "pelaaja",
145            Position = sijainti,
146            Image = avaruusalus,
147            CollisionIgnoreGroup = 1
148        };
149        Add(pelaaja,1);
150        return pelaaja;
151    }
152    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
153    {
154        if (kohde.Tag != "pelaaja" && kohde.Tag != "seina") 
155        kohde.Destroy();
156        ammus.Destroy();
157    }
158
159    void PelaajaParantuu(PhysicsObject kolmio1, PhysicsObject kohde)
160    {
161        pelaajanTerveys++;
162    }
163
164
165    void AmmuAseella(AssaultRifle ase)
166    {
167       
168        PhysicsObject ammus = ase.Shoot();
169
170
171        if (ammus != null)
172        {
173            ammus.Tag = "hyvis";
174            ammus.CollisionIgnoreGroup = 1;
175        }
176        {
177            //ammus.Size *= 3;
178            //ammus.Image = ...
179            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
180        }
181    }
182    AssaultRifle LuoPelaajanAse(PhysicsObject omistaja)
183    {
184        AssaultRifle ase = new AssaultRifle(1, 1);
185
186        ase.InfiniteAmmo = true;
187       
188        ase.ProjectileCollision = AmmusOsui;
189        ase.FireRate = 7.0;
190        ase.Power.DefaultValue = 500.0;
191        omistaja.Add(ase);
192        return ase;
193    }
194}
195
196
197
198       
Note: See TracBrowser for help on using the repository browser.