source: 2015/30/OonaH/Aurinkomyrsky/Aurinkomyrsky/Aurinkomyrsky/Aurinkomyrsky.cs @ 6829

Revision 6829, 3.5 KB checked in by jupipana, 4 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 Aurinkomyrsky : PhysicsGame
10{
11    const double nopeus = 200;
12    const int RUUDUN_KOKO = 40;
13
14    PlatformCharacter pelaaja1;
15
16    Image pelaajanKuva = LoadImage("alus");
17    Image tahtiKuva = LoadImage("tahti");
18    Image avaruus = LoadImage("avaruus");
19
20    Vector nopeusYlos = new Vector(0, 300);
21    Vector nopeusVasen = new Vector(-300, 0);
22    Vector nopeusOikea = new Vector(300, 0);
23    Vector nopeusAlas = new Vector(-300, 0);
24
25    SoundEffect maaliAani = LoadSoundEffect("maali");
26
27    public override void Begin()
28    {
29        LuoKentta();
30        LisaaNappaimet();
31
32        Camera.Follow(pelaaja1);
33        Camera.ZoomFactor = 1.2;
34        Camera.StayInLevel = true;
35    }
36
37    void LuoKentta()
38    {
39        TileMap kentta = TileMap.FromLevelAsset("kentta1");
40        kentta.SetTileMethod('#', LisaaTaso);
41        kentta.SetTileMethod('*', LisaaTahti);
42        kentta.SetTileMethod('A', LisaaPelaaja);
43        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
44        Level.CreateBorders();
45        Level.Background.Image = avaruus;
46    }
47
48    void LisaaTaso(Vector paikka, double leveys, double korkeus)
49    {
50        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
51        taso.Position = paikka;
52        taso.Color = Color.Brown;
53        Add(taso);
54    }
55
56    void LisaaTahti(Vector paikka, double leveys, double korkeus)
57    {
58        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
59        tahti.IgnoresCollisionResponse = true;
60        tahti.Position = paikka;
61        tahti.Image = tahtiKuva;
62        tahti.Tag = "tahti";
63        Add(tahti);
64    }
65
66    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
67    {
68        pelaaja1 = new PlatformCharacter(leveys, korkeus);
69        pelaaja1.Position = paikka;
70        pelaaja1.Mass = 4.0;
71        pelaaja1.Image = pelaajanKuva;
72        pelaaja1.Push(new Vector(100,0));
73        pelaaja1.LinearDamping = 0.95;
74        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
75        Add(pelaaja1);
76    }
77
78    void LisaaNappaimet()
79    {
80        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
81        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
82
83        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Liikkuu vasemmalle", pelaaja1, nopeusVasen);
84        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Liikkuu vasemmalle", pelaaja1, nopeusOikea);
85        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Liikkuu ylös", pelaaja1, nopeusYlos);
86        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Liikkuu alas", pelaaja1, nopeusAlas);
87    }
88
89    void Liikuta(PlatformCharacter hahmo, double nopeus)
90    {
91        //hahmo.Walk(nopeus);
92    }
93
94    void AsetaNopeus(PhysicsObject alus, Vector nopeus)
95    {
96        if ((nopeus.Y > 0) && (alus.Top > Level.Top))
97        {
98            alus.Velocity = Vector.Zero;
99            return;
100        }
101
102        if ((nopeus.Y < 0) && (alus.Bottom < Level.Bottom))
103        {
104            alus.Velocity = Vector.Zero;
105            return;
106        }
107        alus.Velocity = nopeus;
108    }
109
110    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
111    {
112        maaliAani.Play();
113        MessageDisplay.Add("Keräsit tähden!");
114        tahti.Destroy();
115    }
116}
Note: See TracBrowser for help on using the repository browser.