source: 2017/31/MirkaH/TimantitOvatIkuisia/TimantitOvatIkuisia/TimantitOvatIkuisia/TimantitOvatIkuisia.cs @ 9371

Revision 9371, 6.3 KB checked in by npo17_79, 23 months ago (diff)

Vihollinen näkyvissä.
Pelaajan kuvasuhde parempi.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class TimantitOvatIkuisia : PhysicsGame
10{
11
12    // const double nopeus = 200;
13    // const double hyppyNopeus = 750;
14    Vector nopeusYlös = new Vector(0.0, 500.0);
15    Vector nopeusAlas = new Vector(0.0, -500.0);
16
17    const int RUUDUN_KOKO = 50;
18
19    PhysicsObject pelaaja1;
20    IntMeter pisteLaskuri;
21
22    Image taustaKuva = LoadImage("meri");
23    Image pelaajanKuva = LoadImage("sukeltaja1");
24    Image tahtiKuva = LoadImage("timantti");
25    Image vihollinenKuva = LoadImage("vihollinen");
26
27    SoundEffect maaliAani = LoadSoundEffect("maali");
28
29    public override void Begin()
30    {
31
32        // Gravity = new Vector(0, -1000);
33
34        LuoKentta();
35        LisaaNappaimet();
36        LuoAikaLaskuri();
37        LuoPistelaskuri();
38
39        Camera.Follow(pelaaja1);
40        Camera.ZoomFactor = 1.2;
41        Camera.StayInLevel = true;
42        // Camera.ZoomToLevel();
43    }
44
45    void LuoKentta()
46    {
47        TileMap kentta = TileMap.FromLevelAsset("kentta1");
48        kentta.SetTileMethod('#', LisaaTaso);
49        kentta.SetTileMethod('*', LisaaAarre);
50        kentta.SetTileMethod('N', LisaaPelaaja);
51        kentta.SetTileMethod('V', LisaaVihollinen);
52        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
53        Level.CreateBorders();
54        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
55        Level.Background.Image = taustaKuva;
56
57
58        for (int i = 0; i < 50; i++) 
59        {
60            double xpaikka = RandomGen.NextDouble(Level.Left, Level.Right);
61            double ypaikka = RandomGen.NextDouble(Level.Top, Level.Bottom);
62            Vector paikka = new Vector(xpaikka, ypaikka);
63            LisaaAarre(paikka, RUUDUN_KOKO, RUUDUN_KOKO);
64        }
65    }
66
67    void LisaaTaso(Vector paikka, double leveys, double korkeus)
68    {
69        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
70        taso.Position = paikka;
71        taso.Color = Color.Black;
72        taso.Restitution = 0.4;
73        Add(taso);
74    }
75    //void LisaaAarre(double leveys, double korkeus,double x, double y )
76    //{
77    //    PhysicsObject aarre = PhysicsObject.CreateStaticObject(leveys, korkeus);
78    //    aarre.IgnoresCollisionResponse = true;
79    //    aarre.X = x;
80    //    aarre.Y = y;
81    //    aarre.Image = tahtiKuva;
82    //    aarre.Tag = "tahti";
83    //    Add(aarre);
84    //}
85    void LisaaAarre(Vector paikka, double leveys, double korkeus)
86    {
87        PhysicsObject aarre = PhysicsObject.CreateStaticObject(leveys, korkeus);
88        aarre.IgnoresCollisionResponse = true;
89        aarre.Position = paikka;
90        aarre.Image = tahtiKuva;
91        aarre.Tag = "tahti";
92        Add(aarre);
93    }
94    void LisaaVihollinen (Vector paikka,double leveys,double korkeus)
95    {
96       
97        PhysicsObject vihollinen = PhysicsObject.CreateStaticObject(leveys, korkeus);
98        vihollinen.IgnoresCollisionResponse = true;
99        vihollinen.Position = paikka;
100        vihollinen.Image = vihollinenKuva;
101        vihollinen.Tag = "vihollinen";
102        Add(vihollinen);
103    }
104
105    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
106    {
107        pelaaja1 = new PhysicsObject(leveys * 3, korkeus * 1);
108        pelaaja1.Position = paikka;
109        // pelaaja1.Mass = 4.0;
110        pelaaja1.Image = pelaajanKuva;
111        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
112        Add(pelaaja1);
113        pelaaja1.CanRotate = false;
114    }
115
116    void LisaaNappaimet()
117    {
118        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
119        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
120
121        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, new Vector(-200, 0));
122        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, new Vector(200, 0));
123        Keyboard.Listen(Key.Up, ButtonState.Down, Liikuta, "Pelaaja ylös", pelaaja1, nopeusYlös);
124        Keyboard.Listen(Key.Down, ButtonState.Down, Liikuta, "Pelaaja alas", pelaaja1, nopeusAlas);
125
126        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
127
128        ///ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
129        //ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
130        //ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
131
132        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
133    }
134
135    void Liikuta(PhysicsObject hahmo, Vector nopeus)
136    {
137        hahmo.Push(nopeus);
138    }
139
140
141
142    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
143    {
144        maaliAani.Play();
145        MessageDisplay.Add("Keräsit timantin!");
146        tahti.Destroy();
147        pisteLaskuri.Value += 1;
148
149    }
150
151 
152
153    void LuoPistelaskuri()
154    {
155        pisteLaskuri = new IntMeter(0);
156
157        Label pisteNaytto = new Label();
158        pisteNaytto.X = Screen.Left + 100;
159        pisteNaytto.Y = Screen.Top - 100;
160        pisteNaytto.TextColor = Color.Black;
161        pisteNaytto.Color = Color.White;
162
163        pisteNaytto.BindTo(pisteLaskuri);
164        Add(pisteNaytto);
165    }
166    DoubleMeter alaspainLaskuri;
167
168       
169    Timer aikaLaskuri;
170
171    void LuoAikaLaskuri()
172    {
173        alaspainLaskuri = new DoubleMeter(30);
174
175        aikaLaskuri = new Timer();
176        aikaLaskuri.Interval = 0.1;
177        aikaLaskuri.Timeout += LaskeAlaspain;
178        aikaLaskuri.Start();
179
180        Label aikaNaytto = new Label();
181        aikaNaytto.TextColor = Color.White;
182        aikaNaytto.DecimalPlaces = 1;
183        aikaNaytto.BindTo(alaspainLaskuri);
184        aikaNaytto.X = Screen.Right - 300.0;
185        aikaNaytto.Y = Screen.Bottom + 100.0;
186        Add(aikaNaytto);
187
188    }
189
190    void LaskeAlaspain()
191    {
192        alaspainLaskuri.Value -= 0.1;
193
194        if (alaspainLaskuri.Value <= 0)
195        {
196            MessageDisplay.Add("Aika loppui...");
197            aikaLaskuri.Stop();
198
199            // täydennä mitä tapahtuu, kun aika loppuu
200        }
201    }
202}
Note: See TracBrowser for help on using the repository browser.