source: 2015/26/ViljamiV/UkemiPeli/UkemiPeli/UkemiPeli/UkemiPeli.cs @ 6141

Revision 6141, 4.9 KB checked in by empaheik, 5 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 UkemiPeli : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 500;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    PhysicsObject juttu;
18
19    Image pelaajanKuva = LoadImage("hahmo");
20    Image tahtiKuva = LoadImage("juttu");
21    Image lattiaKuva = LoadImage("lattia");
22    Image hyppykuva = LoadImage("hahmohyppy");
23    Image tippukuva = LoadImage("hahmotippuu");
24    Image tahdenkuva = LoadImage("palikka");
25
26    private Image[] ukkelinKavely = LoadImages("hahmo2", "hahmo3", "hahmo4", "hahmo5", "hahmo6");
27
28    //SoundEffect maaliAani = LoadSoundEffect("maali");
29
30    public override void Begin()
31    {
32        Gravity = new Vector(0, -1000);
33        IsMouseVisible = true;
34        LuoKentta();
35        LisaaNappaimet();
36
37        Camera.Follow(pelaaja1);
38        Camera.ZoomFactor = 2.5;
39        Camera.StayInLevel = false;
40    }
41
42    void LuoKentta()
43    {
44        TileMap kentta = TileMap.FromLevelAsset("kentta1");
45        kentta.SetTileMethod('#', LisaaTaso);
46        kentta.SetTileMethod('*', LisaaTahti);
47        kentta.SetTileMethod('N', LisaaPelaaja);
48        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
49        Level.CreateBorders(false);
50        Level.Background.CreateGradient(Color.DarkGreen, Color.SlateGray);
51    }
52
53    void LisaaTaso(Vector paikka, double leveys, double korkeus)
54    {
55        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
56        taso.Position = paikka;
57        taso.Image = lattiaKuva;
58        Add(taso);
59    }
60
61    void Tahtaa(AnalogState hiirenLiike)
62    {
63        Vector suunta = (Mouse.PositionOnWorld - pelaaja1.AbsolutePosition).Normalize();
64        juttu.Angle = suunta.Angle;
65        juttu.Position = suunta * 65;
66    }
67
68    void LisaaTahti(Vector paikka, double leveys, double korkeus)
69    {
70        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
71        tahti.IgnoresCollisionResponse = true;
72        tahti.Position = paikka;
73        tahti.Image = tahdenkuva;
74        tahti.Tag = "juttu";
75        Add(tahti);
76    }
77
78    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
79    {
80        pelaaja1 = new PlatformCharacter(leveys*0.5, korkeus);
81        pelaaja1.Position = paikka;
82        pelaaja1.Mass = 4.0;
83        pelaaja1.Image = pelaajanKuva;
84       
85        pelaaja1.AnimWalk = new Animation(ukkelinKavely);
86
87        pelaaja1.AnimJump = new Animation(hyppykuva);
88
89        pelaaja1.AnimFall = new Animation(tippukuva);
90
91        pelaaja1.AnimWalk.FPS = 10;
92        pelaaja1.AnimIdle = new Animation(pelaajanKuva);
93        AddCollisionHandler(pelaaja1, "juttu", TormaaTahteen);
94       
95        Add(pelaaja1);
96        juttu = new PhysicsObject(leveys, korkeus);
97        pelaaja1.Add(juttu);
98        juttu.MakeStatic();
99        //juttu.Position = paikka;
100        juttu.Image = tahtiKuva;
101        Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella");
102    }
103
104    void LisaaNappaimet()
105    {
106        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
107        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
108
109        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
110        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
111        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
112
113        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
114
115        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
116        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
117        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
118
119        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
120
121        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
122        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
123        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
124
125        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
126    }
127
128    void Liikuta(PlatformCharacter hahmo, double nopeus)
129    {
130        hahmo.Walk(nopeus);
131    }
132
133    void Hyppaa(PlatformCharacter hahmo, double nopeus)
134    {
135        hahmo.Jump(nopeus);
136    }
137
138    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
139    {
140        //maaliAani.Play();
141        //MessageDisplay.Add("Keräsit tähden!");
142        tahti.Destroy();
143    }
144}
Note: See TracBrowser for help on using the repository browser.