source: 2016/27/DanielL/SurvMontage/SurvMontage/SurvMontage/SurvMontage.cs @ 8055

Revision 8055, 5.6 KB checked in by sieerinn, 3 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 SurvMontage : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    PlatformCharacter Zombie1;
17
18    Image pelaajanKuva = LoadImage("Character1");
19    Image tahtiKuva = LoadImage("tahti2");
20    Image tiiliKuva = LoadImage("Bricks");
21    Image kattokruunuKuva = LoadImage("Chandelier");
22    Image taustaKuva = LoadImage("background");
23    Image[] kavelyKuvat = LoadImages("Character1", "Character2", "Character3");
24    Image kivaariKuva = LoadImage("Sniper");
25    Image[] zombiKuvat = LoadImages("Zombie1", "Zombie2", "Zombie3");
26    Image zombinKuva = LoadImage("Zombie1");
27
28    SoundEffect maaliAani = LoadSoundEffect("maali");
29
30    public override void Begin()
31    {
32        ClearAll();
33        Gravity = new Vector(0, -1000);
34        MediaPlayer.Play("High");
35        MediaPlayer.IsRepeating = true;
36        LuoKentta();
37        LisaaNappaimet();
38
39        Camera.Follow(pelaaja1);
40        Camera.ZoomFactor = 1.2;
41        Camera.StayInLevel = true;
42    }
43
44    void LuoKentta()
45    {
46        TileMap kentta = TileMap.FromLevelAsset("kentta1");
47        kentta.SetTileMethod('#', LisaaTaso, tiiliKuva);
48        kentta.SetTileMethod('Q', LisaaTaso, pelaajanKuva);
49        kentta.SetTileMethod('A', LisaaTaso, kattokruunuKuva);
50        kentta.SetTileMethod('Z', LisaaZombie);
51        kentta.SetTileMethod('*', LisaaTahti);
52        kentta.SetTileMethod('N', LisaaPelaaja);
53        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
54        Level.CreateBorders();
55        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
56        Level.Background.Image = LoadImage("tausta2");
57    }
58
59    void LisaaTaso(Vector paikka, double leveys, double korkeus, Image kuva)
60    {
61        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
62        taso.Position = paikka;
63        taso.Image = kuva;
64        Add(taso);
65    }
66
67    void LisaaZombie(Vector paikka, double leveys, double korkeus)
68    {
69        Zombie1 = new PlatformCharacter(leveys, korkeus);
70        Zombie1.Position = paikka;
71        Zombie1.Mass = 4.0;
72        Zombie1.AnimWalk = new Animation(zombiKuvat) { FPS = 9 };
73        Zombie1.AnimIdle = new Animation(zombinKuva);
74        Add(Zombie1);
75        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
76        tasoAivot.Speed = 100;
77        Zombie1.Tag = "Zombie";
78
79       Zombie1.Brain = tasoAivot;
80        tasoAivot.FallsOffPlatforms = false;
81        tasoAivot.JumpSpeed = 700;
82        tasoAivot.TriesToJump = true;
83    }
84    void LisaaTahti(Vector paikka, double leveys, double korkeus)
85    {
86        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
87        tahti.IgnoresCollisionResponse = true;
88        tahti.Position = paikka;
89        tahti.Image = tahtiKuva;
90        tahti.Tag = "tahti";
91        Add(tahti);
92    }
93    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
94    {
95        pelaaja1 = new PlatformCharacter(leveys, korkeus);
96        pelaaja1.Position = paikka;
97        pelaaja1.Mass = 4.0;
98        pelaaja1.AnimWalk = new Animation(kavelyKuvat) {FPS = 9};
99        pelaaja1.AnimIdle = new Animation(pelaajanKuva);
100        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
101        AddCollisionHandler(pelaaja1, "Zombie", TormaaZombiin);
102        Add(pelaaja1);
103    }
104
105    void LisaaNappaimet()
106    {
107        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
108        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
109
110        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
111        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
112        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
113
114        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
115
116        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
117        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
118        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
119
120        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
121    }
122
123    void Liikuta(PlatformCharacter hahmo, double nopeus)
124    {
125        hahmo.Walk(nopeus);
126    }
127
128    void Hyppaa(PlatformCharacter hahmo, double nopeus)
129    {
130        hahmo.Jump(nopeus);
131    }
132
133    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
134    {
135        maaliAani.Play();
136        MessageDisplay.Add("Keräsit tähden!");
137        tahti.Destroy();
138    }
139
140    void TormaaZombiin(PhysicsObject hahmo, PhysicsObject zombi)
141    {
142
143        MessageDisplay.Add("Kuolit!");
144        hahmo.Destroy();
145        Timer.SingleShot(2, Begin);
146    }
147
148    IntMeter pisteLaskuri;
149
150    void LuoPistelaskuri()
151    {
152        pisteLaskuri = new IntMeter(0);
153
154        Label pisteNaytto = new Label();
155        pisteNaytto.X = Screen.Left + 100;
156        pisteNaytto.Y = Screen.Top - 100;
157        pisteNaytto.TextColor = Color.Black;
158        pisteNaytto.Color = Color.White;
159
160        pisteNaytto.BindTo(pisteLaskuri);
161        Add(pisteNaytto);
162        pisteNaytto.BindTo(pisteLaskuri);
163        Add(pisteNaytto);
164    }
165    }
Note: See TracBrowser for help on using the repository browser.