source: 2014/koodauskerho/38/FransM/Skyofgardens/Skyofgardens/Skyofgardens/Skyofgardens.cs @ 5754

Revision 5754, 5.9 KB checked in by hesahave, 7 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 Skyofgardens : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    private Image[] ukkelinKavely = LoadImages("kavely", "kavely2");
18    private Image[] örkkikavely = LoadImages("örkkikuva1", "örkkikuva2");
19    Image pelaajanKuva = LoadImage("paikalla"); 
20    Image tahtiKuva = LoadImage("tahti");
21    Image taustaKuva = LoadImage("taivas");
22    Image BlockiKuva = LoadImage("Blocki2");   
23    Image TappavaKuva = LoadImage("Tappava");
24    Image Pelaaja1attackKuva = LoadImage("Pelaaja1attack");
25    Image ÖrkkikuvaKuva1 = LoadImage("Örkkikuva1");
26    Image ÖrkkikuvaKuva2 = LoadImage("Örkkikuva2");
27
28    SoundEffect maaliAani = LoadSoundEffect("maali");
29
30    DoubleMeter elamaLaskuri;
31
32    public override void Begin()
33    {
34        Gravity = new Vector(0, -1000);
35
36        LuoKentta();
37        LisaaNappaimet();
38        Level.Background.Image = taustaKuva;
39
40
41        Camera.Follow(pelaaja1);
42        Camera.ZoomFactor = 1.2;
43        Camera.StayInLevel = true;
44    }
45
46    void LuoKentta()
47    {
48        TileMap kentta = TileMap.FromLevelAsset("kentta1");
49        kentta.SetTileMethod('#', LisaaTaso);
50        kentta.SetTileMethod('*', LisaaTahti);
51        kentta.SetTileMethod('N', LisaaPelaaja);
52        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
53        Level.CreateBorders();
54        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
55        LisaaÖrkkikuva();
56        LuoElamaLaskuri();
57
58    }
59
60    void LisaaTappava(PlatformCharacter hahmo)
61    {
62        PhysicsObject Tappava = new PhysicsObject(20,20);
63        Tappava.Image = TappavaKuva;
64        Tappava.Position = pelaaja1.Position;
65        Tappava.CanRotate = false;
66        Tappava.LifetimeLeft = TimeSpan.FromSeconds(1);
67        Add(Tappava);
68
69        Animation lyo = new Animation(Pelaaja1attackKuva);
70        lyo.FPS = 1;
71        pelaaja1.PlayAnimation(lyo);
72
73        Timer ajastin = new Timer();
74        ajastin.Interval = 0.01;
75        ajastin.Timeout += delegate
76        {
77            Tappava.Position = pelaaja1.Position + new Vector(0, -10) + pelaaja1.FacingDirection.GetVector() * 24;
78        };
79        ajastin.Start();
80    } 
81
82    void LisaaTaso(Vector paikka, double leveys, double korkeus)
83    {
84        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
85        taso.Position = paikka;
86        taso.Image = BlockiKuva;
87        Add(taso);
88    }
89
90    void LisaaTahti(Vector paikka, double leveys, double korkeus)
91    {
92        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
93        tahti.IgnoresCollisionResponse = true;
94        tahti.Position = paikka;
95        tahti.Image = tahtiKuva;
96        tahti.Tag = "tahti";
97        Add(tahti);
98    }
99
100    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
101    {
102        pelaaja1 = new PlatformCharacter(leveys, korkeus);
103        pelaaja1.Position = paikka;
104        pelaaja1.Mass = 4.0;
105        pelaaja1.Image = pelaajanKuva;
106        pelaaja1.AnimWalk = new Animation(ukkelinKavely);
107        pelaaja1.AnimWalk.FPS = 5;
108        pelaaja1.Size = new Vector(35, 50);
109        pelaaja1.AnimIdle = new Animation(pelaajanKuva);
110        Add(pelaaja1);
111    }
112
113    void LisaaNappaimet()
114    {
115        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
116        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
117
118        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
119        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
120        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
121
122        Keyboard.Listen(Key.Space, ButtonState.Pressed, LisaaTappava, "tappaa", pelaaja1);
123
124        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
125
126        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
127        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
128        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
129
130        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
131    }
132
133    void Liikuta(PlatformCharacter hahmo, double nopeus)
134    {
135        hahmo.Walk(nopeus);
136    }
137
138    void Hyppaa(PlatformCharacter hahmo, double nopeus)
139    {
140        hahmo.Jump(nopeus);
141    }
142
143    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
144    {
145        maaliAani.Play();
146        MessageDisplay.Add("Keräsit tähden!");
147        tahti.Destroy();
148    }
149    void LisaaÖrkkikuva()
150{
151    PlatformCharacter örkkikuva = new PlatformCharacter(20.0, 20.0);
152
153    örkkikuva.Position = new Vector(0,0);
154
155
156    Add(örkkikuva);
157
158    RandomMoverBrain satunnaisAivot = new RandomMoverBrain(200);
159
160    satunnaisAivot.ChangeMovementSeconds = 3;
161    örkkikuva.Mass = 5.0;
162    örkkikuva.Brain = satunnaisAivot;
163    örkkikuva.Image = ÖrkkikuvaKuva1;
164    örkkikuva.AnimWalk = new Animation(örkkikavely);
165
166}
167    void LuoElamaLaskuri()
168    {
169        elamaLaskuri = new DoubleMeter(10);
170        elamaLaskuri.MaxValue = 10;
171        elamaLaskuri.LowerLimit += ElamaLoppui;
172
173        ProgressBar elamaPalkki = new ProgressBar(150, 20);
174        elamaPalkki.X = Screen.Left + 150;
175        elamaPalkki.Y = Screen.Top - 20;
176        elamaPalkki.BindTo(elamaLaskuri);
177        Add(elamaPalkki);
178    }
179
180    void ElamaLoppui()
181    {
182        MessageDisplay.Add("Elämät loppuivat, voi voi.");
183    }
184
185
186
187}
Note: See TracBrowser for help on using the repository browser.