source: 2010/30/oteimatt/taistelu-jaska/taistelu-jaska/Peli.cs @ 1417

Revision 1417, 6.5 KB checked in by oteimatt, 9 years ago (diff)

führer

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5
6
7class Tasohyppely : PhysicsGame
8{
9    const double nopeus = 200;
10    const double hyppyVoima = 4000;
11
12    const int ruudunLeveys = 50;
13    const int ruudunKorkeus = 50;
14
15    PlatformCharacter pelaaja1;
16    //PlatformCharacter miniführer;
17
18    Image[] jaskaKuvat = LoadImages("taistelu-jaska", "taistelu-jaska1");
19    Image[] jaskaKuvatPeilattu;
20
21    Image[] miniführerkuvat = LoadImages( "mini führer juoksu 1", "mini führer juoksu 2");
22    Image[] miniführerkuvatpeilattu;
23    Image[] jaskaHyokkaa = LoadImages("taistelu-jaska tilanne 1 osa 2",
24            "taistelu-jaska tilanne 1 osa 3",
25            "taistelu-jaska tilanne 1 osa 4",
26            "taistelu-jaska tilanne 1 osa 5",
27            "taistelu-jaska tilanne 2 osa 1",
28            "taistelu-jaska tilanne 2 osa 2",
29            "taistelu-jaska tilanne 2 osa 3",
30            "taistelu-jaska tilanne 2 osa 4",
31            "taistelu-jaska tilanne 2 osa 5");
32
33    Image[] jaskaHyokkaaPeilattu;
34
35
36    protected override void Begin()
37    {
38        //pelaaja1.FacingDirection == Direction.Left
39
40        Gravity = new Vector(0, -1000);
41
42        LataaKuvat();
43
44        luoKentta();
45        lisaaNappaimet();
46
47        Timer ajastin = new Timer();
48        ajastin.Interval = 5.0;
49        ajastin.Trigger += lisaaMiniführer;
50        ajastin.Start();
51
52        Camera.Follow(pelaaja1);
53        Camera.ZoomFactor = 1.2;
54        Camera.StayInLevel = true;
55    }
56
57    void LataaKuvat()
58    {
59        jaskaKuvatPeilattu = Image.Mirror(jaskaKuvat);
60        jaskaHyokkaaPeilattu = Image.Mirror(jaskaHyokkaa);
61    }
62   
63    void luoKentta()
64    {
65        TileMap ruudut = TileMap.FromFile("POHJA.txt");
66        ruudut['='] = LuoSeina;
67        ruudut['T'] = LuoTaisteluJaska;
68        ruudut['V'] = luoMiniFührer;
69        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
70
71        //Level.Background.CreateGradient(Color.White, Color.SkyBlue);
72    }
73
74    PhysicsObject LuoSeina()
75    {
76        PhysicsObject taso = PhysicsObject.CreateStaticObject(ruudunLeveys, ruudunKorkeus);
77        taso.Color = Color.Black;
78        return taso;
79    }
80
81
82    void lisaaMiniführer(Timer ajastin)
83    {
84        PhysicsObject vihollinen = luoMiniFührer();
85        if (RandomGen.NextBool())
86        {
87            vihollinen.Position = new Vector(Level.Right - 50, -200);
88        }
89        else
90        {
91            vihollinen.Position = new Vector(Level.Left + 50, -200);
92        }
93        Add(vihollinen);
94    }
95
96
97    PhysicsObject luoMiniFührer()
98    {
99        PlatformCharacter miniführer = new PlatformCharacter(50, 90, Shapes.Circle);
100        miniführer.Mass = 4.0;
101        miniführer.Color = Color.Black;
102        miniführer.RightIdleAnimation = new Animation(LoadImages("mini führer juoksu 1", "mini führer juoksu 2"));
103        miniführer.RightWalkingAnimation = new Animation(miniführerkuvat);
104        miniführerkuvatpeilattu = Image.Mirror(miniführerkuvat);
105        miniführer.LeftWalkingAnimation = new Animation(miniführerkuvatpeilattu);
106
107        FollowerBrain seuraajanAivot = new FollowerBrain();
108        seuraajanAivot.Target = pelaaja1;
109        miniführer.Brain = seuraajanAivot;
110       
111        Timer aikaLaskuri = new Timer();
112        aikaLaskuri.Interval = 0.1;
113        aikaLaskuri.Trigger += Viholliskavely;
114        aikaLaskuri.Tag = miniführer;
115        //Add(aikaLaskuri);
116        aikaLaskuri.Start();
117        return (PhysicsObject)miniführer;
118    }
119 
120    void Viholliskavely(Timer ajastin)
121    { 
122        PlatformCharacter vihollinen = ((PlatformCharacter)ajastin.Tag);
123        if (vihollinen.Velocity.X < 0) vihollinen.Animation = vihollinen.LeftWalkingAnimation;
124        if (vihollinen.Velocity.X > 0) vihollinen.Animation = vihollinen.RightWalkingAnimation;
125        if (Vector.Distance(vihollinen.Position
126
127    }
128
129
130    PhysicsObject LuoTaisteluJaska()
131    {
132        pelaaja1 = new PlatformCharacter(128, 128, Shapes.Circle);
133
134        // Animaation asettaminen ei toimi jos pelaaja1 on alustettu näin
135         //pelaaja1 = new PlatformCharacter(128, 128, Shapes.Rectangle);
136
137        pelaaja1.Mass = 4.0;
138        pelaaja1.Color = Color.Black;
139       
140        pelaaja1.RightIdleAnimation = new Animation(LoadImage("taistelu-jaska"));
141        pelaaja1.LeftIdleAnimation = new Animation(Image.Mirror(LoadImage("taistelu-jaska")));
142        pelaaja1.RightWalkingAnimation = new Animation(jaskaKuvat);
143        pelaaja1.RightWalkingAnimation.FPS = 5;       
144        pelaaja1.LeftWalkingAnimation = new Animation(jaskaKuvatPeilattu);
145        pelaaja1.LeftWalkingAnimation.FPS = 5;
146        return (PhysicsObject)pelaaja1;
147    }
148
149
150
151    void lisaaPelaajat()
152    {
153        pelaaja1 = new PlatformCharacter(40, 40);
154        pelaaja1.Mass = 4.0;
155        pelaaja1.Image = LoadImage("norsu");
156        pelaaja1.X = 0;
157        pelaaja1.Y = Level.Bottom + 120;
158
159        Add(pelaaja1);
160    }
161
162    void lisaaNappaimet()
163    {
164        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
165        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
166
167        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
168        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
169        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
170        Keyboard.Listen(Key.Space, ButtonState.Pressed, lyo, "Lyö", pelaaja1);
171
172        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
173
174        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
175        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
176        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
177    }
178
179    void lyo(PlatformCharacter hahmo)
180    {
181        if (hahmo.FacingDirection == Direction.Left)
182        {
183            hahmo.Animation = new Animation(jaskaHyokkaaPeilattu);
184        }
185        if (hahmo.FacingDirection == Direction.Right)
186        {
187            hahmo.Animation = new Animation(jaskaHyokkaa);
188        }
189
190        hahmo.Animation.Start(1);
191    }
192
193    void liikuta(PlatformCharacter hahmo, double nopeus)
194    {
195        hahmo.Walk(nopeus);
196    }
197
198    void hyppaa(PlatformCharacter hahmo, double voima)
199    {
200        hahmo.Jump(voima);
201    }
202}
Note: See TracBrowser for help on using the repository browser.