source: 2014/26/JimiR/RunAway/RunAway/RunAway/RunAway/RunAway.cs @ 5072

Revision 5072, 4.8 KB checked in by tihaapas, 7 years ago (diff)

Sain ekan mapin valmiiks viholliselle tekoälyn ja aseen. + kaikkee sälää::::::::::::::::!!!!!!!!!!!!!!!!!!XDMEGALOLREPS

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class RunAway : PhysicsGame
10{
11
12    Image pelaajanKuva = LoadImage("ukkeli");
13    PhysicsObject pelaaja;
14
15    Image vihollisenKuva = LoadImage("energydrink");
16    PhysicsObject vihu;
17
18    AssaultRifle ase;
19    public override void Begin()
20    {
21        LuoAlkuValikko();
22
23    }
24
25
26    void LuoAlkuValikko()
27    {
28        MultiSelectWindow alkuValikko = new MultiSelectWindow("RunAway", "Start", "Quit");
29        Add(alkuValikko);
30
31        alkuValikko.AddItemHandler(0, AloitaPeli);
32        alkuValikko.AddItemHandler(1, Exit);
33    }
34
35    void AloitaPeli()
36    {
37        SmoothTextures = false;
38
39        LuoKentta();
40        LisaaOhjaimet();
41        Camera.FollowedObject = pelaaja;
42        Camera.StayInLevel = true;
43
44
45    }
46
47    void LuoKentta()
48    {
49
50        Camera.Follow(pelaaja);
51
52        TileMap ruudut = TileMap.FromLevelAsset("Map");
53        ruudut.SetTileMethod('#', LuoPalikka);
54        ruudut.SetTileMethod('P', LuoPelaaja);
55        ruudut.SetTileMethod('S', LuoVihu);
56        ruudut.SetTileMethod('A', LuoKerattavaAse);
57        ruudut.Execute(40,40);
58    }
59
60    void LisaaOhjaimet()
61    {
62        Keyboard.Listen(Key.A, ButtonState.Down,
63          LiikutaPelaajaa, null, new Vector(-1000, 0));
64        Keyboard.Listen(Key.A, ButtonState.Up,
65          LiikutaPelaajaa, null, Vector.Zero);
66        Keyboard.Listen(Key.D, ButtonState.Down,
67          LiikutaPelaajaa, null, new Vector(1000, 0));
68        Keyboard.Listen(Key.D, ButtonState.Up,
69          LiikutaPelaajaa, null, Vector.Zero);
70        Keyboard.Listen(Key.W, ButtonState.Down,
71          LiikutaPelaajaa, null, new Vector(0, 1000));
72        Keyboard.Listen(Key.W, ButtonState.Down,
73          LiikutaPelaajaa, null, Vector.Zero);
74        Keyboard.Listen(Key.S, ButtonState.Down,
75          LiikutaPelaajaa, null, new Vector(0, -1000));
76        Keyboard.Listen(Key.S, ButtonState.Up,
77         LiikutaPelaajaa, null, Vector.Zero);
78        Keyboard.Listen(Key.P, ButtonState.Down, AmmuAseella, "Ammu");
79        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
80        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
81    }
82
83    void LiikutaPelaajaa(Vector vektori)
84    {
85        pelaaja.Push(vektori);
86    }
87
88
89
90    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
91    {
92         pelaaja = new PhysicsObject(30, 30);
93         pelaaja.Image = pelaajanKuva;
94         pelaaja.Position = paikka;
95         pelaaja.Restitution = 0;
96         pelaaja.CanRotate = false;
97         Add(pelaaja);
98         AddCollisionHandler(pelaaja, "vihu", PelaajaTormasi);
99         AddCollisionHandler(pelaaja, "Ase", PelaajaSaaAseen);
100
101
102         
103
104         
105    }
106
107    void LuoPalikka(Vector paikka, double leveys, double korkeus)
108    {
109        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
110        palikka.Position = paikka;
111        palikka.Color = Color.BrownGreen;
112        Add(palikka);
113
114    }
115
116    void LuoVihu(Vector paikka, double leveys, double korkeus)
117    {
118        vihu = new PhysicsObject(100, 100);
119        vihu.Position = paikka;
120        vihu.Image = vihollisenKuva;
121        vihu.Tag = "vihu";
122        Add(vihu);
123        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
124        seuraajanAivot.Speed = 400;           
125        seuraajanAivot.DistanceClose = 900;         
126        seuraajanAivot.StopWhenTargetClose = false;
127
128        vihu.Brain = seuraajanAivot;
129    }
130
131    void PelaajaTormasi(PhysicsObject pelaaja, PhysicsObject kohde)
132    {
133        if (kohde.Tag == "vihu")
134        {
135            pelaaja.Destroy();
136            ClearAll();
137            LuoAlkuValikko();
138        }
139
140    }
141
142    void LuoKerattavaAse(Vector paikka, double leveys, double korkeus)
143    {
144        PhysicsObject kerattavaase = new PhysicsObject(leveys, korkeus);
145        kerattavaase.Position = paikka;
146        kerattavaase.Color = Color.BrownGreen;
147        Add(kerattavaase);
148        kerattavaase.Tag = "Ase";
149 
150    }
151
152    void PelaajaSaaAseen(PhysicsObject pelaaja, PhysicsObject kohde)
153    {
154        kohde.Destroy();
155        ase = new AssaultRifle(50, 10);
156        ase.Ammo.Value = 10;
157        ase.ProjectileCollision = AmmusOsui;
158        pelaaja.Add(ase);
159    }
160
161    void AmmuAseella()
162    {
163        PhysicsObject ammus = ase.Shoot();
164
165        if (ammus != null)
166        {
167            ammus.Size *= 0.9;
168           
169            //ammus.Image = ...
170            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
171        }
172    }
173
174    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
175    {
176        ammus.Destroy();
177        if (kohde.Tag == "vihu") kohde.Destroy();
178    }
179}
180
181
182
183
Note: See TracBrowser for help on using the repository browser.