source: 2015/30/SamuelL/jotain/jotain/jotain/jotain.cs @ 6842

Revision 6842, 4.4 KB checked in by misakana, 6 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 jotain : 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("norsu");
18    Image tahtiKuva = LoadImage("tahti");
19    Image Taustakuva = LoadImage("tausta 1");
20    Image kasvi1 = LoadImage("tausta - kasvi 1");
21    Image kasvi2 = LoadImage("tausta - kasvit 2");
22    Image taustaruoho = LoadImage("tausta ruoho");
23
24    SoundEffect maaliAani = LoadSoundEffect("maali");
25
26    public override void Begin()
27    {
28        Gravity = new Vector(0, -1000);
29
30        LuoKentta();
31        LisaaNappaimet();
32
33        Camera.Follow(pelaaja1);
34        Camera.ZoomFactor = 1.2;
35        Camera.StayInLevel = true;
36    }
37
38    void LuoKentta()
39    {
40        TileMap kentta = TileMap.FromLevelAsset("kentta1");
41        kentta.SetTileMethod('#', LisaaTaso);
42        kentta.SetTileMethod('*', LisaaTahti);
43        kentta.SetTileMethod('N', LisaaPelaaja);
44        kentta.SetTileMethod('k', LisaaKasvi, kasvi1, 1);
45        kentta.SetTileMethod('K', LisaaKasvi, kasvi2, -1);
46        kentta.SetTileMethod('r', Lisaaruoho, taustaruoho, 1);
47        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
48        kentta.Optimize('#');
49        Level.CreateBorders();
50        Level.Background.Image = Taustakuva;
51        Level.Background.FitToLevel();
52    }
53
54    void LisaaTaso(Vector paikka, double leveys, double korkeus)
55    {
56        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
57        taso.Position = paikka;
58        taso.IsVisible = true;
59        Add(taso);
60        taso.Color = Color.Black;
61    }
62    void LisaaKasvi(Vector paikka, double leveys, double korkeus,Image kuva,int taso)
63    {
64        GameObject kasvi = new GameObject(leveys*1.5,korkeus*3);
65        kasvi.Position = paikka + new Vector (0, 0);
66        Add(kasvi,taso);
67        kasvi.Image = kuva;
68
69    }
70
71    void Lisaaruoho(Vector paikka, double leveys, double korkeus,Image kuva,int taso)
72    {
73        GameObject ruoho = new GameObject(leveys,korkeus);
74        ruoho.Position = paikka + new Vector ();
75        Add(ruoho,taso);
76        ruoho.Image = kuva;
77
78    }
79
80    void LisaaTahti(Vector paikka, double leveys, double korkeus)
81    {
82        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
83        tahti.IgnoresCollisionResponse = true;
84        tahti.Position = paikka;
85        tahti.Image = tahtiKuva;
86        tahti.Tag = "tahti";
87        Add(tahti);
88    }
89
90    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
91    {
92        pelaaja1 = new PlatformCharacter(leveys, korkeus);
93        pelaaja1.Position = paikka;
94        pelaaja1.Mass = 4.0;
95        pelaaja1.Image = pelaajanKuva;
96        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
97        Add(pelaaja1);
98    }
99
100    void LisaaNappaimet()
101    {
102        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
103        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
104
105        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
106        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
107        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
108
109        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
110
111        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
112        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
113        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
114
115        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
116    }
117
118    void Liikuta(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 TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
129    {
130        maaliAani.Play();
131        MessageDisplay.Add("Keräsit tähden!");
132        tahti.Destroy();
133    }
134}
Note: See TracBrowser for help on using the repository browser.