source: 2014/koodauskerho/38/OttoR/Z_Game/Z_Game/Z_Game/Z_Game.cs @ 5761

Revision 5761, 5.5 KB checked in by hesahave, 6 years ago (diff)

Ase on kohta valmis.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Z_Game : PhysicsGame
10{
11    const double nopeus = 190;
12    const double hyppyNopeus = 700;
13    const int RUUDUN_KOKO = 51;
14
15    private Image[] kavelyAnimaatio = LoadImages("Player3juoksu1", "Player3juoksu2");
16    private Image[] paikallaanAnimaatio = LoadImages("Player3");
17
18
19    PlatformCharacter pelaaja1;
20
21    DoubleMeter elamaLaskuri;
22
23
24    Image pelaajanKuva = LoadImage("Player3");
25    Image tahtiKuva = LoadImage("tahti");
26    Image tasokuva = LoadImage("ruoho");
27    Image taso2kuva = LoadImage("maa");
28    SoundEffect maaliAani = LoadSoundEffect("maali");
29
30    AssaultRifle pelaajan1Ase;
31
32
33    public override void Begin()
34    {
35        Gravity = new Vector(0, -2000);
36
37        SmoothTextures = false;
38        LuoKentta();
39        LisaaNappaimet();
40
41        Camera.Follow(pelaaja1);
42        Camera.ZoomFactor = 1.6;
43        Camera.StayInLevel = true;
44    }
45
46    void LuoKentta()
47    {
48        TileMap kentta = TileMap.FromLevelAsset("kentta1");
49        kentta.SetTileMethod('#', LisaaTaso);
50        kentta.SetTileMethod('*', LisaaTahti);
51        kentta.SetTileMethod('M', LisaaTaso2);
52        kentta.SetTileMethod('N', LisaaPelaaja);
53        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
54        Level.CreateBorders();
55        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
56    }
57
58    void LisaaTaso(Vector paikka, double leveys, double korkeus)
59    {
60        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
61        taso.Position = paikka;
62        taso.Color = Color.Green;
63        taso.Image = tasokuva;
64        Add(taso);
65    }
66    void LisaaTaso2(Vector paikka, double leveys, double korkeus)
67    {
68        PhysicsObject taso2 = PhysicsObject.CreateStaticObject(leveys, korkeus);
69        taso2.Position = paikka;
70        taso2.Color = Color.Green;
71        taso2.Image = taso2kuva;
72        Add(taso2);
73    }
74
75
76    void LisaaTahti(Vector paikka, double leveys, double korkeus)
77    {
78        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
79        tahti.IgnoresCollisionResponse = true;
80        tahti.Position = paikka;
81        tahti.Image = tahtiKuva;
82        tahti.Tag = "tahti";
83        Add(tahti);
84    }
85
86    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
87    {
88        pelaaja1 = new PlatformCharacter(leveys, korkeus);
89        pelaaja1.Position = paikka;
90        pelaaja1.Mass = 4.0;
91        pelaaja1.Image = pelaajanKuva;
92        pelaaja1.Size = new Vector(50, 75);
93        pelaaja1.AnimWalk = new Animation(kavelyAnimaatio);
94        pelaaja1.AnimIdle = new Animation(paikallaanAnimaatio);
95        pelaaja1.AnimWalk.FPS = 5;
96
97
98        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
99        Add(pelaaja1);
100        LuoElamaLaskuri();
101        LuoHaulikko();
102    }
103
104    void LuoHaulikko()
105    {
106        pelaajan1Ase = new AssaultRifle(40, 35);
107
108
109        pelaaja1.Add(pelaajan1Ase);
110
111    }
112
113
114    void LuoElamaLaskuri()
115    {
116        elamaLaskuri = new DoubleMeter(100);
117        elamaLaskuri.MaxValue = 100;
118        elamaLaskuri.LowerLimit += pelaaja1.Destroy;
119
120        ProgressBar elamaPalkki = new ProgressBar(390, 20);
121        elamaPalkki.BindTo(elamaLaskuri);
122        //Taustaväri:
123        elamaPalkki.Color = Color.Red;
124
125        //Palkin väri:
126        elamaPalkki.BarColor = Color.BrightGreen;
127
128        //Reunan väri:
129        elamaPalkki.BorderColor = Color.Black;
130
131        elamaPalkki.X = Screen.Left + 285;
132        elamaPalkki.Y = Screen.Top - 1001;
133
134
135
136        Add(elamaPalkki);
137    }
138
139
140    void AmmuAseella(AssaultRifle ase)
141    {
142        PhysicsObject ammus = ase.Shoot();
143
144        if (ammus != null)
145        {
146            ammus.Size *= 1;
147            //ammus.Image = ...
148            ammus.MaximumLifetime = TimeSpan.FromSeconds(10.0);
149        }
150    }
151
152   
153
154
155    void LisaaNappaimet()
156    {
157        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
158        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
159
160        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
161        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
162        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
163
164        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
165
166
167        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
168
169        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
170        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
171        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
172
173
174
175        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
176    }
177
178    void Liikuta(PlatformCharacter hahmo, double nopeus)
179    {
180        hahmo.Walk(nopeus);
181    }
182
183    void Hyppaa(PlatformCharacter hahmo, double nopeus)
184    {
185        hahmo.Jump(nopeus);
186    }
187
188    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
189    {
190        maaliAani.Play();
191        MessageDisplay.Add("Keräsit tähden!");
192        tahti.Destroy();
193    }
194
195
196}
Note: See TracBrowser for help on using the repository browser.