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

Revision 9746, 5.7 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        AddHealthMeter();
30
31        Camera.Follow(playerbody);
32        Camera.ZoomFactor = 1.2;
33        Camera.StayInLevel = true;
34        //IsFullScreen = true;
35        SetWindowSize(1600, 900, false);
36    }
37
38    void LuoKentta()
39    {
40        TileMap kentta = TileMap.FromLevelAsset("kentta1"); //Level
41        kentta.SetTileMethod('#', LisaaTaso);
42        kentta.SetTileMethod('*', AddShell);
43        kentta.SetTileMethod('w', AddWater);
44        kentta.SetTileMethod('%', AddCoral);
45        kentta.SetTileMethod('o', AddPlayer);
46        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
47        Level.CreateBorders();
48        Level.BackgroundColor = Color.SkyBlue;
49    }
50
51    void LisaaTaso(Vector paikka, double leveys, double korkeus)
52    {
53        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
54        taso.Position = paikka;
55        taso.Color = Color.Green;
56        Add(taso);
57    }
58
59    void AddShell(Vector paikka, double leveys, double korkeus)
60    {
61        PhysicsObject shell = PhysicsObject.CreateStaticObject(leveys, korkeus);
62        shell.IgnoresCollisionResponse = true;
63        shell.Position = paikka;
64        shell.Image = tahtiKuva;
65        shell.Tag = "shell";
66        Add(shell);
67    }
68
69    void AddCoral(Vector paikka, double leveys, double korkeus)
70    {
71        PhysicsObject coral = PhysicsObject.CreateStaticObject(leveys, korkeus);
72        coral.IgnoresCollisionResponse = true;
73        coral.Position = paikka;
74        coral.Image = tahtiKuva;
75        coral.Tag = "coral";
76        Add(coral);
77    }
78
79    void AddWater(Vector paikka, double leveys, double korkeus)
80    {
81        PhysicsObject water = PhysicsObject.CreateStaticObject(leveys, korkeus);
82        water.IgnoresCollisionResponse = true;
83        water.Position = paikka;
84        water.Color = new Color(150, 150, 255, 80);
85        Add(water);
86    }
87
88    void AddPlayer(Vector paikka, double leveys, double korkeus)
89    {
90
91        playerbody = new PlatformCharacter(leveys*0.6, korkeus);
92        playerbody.Position = paikka;
93        playerbody.Mass = 4.0;
94        playerbody.Image = pelaajanKuva;
95        AddCollisionHandler(playerbody, "shell", TormaaTahteen);
96        AddCollisionHandler(playerbody, "coral", HitCoral);
97        //Add(playerbody, -1);
98
99        Vector NeckPos = new Vector(playerbody.X, playerbody.Y + korkeus);
100
101        playerhead = new PhysicsObject(leveys*0.7, korkeus*0.5);
102        playerhead.Position = NeckPos;
103        playerhead.Mass = 2.0;
104        playerhead.Image = pelaajanKuva;
105        playerhead.CanRotate = false;
106        //Add(playerhead, -1);
107
108        PhysicsStructure lumiukko = new PhysicsStructure(playerhead, playerbody);
109        Add(lumiukko);
110    }
111
112    void LisaaNappaimet()
113    {
114        //Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "");
115        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "");
116
117        Keyboard.Listen(Key.A, ButtonState.Down, Move, "", playerbody, -nopeus);
118        Keyboard.Listen(Key.D, ButtonState.Down, Move, "", playerbody, nopeus);
119        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "", playerbody, hyppyNopeus);
120        Keyboard.Listen(Key.W, ButtonState.Pressed, Swim, "", playerbody);
121
122        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
123
124        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Move, "Pelaaja liikkuu vasemmalle", playerbody, -nopeus);
125        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Move, "Pelaaja liikkuu oikealle", playerbody, nopeus);
126        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", playerbody, hyppyNopeus);
127
128        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
129    }
130
131    void Move(PlatformCharacter hahmo, double nopeus)
132    {
133        hahmo.Walk(nopeus);
134    }
135
136    void Hyppaa(PlatformCharacter hahmo, double nopeus)
137    {
138        hahmo.Jump(nopeus);
139    }
140
141    void Swim(PlatformCharacter hahmo)
142    {
143        GameObject under = GetObjectAt(hahmo.Position - new Vector(0, RUUDUN_KOKO / 2 + 2));
144        if (under != null && under.Tag == "Water")
145        {
146            hahmo.Velocity = new Vector(0, 100);
147        }
148    }
149
150    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
151    {
152        maaliAani.Play();
153        MessageDisplay.Add("Keräsit tähden!");
154        tahti.Destroy();
155    }
156
157    void HitCoral(PhysicsObject hahmo, PhysicsObject coral)
158    {
159        MessageDisplay.Add("osuit koralliin");
160        coral.Destroy();
161        healthmeter.Value -= 1;
162    }
163
164    void AddHealthMeter()
165    {
166        healthmeter = new DoubleMeter(10);
167        healthmeter.MaxValue = 10;
168        healthmeter.LowerLimit += LifeOut;
169
170        ProgressBar healthbar = new ProgressBar(300, 20);
171        healthbar.X = Screen.Left + 500;
172        healthbar.Y = Screen.Top - 20;
173        healthbar.BorderColor = Color.Black;
174        healthbar.BindTo(healthmeter);
175        Add(healthbar);
176    }
177
178    void LifeOut()
179    {
180        MessageDisplay.Add("U DIE N00B");
181    }
182}
Note: See TracBrowser for help on using the repository browser.