source: 2012/27/HenriM/kaljaadventures/kaljaadventures/kaljaadventures/kaljaadventures.cs @ 3552

Revision 3552, 4.9 KB checked in by henmatma, 8 years ago (diff)

Talletus.

RevLine 
[3460]1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class kaljaadventures : PhysicsGame
10{
[3552]11    int kenttataso = 1;
12    IntMeter rasvalaskuri;
[3460]13    const double nopeus = 200;
14    const double hyppyNopeus = 1000;
15    const int RUUDUN_KOKO = 40;
16
17    PlatformCharacter pelaaja1;
18
[3471]19    Image pelaajanKuva = LoadImage("kalja");
[3552]20    Image mursuKuva = LoadImage("vesi");
21    Image soppaKuva = LoadImage("piikki");
22    Image laatikkoKuva = LoadImage("laatikko");
[3460]23
24    SoundEffect maaliAani = LoadSoundEffect("maali");
25
26    public override void Begin()
27    {
[3552]28        AloitaPeli();
[3496]29    }
30
31    void AloitaPeli()
32    {
33        ClearAll();
[3552]34        rasvalaskuri = new IntMeter(0);
35        rasvalaskuri.LowerLimit += delegate
36        {
37            ++kenttataso; AloitaPeli();
38        };
39
[3460]40        Gravity = new Vector(0, -1000);
41
[3552]42        LuoKentta(kenttataso);
[3460]43        LisaaNappaimet();
44
45        Camera.Follow(pelaaja1);
[3552]46        //Camera.ZoomFactor = 1.2;
[3460]47        Camera.StayInLevel = true;
48    }
[3552]49
50    void LuoKentta(int kenttanro)
[3460]51    {
[3552]52        TileMap kentta = TileMap.FromLevelAsset("kentta" + kenttanro);
53        kentta.SetTileMethod('#', LisaaTaso);
54        kentta.SetTileMethod('*', LisaaRasva);
55        kentta.SetTileMethod('K', LisaaPelaaja);
56        kentta.SetTileMethod('S', LisaaSoppa);
57        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
58        Level.CreateBorders();
59        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
60
[3460]61    }
62
63    void LisaaTaso(Vector paikka, double leveys, double korkeus)
64    {
65        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
66        taso.Position = paikka;
67        taso.Color = Color.Green;
68        Add(taso);
69    }
70
[3474]71    void LisaaRasva(Vector paikka, double leveys, double korkeus)
[3460]72    {
[3474]73        PhysicsObject mursunrasva = PhysicsObject.CreateStaticObject(leveys, korkeus);
74        mursunrasva.IgnoresCollisionResponse = true;
75        mursunrasva.Position = paikka;
76        mursunrasva.Image = mursuKuva;
77        mursunrasva.Tag = "mursunrasva";
[3552]78        mursunrasva.Width = (double)mursuKuva.Width / (double)mursuKuva.Height * (double)korkeus;
79        rasvalaskuri.Value++;
[3474]80        Add(mursunrasva);
[3460]81    }
82
[3496]83    void LisaaSoppa(Vector paikka, double leveys, double korkeus)
84    {
85        PhysicsObject soppa = PhysicsObject.CreateStaticObject(leveys, korkeus);
86        soppa.IgnoresCollisionResponse = true;
87        soppa.Position = paikka;
88        soppa.Image = soppaKuva;
89        soppa.Tag = "soppa";
[3552]90        soppa.Width = (double)soppaKuva.Width / (double)soppaKuva.Height * (double)korkeus;
[3496]91        Add(soppa);
92    }
93
[3460]94    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
95    {
96        pelaaja1 = new PlatformCharacter(leveys, korkeus);
97        pelaaja1.Position = paikka;
98        pelaaja1.Mass = 4.0;
99        pelaaja1.Image = pelaajanKuva;
[3552]100        pelaaja1.Width = (double)pelaajanKuva.Width / (double)pelaajanKuva.Height * (double)korkeus;
[3474]101        AddCollisionHandler(pelaaja1, "mursunrasva", TormaaMursuun);
[3552]102        AddCollisionHandler(pelaaja1, "mursunrasva", CollisionHandler.AddMeterValue(rasvalaskuri, -1));
[3524]103        AddCollisionHandler(pelaaja1, "soppa", TormaaSoppaan);
[3460]104        Add(pelaaja1);
105    }
106
107    void LisaaNappaimet()
108    {
109        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
110        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
111        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
112
113        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
114        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
115        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
116
117        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
118
119        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
120        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
121        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
122
123        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
124    }
125
126    void Liikuta(PlatformCharacter hahmo, double nopeus)
127    {
128        hahmo.Walk(nopeus);
129    }
130
131    void Hyppaa(PlatformCharacter hahmo, double nopeus)
132    {
133        hahmo.Jump(nopeus);
134    }
135
[3474]136    void TormaaMursuun(PhysicsObject hahmo, PhysicsObject mursunrasva)
[3460]137    {
138        maaliAani.Play();
[3474]139        MessageDisplay.Add("Mursunrasva kasvattaa voimiasi!");
140        mursunrasva.Destroy();
[3460]141    }
[3524]142
143    void TormaaSoppaan(PhysicsObject hahmo, PhysicsObject soppa)
144    {
145        AloitaPeli();
[3552]146
[3524]147    }
[3460]148}
Note: See TracBrowser for help on using the repository browser.