source: 2017/27/PinjaV/RunAwayFromYourFear/RunAwayFromYourFear/RunAwayFromYourFear/RunAwayFromYourFear.cs @ 8962

Revision 8962, 5.7 KB checked in by npo17_49, 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 RunAwayFromYourFear : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter Ben;
16    PlatformCharacter Link;
17    Image pelaajanKuva = LoadImage("link");
18    Image pelaajan2Kuva = LoadImage("link2");
19    Image tahtiKuva = LoadImage("tahti");
20    int kenttaNro = 1;
21    int indeksi = 0;
22
23    Image[] rubiiniKuvat = LoadImages("timanttipunainen", "timanttilime", "timanttioranssi", "timanttisininen", "timanttivaalee");
24    Image[] eyeless_jackKuvat = LoadImages("eyeless_jack1", "eyeless_jack2", "eyeless_jack3", "eyeless_jack4");
25    SoundEffect maaliAani = LoadSoundEffect("maali");
26
27    IntMeter rubiiniLaskuri;
28
29    public override void Begin()
30    {
31        Gravity = new Vector(0, -1000);
32
33        LuoKentta("Labyrint");
34        LisaaNappaimet();
35        LuoPisteLaskuri();
36
37        Camera.Follow(Ben, Link);
38        Camera.ZoomFactor = 1.2;
39        // Camera.StayInLevel = true;
40    }
41
42    void LuoKentta(string pv)
43    {
44        ColorTileMap kentta = ColorTileMap.FromLevelAsset(pv);
45        kentta.SetTileMethod(Color.Black, LisaaTaso);
46        kentta.SetTileMethod(Color.FromHexCode("A518EC"), LisaaTahti);
47        kentta.SetTileMethod(Color.Red, LisaaPelaaja);
48        kentta.SetTileMethod(Color.FromHexCode("FF0026FF"), LuoLink2);
49        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
50        Level.CreateBorders();
51        Level.Background.CreateGradient(Color.PaintDotNetBlue
52            , Color.MidnightBlue);
53    }
54
55    void LisaaTaso(Vector paikka, double leveys, double korkeus)
56    {
57        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
58        taso.Position = paikka;
59        taso.Color = Color.ForestGreen;
60        Add(taso);
61    }
62
63    void LisaaTahti(Vector paikka, double leveys, double korkeus)
64    {
65        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
66        tahti.IgnoresCollisionResponse = true;
67        tahti.Position = paikka;
68       tahti.Image = rubiiniKuvat[indeksi++];
69        tahti.Tag = "tahti";
70        Add(tahti);
71    }
72
73    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
74    {
75        Ben = new PlatformCharacter(leveys, korkeus * 1.5);
76        Ben.Position = paikka;
77        Ben.Mass = 4.0;
78        Ben.Image = pelaajanKuva;
79        if (kenttaNro == 2)
80        {
81            Ben.AnimWalk = new Animation(eyeless_jackKuvat);
82            Ben.AnimWalk.FPS = 10;
83            Ben.AnimIdle = new Animation(eyeless_jackKuvat[0]);
84        }
85        AddCollisionHandler(Ben, "Link", Ded);
86        Ben.Tag = "Ben";
87        Add(Ben);
88    }
89    void Ded(PhysicsObject Ben, PhysicsObject Link)
90    {
91        MessageDisplay.Add("Ded! Ben won!");
92        Link.Destroy();
93        Timer.SingleShot(3, Exit);
94    }
95
96    void LinkVoittaa()
97    {
98        MessageDisplay.Add("Ben u lost and Link won");
99        Ben.Destroy();
100        Timer.SingleShot(3, Exit);
101    }
102    void LuoLink2(Vector paikka, double leveys, double korkeus)
103    {
104        Link = new PlatformCharacter(leveys, korkeus * 1.5);
105        Link.Position = paikka;
106        Link.Mass = 4.0;
107        Link.Image = pelaajan2Kuva;
108        Link.Tag = "Link";
109        AddCollisionHandler(Link, "tahti", TormaaTahteen);
110        Add(Link);
111    }
112
113
114
115    void LuoPisteLaskuri()
116    {
117        rubiiniLaskuri = new IntMeter(0, 0, 5);
118        rubiiniLaskuri.UpperLimit += LinkVoittaa;
119
120        Label pisteNaytto = new Label();
121        pisteNaytto.X = Screen.Left + 100;
122        pisteNaytto.Y = Screen.Top - 100;
123        pisteNaytto.TextColor = Color.Black;
124        pisteNaytto.Color = Color.White;
125        pisteNaytto.Title = "Linkin keräämät rubiinit";
126
127
128        pisteNaytto.BindTo(rubiiniLaskuri);
129        Add(pisteNaytto);
130
131    }
132    void LisaaNappaimet()
133    {
134        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
135        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
136
137        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", Ben, -nopeus);
138        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", Ben, nopeus);
139        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", Ben, hyppyNopeus);
140
141        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", Link, -nopeus);
142        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", Link, nopeus);
143        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", Link, hyppyNopeus);
144
145    }
146
147    void Liikuta(PlatformCharacter hahmo, double nopeus)
148    {
149        hahmo.Walk(nopeus);
150    }
151
152    void Hyppaa(PlatformCharacter hahmo, double nopeus)
153    {
154        hahmo.Jump(nopeus);
155    }
156
157    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
158    {
159        maaliAani.Play();
160        MessageDisplay.Add("Keräsit tähden!");
161        tahti.Destroy();
162        rubiiniLaskuri.Value++;
163        if (rubiiniLaskuri.Value == 5)
164        {
165            indeksi = 0;
166            kenttaNro++;
167            SeuraavaKentta();
168           
169        }
170    }
171    void SeuraavaKentta()
172    {
173        ClearAll();
174        if (kenttaNro == 1) LuoKentta("Labyrint1");
175        else if (kenttaNro == 2) LuoKentta("Labyrint2");
176        LisaaNappaimet();
177        LuoPisteLaskuri();
178        Gravity = new Vector(0, -1000);
179        Camera.Follow(Ben, Link);
180        Camera.ZoomFactor = 1.2;
181        // Camera.StayInLevel = true;
182    }
183}
Note: See TracBrowser for help on using the repository browser.