source: 2016/23/KasperiJ/WrathoftheWraith/WrathoftheWraith/WrathoftheWraith/WrathoftheWraith.cs @ 7233

Revision 7233, 7.6 KB checked in by jotapoti, 3 years ago (diff)

pelin WrathoftheWraith? viimeisin versio lisätty

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class WrathoftheWraith : PhysicsGame
10{
11    PlatformCharacter pelaaja;
12    IntMeter elamanlaskuri;
13    DoubleMeter elamaLaskuri;
14
15
16
17
18    Image WraithImage = LoadImage("Wraith101");
19    Image taustaKuva = LoadImage("Backround");
20    Image groundImage = LoadImage("Platform");
21    Image IhminenImage = LoadImage("Ihminen");
22    Image PiikkiImage = LoadImage("Spike");
23    Image RadioImage = LoadImage("radioman");
24    Image ShieldImage = LoadImage("Shield");
25    Image KattoImage = LoadImage("Katto");
26    Image LaserImage = LoadImage("laser");
27    Image RifleImage = LoadImage("laserrifle");
28    Image DeadImage = LoadImage("dead");
29    AssaultRifle pelaajanAse;
30    const double nopeus = 150;
31    const double hyppyNopeus = 500;
32    const int RUUDUN_KOKO = 40;
33    public override void Begin()
34    {
35        // TODO: Kirjoita ohjelmakoodisi tähän
36        LuoKentta();
37        LisaaNappaimet();
38    }
39    void LuoKentta()
40    {
41        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta1");
42        ruudut.SetTileMethod(Color.FromHexCode("21FF00"), LuoPelaaja);
43        ruudut.SetTileMethod(Color.Black, LuoTaso);
44        ruudut.SetTileMethod(Color.FromHexCode("FF000C"), LuoVihollinen);
45        ruudut.SetTileMethod(Color.FromHexCode("EE00FF"), LuoSeina);
46        ruudut.SetTileMethod(Color.FromHexCode("00FFFA"), LuoKatto);
47        Level.Background.Image = taustaKuva;
48        ruudut.Execute(20, 20);
49        Gravity = new Vector(0, -500);
50        Camera.Follow(pelaaja);
51        Camera.Zoom(3.3);
52        Level.Background.Color = Color.DarkViolet;
53        Mouse.IsCursorVisible = true;
54        Mouse.ListenMovement(0.1, KuunteleLiiketta, null);
55    }
56
57
58
59
60    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
61    {
62        pelaaja = new PlatformCharacter(leveys * 1, korkeus * 2);
63        pelaaja.Position = paikka;
64        pelaaja.Image = WraithImage;
65        Add(pelaaja);
66        pelaajanAse = new AssaultRifle(0, 10);
67        pelaajanAse.FireRate = 2;
68        pelaajanAse.ProjectileCollision = CollisionHandler.DestroyObject;
69        pelaajanAse.Angle += Angle.FromDegrees(1);
70        pelaaja.Weapon = pelaajanAse;
71        pelaaja.Tag = "pelaaja";
72        elamanlaskuri = new IntMeter(3, 0, 3);
73        elamanlaskuri.LowerLimit += PeliLoppui;
74        AddCollisionHandler(pelaaja, "luoti", PelaajaVahingoittuu);
75        Vector paikkaRuudulla = Mouse.PositionOnScreen;
76        Vector paikkaKentalla = Mouse.PositionOnWorld;
77        pelaaja.CollisionIgnoreGroup = 3;
78    }
79    void PeliLoppui()
80    {
81        pelaaja.Destroy();
82    }
83    void LuoTaso(Vector paikka, double leveys, double korkeus)
84    {
85        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus - 10);
86        taso.Position = paikka;
87        taso.Image = groundImage;
88        taso.Color = Color.Black;
89        //taso.CollisionIgnoreGroup = 1;
90
91
92        Add(taso);
93    }
94    void LisaaNappaimet()
95    {
96        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
97        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja, -nopeus);
98        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja, nopeus);
99        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja, hyppyNopeus);
100        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, Ammu, "ammu aseella");
101   
102
103
104
105    }
106    void Liikuta(PlatformCharacter hahmo, double nopeus)
107    {
108        hahmo.Walk(nopeus);
109    }
110
111    void Hyppaa(PlatformCharacter hahmo, double nopeus)
112    {
113        hahmo.Jump(nopeus);
114    }
115    void LuoVihollinen(Vector paikka, double leveys, double korkeus)
116    {
117        Vihu Ihminen = new Vihu(leveys, korkeus * 2);
118        Ihminen.Position = paikka + new Vector(0, korkeus);
119        Ihminen.Image = Image.Mirror(IhminenImage);
120        Ihminen.Tag = "Ihminen";
121        Add(Ihminen);
122        AddCollisionHandler(Ihminen, "ammus", Ihmiseenosuu);
123        Ihminen.ElamaLaskuri.LowerLimit += delegate() 
124        {
125            PhysicsObject ruumis = new PhysicsObject(leveys * 2, korkeus);
126            ruumis.Image = DeadImage;
127            Add (ruumis);
128            ruumis.Position = Ihminen.Position- new Vector(0, 13);
129            ruumis.CollisionIgnoreGroup = 3;
130        };
131        AssaultRifle ihmisenAse = new AssaultRifle(20, 10);
132        ihmisenAse.ProjectileCollision = CollisionHandler.DestroyObject;
133        ihmisenAse.FireRate = 1;
134        ihmisenAse.X = 5.0;
135        ihmisenAse.Y = 8.0;
136        Ihminen.Weapon = ihmisenAse;
137        ihmisenAse.Image = RifleImage;
138        ihmisenAse.ProjectileCollision = CollisionHandler.DestroyObject;
139
140        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
141        tasoAivot.Speed = 60;
142        tasoAivot.FallsOffPlatforms = false;
143
144        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
145        seuraajanAivot.Speed = 60;
146        seuraajanAivot.DistanceFar = 200;
147        seuraajanAivot.DistanceClose = 150;
148        //Kuinka läheltä ihminen ampuu
149        seuraajanAivot.StopWhenTargetClose = true;
150        seuraajanAivot.FarBrain = tasoAivot;
151        Ihminen.Brain = seuraajanAivot;
152        Ihminen.Brain.Active = true;
153        seuraajanAivot.TargetClose += delegate()
154        {
155            PhysicsObject ammus = Ihminen.Weapon.Shoot();
156
157            if (ammus != null)
158            {
159                ammus.Size *= 0.7;
160                ammus.Tag = "luoti";
161                ammus.Image = LaserImage;
162            }
163        };
164
165    }
166    void Ammu()
167    {
168
169        PhysicsObject ammus = pelaaja.Weapon.Shoot();
170        if (ammus != null)
171        {
172            ammus.Image = PiikkiImage;
173            ammus.Tag = "ammus";
174        }
175
176    }
177
178    void Ihmiseenosuu(PhysicsObject Ihminen, PhysicsObject ammus)
179    {
180        ((Vihu)Ihminen).ElamaLaskuri.Value--;
181    }
182
183    void LuoSeina(Vector paikka, double leveys, double korkeus)
184    {
185        PhysicsObject Seina = PhysicsObject.CreateStaticObject(leveys - 15, korkeus);
186        Seina.Position = paikka;
187        Seina.Image = ShieldImage;
188        Seina.Color = Color.DarkViolet;
189        Seina.CollisionIgnoreGroup = 1;
190        Add(Seina);
191    }
192    void LuoKatto(Vector paikka, double leveys, double korkeus)
193    {
194        PhysicsObject Katto = PhysicsObject.CreateStaticObject(leveys, korkeus - 12);
195        Katto.Position = paikka;
196        Katto.Image = KattoImage;
197        Katto.Color = Color.DarkViolet;
198        Katto.CollisionIgnoreGroup = 1;
199        Add(Katto);
200    }
201    void PelaajaVahingoittuu(PhysicsObject pelaaja, PhysicsObject luoti)
202    {
203        elamanlaskuri.Value--;
204
205    }
206
207    void KuunteleLiiketta(AnalogState hiirenTila)
208    {
209
210
211        Vector hiirenLiike = hiirenTila.MouseMovement;
212    }
213    void Tahtaa(AnalogState hiirenLiike)
214    {
215        Vector suunta = (Mouse.PositionOnWorld - pelaaja.Weapon.AbsolutePosition).Normalize();
216        pelaaja.Weapon.Angle = suunta.Angle;
217
218    }
219    class Vihu : PlatformCharacter
220    {
221        private IntMeter elamaLaskuri = new IntMeter(2, 0, 2);
222        public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
223
224        public Vihu(double leveys, double korkeus)
225            : base(leveys, korkeus)
226        {
227            elamaLaskuri.LowerLimit += delegate
228            {
229                this.Destroy();
230            };
231            // this.MakeStatic();
232
233
234        }
235
236    }
237}
Note: See TracBrowser for help on using the repository browser.