source: 2015/27/JaakkoS/RPGpeli/RPGpeli/RPGpeli/RPGpeli.cs @ 7136

Revision 7136, 7.8 KB checked in by otjojunt, 5 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 RPGpeli : PhysicsGame
10{
11    PhysicsObject pelaaja;
12    PhysicsObject Vihu;
13    SoundEffect Karjaisu = LoadSoundEffect("Rpgkarjaisu");
14    Image ritariKuva = LoadImage("ritari");
15    Image aaltoviiva = LoadImage("aalto");
16    Image Vihukuva1 = LoadImage("Vihollien1");
17    Image Vihukuva1T = LoadImage("Vihollinen1Taka");
18    Image Vihukuva1O = LoadImage("VihollinenOikea");
19    Image Vihukuva1V = LoadImage("VihollinenVasen");
20    Image LuolaKuva = LoadImage("luola");
21
22    static private Image[] ritariOikealle = LoadImages("Ritarioikealle", "RanimaatioO");
23    Animation ritariVasenAnim = new Animation(ritariOikealle);
24    static private Image[] ritariVasemmalle = LoadImages("Ritarivasemmalle", "RanimaatioV");
25    Animation ritariOikeaAnim = new Animation(ritariVasemmalle);
26    static private Image[] ritariEteen = LoadImages("RanimaatioE1", "RanimaatioE2");
27    Animation ritariEteenAnim = new Animation(ritariEteen);
28    static private Image[] ritariTaakse = LoadImages("RanimaatioT1", "RanimaatioT2");
29    Animation ritariTaakseAnim = new Animation(ritariTaakse);
30    Image ritariTaka = LoadImage("Ritaritaka");
31    static private Image[] RHyokE = LoadImages("RHyökkäysE1", "RHyökkäysE2", "RHyökkäysE3");
32    Animation RHyokkaysEAnim = new Animation(RHyokE);
33    static private Image[] RHyokT = LoadImages("RHyökkäysT1", "RHyökkäysT2", "RHyökkäysT3");
34    Animation RHyokkaysTAnim = new Animation(RHyokT);
35    static private Image[] RHyokV = LoadImages("RhyökkäysO1", "RhyökkäysO2", "RHyökkäysO3");
36    Animation RHyokkaysVAnim = new Animation(RHyokV);
37    static private Image[] RHyokO = LoadImages("RhyökkäysV1", "RhyökkäysV2", "RHyökkäysV3");
38    Animation RHyokkaysOAnim = new Animation(RHyokO);
39
40
41    static private Image[] Vihueteen = LoadImages("V1AnimaatioE1", "V1AnimaatioE2");
42    Animation VihuAnim = new Animation(Vihueteen);
43
44    Queue<Widget> sydanfifo = new Queue<Widget>();
45
46    bool damage = true;
47
48    Dictionary<Direction, Animation> hyokkaykset = new Dictionary<Direction, Animation>();
49    Direction suunta = Direction.Down;
50
51    public override void Begin()
52    {
53        hyokkaykset.Add(Direction.Right, RHyokkaysOAnim);
54        hyokkaykset.Add(Direction.Left, RHyokkaysVAnim);
55        hyokkaykset.Add(Direction.Up, RHyokkaysTAnim);
56        hyokkaykset.Add(Direction.Down, RHyokkaysEAnim);
57
58
59        pelaaja = new PhysicsObject(50, 100);
60        pelaaja.Image = ritariKuva;
61        pelaaja.LinearDamping = 0.9;
62        pelaaja.Tag = "pelaaja";
63        pelaaja.CanRotate = false;
64        Add(pelaaja);
65        AddCollisionHandler(pelaaja, "Vihollinen", PelaajaOttidmg);
66
67        HorizontalLayout asettelu = new HorizontalLayout();
68        asettelu.Spacing = 10;
69
70        Widget sydammet = new Widget(asettelu);
71        sydammet.Color = Color.Transparent;
72        sydammet.X = Screen.Left + 250;
73        sydammet.Y = Screen.Top - 20;
74        Add(sydammet);
75
76        for (int i = 0; i < 10; i++)
77        {
78            Widget sydan = new Widget(30, 30, Shape.Heart);
79            sydan.Color = Color.Black;
80            sydammet.Add(sydan);
81            sydanfifo.Enqueue(sydan);
82        }
83
84
85        //lisaaLuola(0, 200);
86
87        Level.CreateBorders();
88
89        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
90        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
91        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, "Liiku alas", pelaaja, new Vector(0, -600));
92        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, "Liiku ylös", pelaaja, new Vector(0, 600));
93        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, "Liiku vasemmalle", pelaaja, new Vector(-600, 0));
94        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, "Liiku oikealle", pelaaja, new Vector(600, 0));
95        Keyboard.Listen(Key.Up, ButtonState.Pressed, LaitaAnimaatio, null, ritariTaakseAnim, Direction.Up);
96        Keyboard.Listen(Key.Down, ButtonState.Pressed, LaitaAnimaatio, null, ritariEteenAnim, Direction.Down);
97        Keyboard.Listen(Key.Right, ButtonState.Pressed, LaitaAnimaatio, null, ritariOikeaAnim, Direction.Right);
98        Keyboard.Listen(Key.Left, ButtonState.Pressed, LaitaAnimaatio, null, ritariVasenAnim, Direction.Left);
99        //Keyboard.Listen(Key.Down, ButtonState.Pressed, delegate { pelaaja.Animation = ritariEteenAnim; pelaaja.Animation.FPS = 4; pelaaja.Animation.Start(); }, "");
100        //Keyboard.Listen(Key.Left, ButtonState.Pressed, delegate { pelaaja.Animation = ritariVasenAnim; pelaaja.Animation.FPS = 4; pelaaja.Animation.Start(); }, "");
101        //Keyboard.Listen(Key.Right, ButtonState.Pressed, delegate { pelaaja.Animation = ritariOikeaAnim; pelaaja.Animation.FPS = 4; pelaaja.Animation.Start(); }, "");
102        Keyboard.Listen(Key.Up, ButtonState.Released, delegate { pelaaja.Animation.Stop(); pelaaja.Image = ritariTaka; }, "");
103        Keyboard.Listen(Key.Down, ButtonState.Released, delegate { pelaaja.Animation.Stop(); pelaaja.Image = ritariKuva; }, "");
104        Keyboard.Listen(Key.Left, ButtonState.Released, delegate { pelaaja.Animation.Stop(); }, "");
105        Keyboard.Listen(Key.Right, ButtonState.Released, delegate { pelaaja.Animation.Stop(); }, "");
106        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyokkaa, "hyökkää");
107
108        SmoothTextures = false;
109    }
110
111    void LaitaAnimaatio(Animation anim, Direction uusiSuunta)
112    {
113        pelaaja.Animation = ritariTaakseAnim;
114        pelaaja.Animation.FPS = 4;
115        pelaaja.Animation.Start();
116        suunta = uusiSuunta;
117    }
118
119    void Hyokkaa()
120    {
121        pelaaja.Animation = hyokkaykset[suunta];
122        pelaaja.Animation.FPS = 8;
123        pelaaja.Animation.Start(1);
124    }
125    void LiikutaPelaajaa(PhysicsObject pelaaja, Vector vektori)
126    {
127        pelaaja.Push(vektori);
128    }
129
130    void lisaaVihollinenen(double x, double y)
131    {
132        Vihu = new PhysicsObject(50, 70);
133        Vihu.MaximumLifetime = TimeSpan.FromSeconds(5.0);
134        Vihu.X = x;
135        Vihu.Y = y;
136        Vihu.Animation = VihuAnim;
137        Vihu.Animation.FPS = 4;
138        Vihu.Animation.Start();
139        Vihu.CanRotate = false;
140        Vihu.Tag = "Vihollinen";
141
142        FollowerBrain seuraajaAivot = new FollowerBrain("pelaaja");
143       
144        seuraajaAivot.DistanceToTarget.AddTrigger(60, TriggerDirection.Down, Karjaise);
145        seuraajaAivot.Speed = 150;
146        Vihu.Brain = seuraajaAivot;
147
148
149        Add(Vihu);
150
151    }
152    void lisaaLuola(double x, double y)
153    {
154        GameObject Luola = new GameObject(50, 50);
155        Luola.X = x;
156        Luola.Y = y;
157        Luola.Image = LuolaKuva;
158        Luola.Tag = "vihuspawn";
159        Add(Luola);
160
161        Timer vihuAjastin = new Timer();
162        vihuAjastin.Interval = 2;
163        vihuAjastin.Timeout += delegate { lisaaVihollinenen(x, y); };
164       
165        vihuAjastin.Start();
166
167    }
168    void Karjaise()
169    {
170        //PlaySound("Karjaisu");
171        Karjaisu.Play();
172    }
173
174    void PelaajaOttidmg(PhysicsObject pelaaja, PhysicsObject Vihollinen)
175    {
176        MessageDisplay.Add("auts!");
177        if (sydanfifo.Count > 0)
178        {
179            if (damage)
180            {
181                sydanfifo.Dequeue().Destroy();
182                damage = false;
183                Timer.SingleShot(1.0, delegate { damage = true; if ((pelaaja.AbsolutePosition - Vihollinen.AbsolutePosition).Magnitude < 90) PelaajaOttidmg(pelaaja, Vihollinen); });
184            }
185            if (sydanfifo.Count <= 0)
186            {
187                pelaaja.Destroy();
188            }
189        }
190        else
191        {
192            pelaaja.Destroy();
193        }
194    }
195
196}
Note: See TracBrowser for help on using the repository browser.