1 | using System; |
---|
2 | using System.Collections.Generic; |
---|
3 | using Jypeli; |
---|
4 | using Jypeli.Assets; |
---|
5 | using Jypeli.Controls; |
---|
6 | using Jypeli.Effects; |
---|
7 | using Jypeli.Widgets; |
---|
8 | |
---|
9 | public class SpaceAdventure : PhysicsGame |
---|
10 | { |
---|
11 | PhysicsObject pelaaja; |
---|
12 | Image CoolAlusKuva = LoadImage("cool alus"); |
---|
13 | Image CoolHyvisalus = LoadImage("coolhyvisalus"); |
---|
14 | Image CoolAsteroidi = LoadImage("cool asteroid bu"); |
---|
15 | public override void Begin() |
---|
16 | { |
---|
17 | LuoKentta(); |
---|
18 | |
---|
19 | Camera.Zoom(2.5); |
---|
20 | Camera.FollowedObject = pelaaja; |
---|
21 | Keyboard.Listen(Key.Left, ButtonState.Down, |
---|
22 | LiikutaPelaajaa, null, new Vector(-100, 0)); |
---|
23 | Keyboard.Listen(Key.Right, ButtonState.Down, |
---|
24 | LiikutaPelaajaa, null, new Vector(100, 0)); |
---|
25 | Keyboard.Listen(Key.Up, ButtonState.Down, |
---|
26 | LiikutaPelaajaa, null, new Vector(0, 100)); |
---|
27 | Keyboard.Listen(Key.Down, ButtonState.Down, |
---|
28 | LiikutaPelaajaa, null, new Vector(0, -100)); |
---|
29 | Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää pelin"); |
---|
30 | } |
---|
31 | |
---|
32 | void LiikutaPelaajaa(Vector vektori) |
---|
33 | { |
---|
34 | pelaaja.Push(vektori); |
---|
35 | |
---|
36 | pelaaja.CanRotate = false; |
---|
37 | |
---|
38 | Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); |
---|
39 | } |
---|
40 | |
---|
41 | void LuoKentta() |
---|
42 | { |
---|
43 | //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä. |
---|
44 | ColorTileMap ruudut = ColorTileMap.FromLevelAsset("cool tausta"); |
---|
45 | |
---|
46 | //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa. |
---|
47 | ruudut.SetTileMethod(Color.FromHexCode("00FFFF"), LuoPelaaja); |
---|
48 | ruudut.SetTileMethod(Color.Black, LuoVihollinen); |
---|
49 | ruudut.SetTileMethod(Color.Gold, LuoAsteroidi); |
---|
50 | ruudut.SetTileMethod(Color.FromHexCode("FF0000"), LuoVihollinen2); |
---|
51 | |
---|
52 | Level.CreateBorders(); |
---|
53 | |
---|
54 | //3. Execute luo kentän |
---|
55 | // Parametreina leveys ja korkeus |
---|
56 | ruudut.Execute(20, 20); |
---|
57 | } |
---|
58 | void LuoPelaaja(Vector paikka, double leveys, double korkeus) |
---|
59 | { |
---|
60 | |
---|
61 | //pelaaja = new PhysicsObject(10, 10); |
---|
62 | pelaaja = new PhysicsObject(CoolHyvisalus); |
---|
63 | pelaaja.Restitution = 1.0; |
---|
64 | pelaaja.Color = Color.Blue; |
---|
65 | pelaaja.Position = paikka; |
---|
66 | Add(pelaaja); |
---|
67 | } |
---|
68 | void LuoVihollinen(Vector paikka, double leveys, double korkeus) |
---|
69 | { |
---|
70 | PhysicsObject Vihollinen = new PhysicsObject(CoolAlusKuva); |
---|
71 | Vihollinen.Position = paikka; |
---|
72 | Add(Vihollinen); |
---|
73 | Vihollinen.Tag = "pahis"; |
---|
74 | |
---|
75 | //AddCollisionHandler(Laser, CollisionHandler.ExplodeTarget(150, false)); |
---|
76 | |
---|
77 | |
---|
78 | //Tehdään uudet satunnaisaivot, jotka liikkuvat nopeudella 200 |
---|
79 | RandomMoverBrain satunnaisAivot = new RandomMoverBrain(150); |
---|
80 | |
---|
81 | //Ominaisuuksien muokkaaminen |
---|
82 | satunnaisAivot.ChangeMovementSeconds = 3; |
---|
83 | |
---|
84 | //Aivot käyttöön oliolle |
---|
85 | Vihollinen.Brain = satunnaisAivot; |
---|
86 | |
---|
87 | } |
---|
88 | void LuoAsteroidi(Vector paikka, double leveys, double korkeus) |
---|
89 | { |
---|
90 | //PhysicsObject Asteroidi = new PhysicsObject(10, 10); |
---|
91 | PhysicsObject Asteroidi = new PhysicsObject(CoolAsteroidi); |
---|
92 | Asteroidi.Color = Color.Red; |
---|
93 | Asteroidi.Position = paikka; |
---|
94 | Add(Asteroidi); |
---|
95 | |
---|
96 | } |
---|
97 | void LuoVihollinen2(Vector paikka, double leveys, double korkeus) |
---|
98 | { |
---|
99 | PhysicsObject Vihollinen2 = new PhysicsObject(10, 10); |
---|
100 | Vihollinen2.Color = Color.Gold; |
---|
101 | Vihollinen2.Position = paikka; |
---|
102 | Add(Vihollinen2); |
---|
103 | Vihollinen2.Tag = "pahis2"; |
---|
104 | |
---|
105 | } |
---|
106 | |
---|
107 | } |
---|