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 FysiikkaPeli1 : PhysicsGame |
---|
10 | { |
---|
11 | Image olionKuva = LoadImage("akukuva"); |
---|
12 | PhysicsObject hirviniemi; |
---|
13 | AssaultRifle hirviniemiase; |
---|
14 | Image munamieskuva = LoadImage("munamieskuva"); |
---|
15 | Image gigakuva= LoadImage("gigapudding"); |
---|
16 | Image ammuksenkuva = LoadImage("nakki"); |
---|
17 | Image tahtaimenkuva = LoadImage("tahtain"); |
---|
18 | public override void Begin() |
---|
19 | { |
---|
20 | MediaPlayer.Play("taustamusiikki"); |
---|
21 | SmoothTextures = false; |
---|
22 | Image taustaKuva = LoadImage("planeettataustakuva"); |
---|
23 | Level.Background.Image = taustaKuva; |
---|
24 | Camera.ZoomToLevel(); |
---|
25 | LuoKentta(); |
---|
26 | Level.Background.Color = Color.Black; |
---|
27 | Mouse.IsCursorVisible = true; |
---|
28 | Camera.Follow(hirviniemi); |
---|
29 | Camera.Zoom(2.9); |
---|
30 | GameObject tahtain = new GameObject(20, 20); |
---|
31 | tahtain.Image = tahtaimenkuva; |
---|
32 | Add(tahtain); |
---|
33 | |
---|
34 | Timer tahtaimenLiikutus = new Timer(); |
---|
35 | tahtaimenLiikutus.Interval = 0.01; |
---|
36 | tahtaimenLiikutus.Timeout += delegate { tahtain.Position = Mouse.PositionOnWorld; }; |
---|
37 | tahtaimenLiikutus.Start(); |
---|
38 | |
---|
39 | PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); |
---|
40 | Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, null, hirviniemi, new Vector(-500, 0)); |
---|
41 | Keyboard.Listen(Key.D, ButtonState.Down, AsetaNopeus, null, hirviniemi, new Vector(500, 0)); |
---|
42 | Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, null, hirviniemi, new Vector(0, 500)); |
---|
43 | Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, null, hirviniemi, new Vector(0, -500)); |
---|
44 | Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); |
---|
45 | Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu", hirviniemi); |
---|
46 | Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella"); |
---|
47 | } |
---|
48 | |
---|
49 | void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde) |
---|
50 | { |
---|
51 | ammus.Destroy(); |
---|
52 | } |
---|
53 | void Tahtaa(AnalogState hiirenLiike) |
---|
54 | { |
---|
55 | Vector suunta = (Mouse.PositionOnWorld - hirviniemiase.AbsolutePosition).Normalize(); |
---|
56 | hirviniemiase.Angle = suunta.Angle; |
---|
57 | } |
---|
58 | |
---|
59 | void AmmuAseella(PhysicsObject hirviniemi) |
---|
60 | { |
---|
61 | PhysicsObject ammus = hirviniemiase.Shoot(); |
---|
62 | if (ammus != null) |
---|
63 | ammus.Image = ammuksenkuva; |
---|
64 | } |
---|
65 | |
---|
66 | void AsetaNopeus(PhysicsObject hirviniemi, Vector nopeus) |
---|
67 | { |
---|
68 | hirviniemi.Velocity = nopeus; |
---|
69 | } |
---|
70 | |
---|
71 | void LiikutaPelaajaa(PhysicsObject hirviniemi, Vector vektori) |
---|
72 | { |
---|
73 | hirviniemi.Push(vektori); |
---|
74 | } |
---|
75 | |
---|
76 | void LuoKentta() |
---|
77 | { |
---|
78 | //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä. |
---|
79 | |
---|
80 | ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta"); |
---|
81 | |
---|
82 | //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa. |
---|
83 | ruudut.SetTileMethod(Color.FromHexCode("00FF80"), LuoPelaaja); |
---|
84 | ruudut.SetTileMethod(Color.Black, LuoTaso); |
---|
85 | //ruudut.SetTileMethod(Color.Yellow, LuoTahti); |
---|
86 | |
---|
87 | //3. Execute luo kentän |
---|
88 | // Parametreina leveys ja korkeus |
---|
89 | ruudut.Execute(20, 20); |
---|
90 | LuoVihollinen(); LuoVihollinen(); LuoVihollinen(); LuoVihollinen(); LuoVihollinen(); LuoVihollinen(); |
---|
91 | } |
---|
92 | |
---|
93 | void LuoPelaaja(Vector paikka, double leveys, double korkeus) |
---|
94 | { |
---|
95 | hirviniemi = new PhysicsObject(30, 30); |
---|
96 | hirviniemi.Position = paikka; |
---|
97 | hirviniemi.CanRotate = false; |
---|
98 | //AddCollisionHandler(hirviniemi, "tahti", TormaaTahteen); |
---|
99 | |
---|
100 | hirviniemi.Image = olionKuva; |
---|
101 | hirviniemi.LinearDamping = 0.90; |
---|
102 | hirviniemiase = new AssaultRifle(30, 10); |
---|
103 | hirviniemiase.Ammo.Value = 1000; |
---|
104 | //hirviniemiase.ProjectileCollision = AmmusOsui; |
---|
105 | hirviniemiase.IsVisible = false; |
---|
106 | hirviniemiase.ProjectileCollision = AmmusOsui; |
---|
107 | hirviniemi.Add(hirviniemiase); |
---|
108 | Add(hirviniemi); |
---|
109 | } |
---|
110 | |
---|
111 | void LuoTaso(Vector paikka, double leveys, double korkeus) |
---|
112 | { |
---|
113 | PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
114 | taso.Position = paikka; |
---|
115 | //taso.Image = groundImage; |
---|
116 | taso.CollisionIgnoreGroup = 1; |
---|
117 | taso.Color = Color.Transparent; |
---|
118 | Add(taso); |
---|
119 | } |
---|
120 | void LuoVihollinen() |
---|
121 | { |
---|
122 | PhysicsObject vihollinen = new PhysicsObject(30, 30); |
---|
123 | vihollinen.Position = new Vector( RandomGen.NextDouble(Level.Left, Level.Right), RandomGen.NextDouble(Level.Bottom, Level.Top)); |
---|
124 | Add(vihollinen); |
---|
125 | |
---|
126 | } |
---|
127 | |
---|
128 | |
---|
129 | } |
---|