source: 2015/30/JouniP/Esimerkki/Esimerkki/Esimerkki/Esimerkki.cs @ 6855

Revision 6855, 4.2 KB checked in by jotapoti, 4 years ago (diff)

Peli onkin nyt ylhäältä päin kuvattuna. Ruudulla on pahiksia, joihin voi törmätä.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Esimerkki : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("hymynaama");
18    Image tahtiKuva = LoadImage("tahti");
19    Image pahiksenKuva = LoadImage("pahis");
20    SoundEffect maaliAani = LoadSoundEffect("maali");
21
22    public override void Begin()
23    {
24        SetWindowSize(800, 600);
25
26        //Gravity = new Vector(0, -1000);
27
28        LuoKentta();
29        LisaaNappaimet();
30
31        Camera.Follow(pelaaja1);
32        Camera.ZoomFactor = 1.2;
33        Camera.StayInLevel = true;
34    }
35
36    void LuoKentta()
37    {
38        TileMap kentta = TileMap.FromLevelAsset("kentta1");
39        kentta.SetTileMethod('#', LisaaTaso);
40        kentta.SetTileMethod('*', LisaaTahti);
41        kentta.SetTileMethod('N', LisaaPelaaja);
42        kentta.SetTileMethod('p', LisaaPahis);
43
44        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
45        Level.CreateBorders();
46        Level.Background.CreateGradient(Color.White, 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 LisaaTahti(Vector paikka, double leveys, double korkeus)
58    {
59        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
60        tahti.IgnoresCollisionResponse = true;
61        tahti.Position = paikka;
62        tahti.Image = tahtiKuva;
63        tahti.Tag = "tahti";
64        Add(tahti);
65    }
66
67    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
68    {
69        pelaaja1 = new PlatformCharacter(leveys, korkeus);
70        pelaaja1.Position = paikka;
71        pelaaja1.Mass = 1.0;
72        pelaaja1.Image = pelaajanKuva;
73        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
74        AddCollisionHandler(pelaaja1, "pahis", TormaaPahikseen);
75        //AddCollisionHandler(pelaaja1, "pahis", CollisionHandler.ExplodeTarget(100, true));
76        Add(pelaaja1);
77    }
78
79    void LisaaPahis(Vector paikka, double leveys, double korkeus)
80    {
81        PhysicsObject pahaHeppu = new PhysicsObject(leveys, korkeus);
82        pahaHeppu.Position = paikka;
83        pahaHeppu.Mass = 50.0;
84        pahaHeppu.Image = pahiksenKuva;
85        pahaHeppu.Tag = "pahis";
86        Add(pahaHeppu);
87    }
88
89    void LisaaNappaimet()
90    {
91        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
92        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
93
94        //Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
95        //Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
96        //Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
97
98        Keyboard.Listen(Key.Left,  ButtonState.Down, LiikutaPelaajaa, null, new Vector(-2000, 0));
99        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, new Vector(2000, 0) );
100        Keyboard.Listen(Key.Up,    ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 1000) );
101        Keyboard.Listen(Key.Down,  ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -1000));
102
103
104    }
105
106    //void Liikuta(PlatformCharacter hahmo, double nopeus)
107    //{
108    //    hahmo.Walk(nopeus);
109    //}
110
111    void LiikutaPelaajaa(Vector vektori)
112    {
113        pelaaja1.Push(vektori);
114    }
115
116    void Hyppaa(PlatformCharacter hahmo, double nopeus)
117    {
118        hahmo.Jump(nopeus);
119    }
120
121    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
122    {
123        maaliAani.Play();
124        MessageDisplay.Add("Keräsit tähden!");
125        tahti.Destroy();
126    }
127
128    void TormaaPahikseen(PhysicsObject hahmo, PhysicsObject pahis)
129    {
130        maaliAani.Play();
131        MessageDisplay.Add("Osuit pahikseen!");
132        hahmo.Destroy();
133    }
134}
Note: See TracBrowser for help on using the repository browser.