source: 2017/24/AaronL/AdventureLunk/AdventureLunk/AdventureLunk/AdventureLunk.cs @ 8749

Revision 8749, 5.4 KB checked in by npo17_21, 2 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 AdventureLunk : PhysicsGame
10{
11    PhysicsObject link;
12    Image linkKuva = LoadImage("link");
13
14    Image linkOikea = LoadImage("link2");
15
16    Image linkVasen = LoadImage("link5");
17
18    Image linkYlos = LoadImage("link4");
19    Image linkLyoVasemmalle = LoadImage("link3");
20
21    Image hirviökuva = LoadImage("hirvio");
22    public override void Begin()
23    {
24        SmoothTextures = false;
25        // TODO: Kirjoita ohjelmakoodisi tähän
26        LuoKentta();
27        Paika();
28
29        Camera.Follow(link);
30
31        Camera.Zoom(1.3);
32
33        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaLink, null, new Vector(-500, 0));
34        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaLink, null, new Vector(500, 0));
35        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaLink, null, new Vector(0, 500));
36        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaLink, null, new Vector(0, -500));
37        Keyboard.Listen(Key.A, ButtonState.Pressed, LyoMiekalla, null);
38        {
39            Keyboard.Listen(Key.Left, ButtonState.Released, PysaytaLink, null);
40            Keyboard.Listen(Key.Right, ButtonState.Released, PysaytaLink, null);
41            Keyboard.Listen(Key.Up, ButtonState.Released, PysaytaLink, null);
42            Keyboard.Listen(Key.Down, ButtonState.Released, PysaytaLink, null);
43        } 
44       
45
46        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
47        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
48    }
49    void LiikutaLink(Vector vektori)
50    {
51        if (vektori.X < 0)
52        {
53            link.Image = linkVasen;
54        }
55        else if (vektori.X > 0)
56        {
57            link.Image = linkOikea;
58        }
59        else if (vektori.Y > 0)
60        {
61            link.Image = linkYlos;
62        }
63        else
64        {
65            link.Image = linkKuva;
66        }
67
68        link.Velocity = vektori;
69    }
70
71    void Paika()
72    {
73        Level.Background.Image = LoadImage("aloitus"); Level.Background.FitToLevel();
74    }
75    void LuoKentta()
76    {
77        //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä.
78        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("aloitus");
79
80        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa.
81
82        //ruudut.SetTileMethod(Color.Green, LuoPelaaja);
83        ruudut.SetTileMethod(Color.FromHexCode("28FFA5"), LuoTaso);
84        ruudut.SetTileMethod(Color.FromHexCode("2857FF"), LuoLohko);
85        ruudut.SetTileMethod(Color.FromHexCode("51A2FF"), LuoPainike);
86       
87
88        LuoPelaaja(Vector.Zero, 100, 100);
89
90        //3. Execute luo kentän
91        //   Parametreina leveys ja korkeus
92        ruudut.Execute(20, 20);
93    }
94
95    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
96    {
97        link = new PlatformCharacter(leveys, korkeus);
98        link.Position = paikka;
99        link.Image = linkKuva;
100        //AddCollisionHandler(link, "tahti", TormaaTahteen);
101        Add(link);
102    }
103
104    void LuoTaso(Vector paikka, double leveys, double korkeus)
105    {
106        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
107        taso.Position = paikka;
108        taso.Color = Color.Green;
109        taso.CollisionIgnoreGroup = 1;
110        Add(taso);
111    }
112   
113    void LuoLohko(Vector paikka, double leveys, double korkeus)
114    {
115        PhysicsObject lohko = new PhysicsObject(leveys*5.0, korkeus*5.0);
116        lohko.CanRotate = false;
117        lohko.Mass = 100.0;
118        lohko.Position = paikka;
119        lohko.Color = Color.Green;
120
121        // TODO:
122        // tee tähän AddCollisionHandler, joka määrää että:
123        // kun tämä lohko törmää mihin tahansa olioon, jonka täginä on "painike",
124        // niin mennään johonkin tiettyyn aliohjelmaan
125
126        AddCollisionHandler(lohko, "painike", LohkoOsuu);
127
128        Add(lohko);
129    }
130
131    void LuoPainike(Vector paikka, double leveys, double korkeus)
132    {
133        PhysicsObject painike = new PhysicsObject(leveys * 5.0, korkeus * 5.0);
134        painike.CanRotate = false;
135        painike.Mass = 100.0;
136        painike.Position = paikka;
137        painike.Color = Color.Green;
138        Add(painike);
139        painike.Tag = "painike";
140    }
141
142    void PysaytaLink()
143    {
144        LiikutaLink(Vector.Zero);
145    }
146    void LohkoOsuu(PhysicsObject lohko, PhysicsObject painike)
147    {
148        KutsuHirvio();
149        KutsuMieka();
150    }
151    void KutsuHirvio()
152    {
153        PhysicsObject hirviö = new PhysicsObject(100.0, 100.0);
154        hirviö.Tag = "vihollinen";
155        Add(hirviö);
156        hirviö.Image = hirviökuva; 
157    }
158    void KutsuMieka()
159    {
160
161    }
162    void LyoMiekalla()
163    {
164        link.Image = linkLyoVasemmalle;
165        List<GameObject> lista = GetObjectsBetween(link.Position + new Vector(-150.0, 0.0), link.Position);
166        if (lista.Count > 0)
167        {
168            foreach(GameObject olio in lista)
169            {
170                if (olio.Tag.Equals("vihollinen"))
171                {
172                    olio.Destroy();
173                }
174            }
175        }
176        Timer.SingleShot(1.0, delegate
177        {
178            link.Image = linkKuva;
179        });
180    }   
181
182
183}
Note: See TracBrowser for help on using the repository browser.