source: 2016/27/PaavoH/TheDiveGame/TheDiveGame/TheDiveGame.cs @ 9739

Revision 9739, 5.0 KB checked in by paharvol, 14 months ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Widgets;
7
8public class TheDiveGame : PhysicsGame
9{
10    const double nopeus = 200;
11    const double hyppyNopeus = 750;
12    const int RUUDUN_KOKO = 40;
13
14    PlatformCharacter playerbody;
15    PhysicsObject playerhead;
16    DoubleMeter healthmeter;
17
18    Image pelaajanKuva = LoadImage("norsu");
19    Image tahtiKuva = LoadImage("tahti");
20
21    SoundEffect maaliAani = LoadSoundEffect("maali");
22
23    public override void Begin()
24    {
25        Gravity = new Vector(0, -1000);
26
27        LuoKentta();
28        LisaaNappaimet();
29
30        Camera.Follow(playerbody);
31        Camera.ZoomFactor = 1.2;
32        Camera.StayInLevel = true;
33        //IsFullScreen = true;
34        SetWindowSize(1600, 900, false);
35    }
36
37    void LuoKentta()
38    {
39        TileMap kentta = TileMap.FromLevelAsset("Level");
40        kentta.SetTileMethod('#', LisaaTaso);
41        kentta.SetTileMethod('*', AddShell);
42        kentta.SetTileMethod('w', AddWater);
43        kentta.SetTileMethod('o', AddPlayer);
44        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
45        Level.CreateBorders();
46        Level.BackgroundColor = Color.SkyBlue;
47    }
48
49    void LisaaTaso(Vector paikka, double leveys, double korkeus)
50    {
51        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
52        taso.Position = paikka;
53        taso.Color = Color.Green;
54        Add(taso);
55    }
56
57    void AddShell(Vector paikka, double leveys, double korkeus)
58    {
59        PhysicsObject shell = PhysicsObject.CreateStaticObject(leveys, korkeus);
60        shell.IgnoresCollisionResponse = true;
61        shell.Position = paikka;
62        shell.Image = tahtiKuva;
63        shell.Tag = "tahti";
64        Add(shell);
65    }
66
67    void AddWater(Vector paikka, double leveys, double korkeus)
68    {
69        PhysicsObject water = PhysicsObject.CreateStaticObject(leveys, korkeus);
70        water.IgnoresCollisionResponse = true;
71        water.Position = paikka;
72        water.Color = new Color(150, 150, 255, 80);
73        Add(water);
74    }
75
76    void AddPlayer(Vector paikka, double leveys, double korkeus)
77    {
78
79        playerbody = new PlatformCharacter(leveys*0.6, korkeus);
80        playerbody.Position = paikka;
81        playerbody.Mass = 4.0;
82        playerbody.Image = pelaajanKuva;
83        AddCollisionHandler(playerbody, "tahti", TormaaTahteen);
84        //Add(playerbody, -1);
85
86        Vector NeckPos = new Vector(playerbody.X, playerbody.Y + korkeus);
87
88        playerhead = new PhysicsObject(leveys*0.7, korkeus*0.5);
89        playerhead.Position = NeckPos;
90        playerhead.Mass = 2.0;
91        playerhead.Image = pelaajanKuva;
92        playerhead.CanRotate = false;
93        //Add(playerhead, -1);
94
95        PhysicsStructure lumiukko = new PhysicsStructure(playerhead, playerbody);
96        Add(lumiukko);
97    }
98
99    void LisaaNappaimet()
100    {
101        //Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "");
102        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "");
103
104        Keyboard.Listen(Key.A, ButtonState.Down, Move, "", playerbody, -nopeus);
105        Keyboard.Listen(Key.D, ButtonState.Down, Move, "", playerbody, nopeus);
106        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "", playerbody, hyppyNopeus);
107        Keyboard.Listen(Key.W, ButtonState.Pressed, Swim, "", playerbody);
108
109        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
110
111        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Move, "Pelaaja liikkuu vasemmalle", playerbody, -nopeus);
112        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Move, "Pelaaja liikkuu oikealle", playerbody, nopeus);
113        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", playerbody, hyppyNopeus);
114
115        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
116    }
117
118    void Move(PlatformCharacter hahmo, double nopeus)
119    {
120        hahmo.Walk(nopeus);
121    }
122
123    void Hyppaa(PlatformCharacter hahmo, double nopeus)
124    {
125        hahmo.Jump(nopeus);
126    }
127
128    void Swim(PlatformCharacter hahmo)
129    {
130        GameObject under = GetObjectAt(hahmo.Position - new Vector(0, RUUDUN_KOKO / 2 + 2));
131        if (under != null && under.Tag == "Water")
132        {
133            hahmo.Velocity = new Vector(0, 100);
134        }
135    }
136
137    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
138    {
139        maaliAani.Play();
140        MessageDisplay.Add("Keräsit tähden!");
141        tahti.Destroy();
142    }
143
144    void AddHealthMeter()
145    {
146        healthmeter = new DoubleMeter(10);
147        healthmeter.MaxValue = 10;
148        healthmeter.LowerLimit += LifeOut;
149
150        ProgressBar healthbar = new ProgressBar(150, 20);
151        healthbar.X = Screen.Left + 150;
152        healthbar.Y = Screen.Top - 20;
153        healthbar.BindTo(healthmeter);
154        Add(healthbar);
155    }
156
157    void LifeOut()
158    {
159        MessageDisplay.Add("U DIE N00B");
160    }
161}
Note: See TracBrowser for help on using the repository browser.