source: 2014/27/KatjuL/OmaPeli/OmaPeli/OmaPeli/OmaPeli.cs @ 5348

Revision 5348, 4.7 KB checked in by katleino, 6 years ago (diff)

Kenttä muokattuna, viholliset luotu, ajastin vihollisille, ase pelaajalle, pistelaskuri luotuna,

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class OmaPeli : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja;
16    IntMeter pisteLaskuri = new IntMeter(0);
17
18
19    public override void Begin()
20    {
21        Gravity = new Vector(0, -1000);
22
23        LuoKentta();
24        LisaaNappaimet();
25        LuoPistelaskuri();
26        LuoVihollisAjastin();
27
28        Camera.Follow(pelaaja);
29        Camera.ZoomFactor = 1.2;
30        Camera.StayInLevel = true;
31    }
32
33    void LuoKentta()
34    {
35        TileMap kentta = TileMap.FromLevelAsset("kentta1");
36        kentta.SetTileMethod('#', LisaaTaso);
37        kentta.SetTileMethod('P', LisaaPelaaja);
38        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
39        Level.CreateBorders();
40        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
41
42        Viholliset();
43    }
44
45    void LisaaTaso(Vector paikka, double leveys, double korkeus)
46    {
47        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
48        taso.Position = paikka;
49        taso.Color = Color.Green;
50        Add(taso);
51    }
52
53    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
54    {
55        pelaaja = new PlatformCharacter(leveys, korkeus);
56        pelaaja.Position = paikka;
57        pelaaja.Mass = 4.0;
58        pelaaja.Shape = Shape.Circle;
59        pelaaja.Color = Color.Black;
60        Add(pelaaja);
61
62        pelaaja.Weapon = new AssaultRifle(30, 10);
63        pelaaja.Weapon.Tag = "ase";
64        pelaaja.Weapon.InfiniteAmmo = true;
65        pelaaja.Weapon.ProjectileCollision = AmmusOsui;
66        pelaaja.Weapon.AmmoIgnoresGravity = false;
67        pelaaja.Weapon.CanHitOwner = false;
68
69        AddCollisionHandler(pelaaja, "pahis", CollisionHandler.DestroyObject);
70    }
71
72    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
73    {
74        ammus.Destroy();
75        if (kohde.Tag == "pahis")
76        {
77            kohde.Destroy();
78            pisteLaskuri.Value += 1;
79        }
80    }
81
82    void AmmuAseella(PlatformCharacter pelaaja)
83    {
84        PhysicsObject ammus = pelaaja.Weapon.Shoot();
85
86        if (ammus != null)
87        {
88            //ammus.Size *= 3;
89            //ammus.Image = ...
90            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
91        }
92    }
93
94    void LisaaNappaimet()
95    {
96        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
97        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
98
99        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja, -nopeus);
100        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja, nopeus);
101        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja, hyppyNopeus);
102
103
104        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja);
105    }
106
107    void Liikuta(PlatformCharacter hahmo, double nopeus)
108    {
109        hahmo.Walk(nopeus);
110    }
111
112    void Hyppaa(PlatformCharacter hahmo, double nopeus)
113    {
114        hahmo.Jump(nopeus);
115    }
116
117    void Viholliset()
118    {
119        PlatformCharacter vihollinen = new PlatformCharacter(30, 30);
120        vihollinen.Shape = Shape.Rectangle;
121        vihollinen.Color = Color.Black;
122        vihollinen.Tag = "pahis";
123        Add(vihollinen);
124        vihollinen.LifetimeLeft = TimeSpan.FromSeconds(30.0);
125
126        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
127        tasoAivot.Speed = 100;
128        vihollinen.Brain = tasoAivot;
129
130        tasoAivot.FallsOffPlatforms = true;
131        tasoAivot.JumpSpeed = 600;
132        tasoAivot.TriesToJump = true;
133        pelaaja.Weapon.ProjectileCollision = AmmusOsui;
134    }
135
136    void LuoPistelaskuri()
137    {
138        pisteLaskuri = new IntMeter(0);
139
140        Label pisteNaytto = new Label();
141        pisteNaytto.X = Screen.Left + 100;
142        pisteNaytto.Y = Screen.Top - 100;
143        pisteNaytto.TextColor = Color.Black;
144        pisteNaytto.Color = Color.White;
145
146        pisteNaytto.BindTo(pisteLaskuri);
147        Add(pisteNaytto);
148
149        pisteNaytto.IntFormatString = "Pisteitä: {0:D3}";
150
151        pisteNaytto.Title = "pisteet";
152    }
153
154    void LuoVihollisAjastin()
155    {
156        Timer ajastin = new Timer();
157        ajastin.Interval = 0.5;
158        ajastin.Timeout += Viholliset;
159        ajastin.Start();
160    }
161}
162
163// TODO Lisää vihollisten paikka
164//TODO alkuvalikko
165//TODO lisää äänet
166//TODO lisää "Game Over"
Note: See TracBrowser for help on using the repository browser.