source: 2011/24/OttoH/stickOps/stickOps/stickOps/Peli.cs @ 2031

Revision 2031, 5.3 KB checked in by oteehann, 9 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Peli : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 1000;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    PlatformCharacter vastustaja1;
17
18    Image pelaajanKuva = LoadImage("tikku");
19    //Image heittajanKuvat;//LoadImages("tikku");
20    Image heittajanKuvatPeilattu;
21    Image vastustajanKuva = LoadImage("puukottaja");
22    Image vastustajanKuvaPeilattu;
23
24
25    SoundEffect maaliAani = LoadSoundEffect("maali");
26
27
28    public override void Begin()
29    {
30        ClearAll();
31        heittajanKuvatPeilattu = Image.Mirror(pelaajanKuva);
32        //pelaaja1.LeftIdleAnimation = new Animation(heittajanKuvatPeilattu);
33        vastustajanKuvaPeilattu = Image.Mirror(vastustajanKuva);
34
35
36        Gravity = new Vector(0, -1000);
37
38        luoKentta();
39        lisaaNappaimet();
40
41        Camera.Follow(pelaaja1);
42        Camera.ZoomFactor = 1.2;
43        Camera.StayInLevel = true;
44    }
45
46    void luoKentta()
47    {
48        TileMap kentta = TileMap.FromFile("kentta1.txt");
49        kentta['#'] = lisaaTaso;
50        kentta['N'] = lisaaPelaaja;
51        kentta['W'] = lisaaVastustaja;
52        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
53        Level.CreateBorders();
54        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
55
56        foreach (PhysicsObject vastustaja in vastustajat)
57        {
58            FollowerBrain aivo = (FollowerBrain)vastustaja.Brain;
59            aivo.Target = pelaaja1;
60        }
61    }
62
63    PhysicsObject lisaaTaso()
64    {
65        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
66        taso.Color = Color.Green;
67        return taso;
68    }
69
70
71
72    PlatformCharacter lisaaPelaaja()
73    {
74        pelaaja1 = new PlatformCharacter(60, 60);
75        pelaaja1.Mass = 5.0;
76        pelaaja1.Image = pelaajanKuva;
77        pelaaja1.Weapon = new PlasmaCannon(50, 20);
78        pelaaja1.Weapon.Ammo.Value = 5000000;
79        pelaaja1.Weapon.X = 0;
80        pelaaja1.Weapon.Y = -10;
81        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu");
82
83
84        pelaaja1.RightWalkingAnimation = new Animation(pelaajanKuva);
85        pelaaja1.LeftWalkingAnimation = new Animation(heittajanKuvatPeilattu);
86
87        return pelaaja1;
88    }
89
90   
91    void AmmuAseella()
92    {
93        PhysicsObject ammus = pelaaja1.Weapon.Shoot();
94
95        if (ammus != null)
96        {
97            ammus.Size *= 5;
98        }
99
100    }
101
102    void HeitaKranaatti()
103    {
104        Grenade kranaatti = new Grenade(10.0);
105        kranaatti.X = pelaaja1.X + 0;
106        kranaatti.Y = pelaaja1.Y - 10;
107        kranaatti.FuseTime = TimeSpan.FromSeconds(3);
108        Vector heittoVoima = Vector.FromLengthAndAngle(5000, Angle.FromDegrees(360));
109        kranaatti.Hit(heittoVoima);
110        Add(kranaatti);
111       
112    }
113
114
115    List<PhysicsObject> vastustajat = new List<PhysicsObject>();
116
117    PlatformCharacter lisaaVastustaja()
118    {
119        vastustaja1 = new PlatformCharacter(60, 60);
120        vastustaja1.Mass = 2.5;
121        vastustaja1.Image = vastustajanKuva;
122        vastustaja1.RightWalkingAnimation = new Animation(vastustajanKuvaPeilattu);
123        vastustaja1.LeftWalkingAnimation = new Animation(vastustajanKuva);
124        vastustajat.Add(vastustaja1);
125
126        FollowerBrain seuraajanAivot = new FollowerBrain();
127        seuraajanAivot.Speed = 150;
128        seuraajanAivot.TargetFollowDistance = 600;
129        seuraajanAivot.TargetCloseDistance = 200;
130        vastustaja1.Brain = seuraajanAivot;
131
132        AddCollisionHandler(vastustaja1, KasitteleVastustajanTormaus);
133
134        return vastustaja1;
135
136    }
137
138    void KasitteleVastustajanTormaus(PhysicsObject vastustaja1, PhysicsObject kohde)
139    {
140        if (kohde == pelaaja1)
141        {
142            pelaaja1.Destroy();
143            Begin();
144
145        }
146    }
147
148   
149       
150   
151
152    void lisaaNappaimet()
153    {
154        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
155        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
156
157        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
158        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
159        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
160
161        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
162
163        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
164        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
165        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
166        Keyboard.Listen(Key.D, ButtonState.Down, HeitaKranaatti, "Heita Kranaatti");
167    }
168
169    void liikuta(PlatformCharacter hahmo, double nopeus)
170    {
171        hahmo.Walk(nopeus);
172    }
173
174    void hyppaa(PlatformCharacter hahmo, double nopeus)
175    {
176        hahmo.Jump(nopeus);
177    }
178}
Note: See TracBrowser for help on using the repository browser.