source: 2016/26/EmmaH/Peli/DahlianKoira/DahlianKoira/DahlianKoira/DahlianKoira.cs @ 7569

Revision 7569, 5.6 KB checked in by empaheik, 3 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8class Dahlia : PlatformCharacter
9{
10
11    private IntMeter elamaLaskuri = new IntMeter(5, 0, 5);
12    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
13
14    public Dahlia(double leveys, double korkeus)
15        : base (leveys, korkeus)
16    {
17        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
18    }
19}
20
21
22public class DahlianKoira : PhysicsGame
23{
24    Dahlia pelaaja;
25
26    Image pelaajanKuva = LoadImage("herpderp");
27    Image kummituksenKuva = LoadImage("kummituskuva");
28    Image paalyTiilenKuva = LoadImage("stone1");
29    Image tayttoTiilenKuva = LoadImage("stonefill");
30    Image aseenKuva = LoadImage("ase");
31    Image ammuksenKuva = LoadImage("ammo1");
32
33    private Animation dahliaIdlaa;
34    private Animation dahliaHyppaa;
35    private Animation dahliaPutoaa;
36    private Animation dahliaJuoksee;
37
38    public override void Begin()
39    {
40
41        AlustaAnimaatiot();
42        LuoKentta();
43        LisaaOhjaimet();
44        LuoKummitukset();
45    }
46
47    void AlustaAnimaatiot()
48    {
49        dahliaIdlaa = LoadAnimation("idle");
50        dahliaHyppaa = LoadAnimation("jump");
51        dahliaPutoaa = LoadAnimation("fallfall");
52        dahliaJuoksee = LoadAnimation("runrun");
53    }
54
55    void LuoKummitukset()
56    {
57        int indeksi = 0;
58        while(indeksi < 19)
59        {
60            double xKoordinaatti = RandomGen.NextDouble(Level.Left + 200, Level.Right - 200);
61            double yKoordinaatti = RandomGen.NextDouble(Level.Bottom + 200, Level.Top - 200);
62            LuoKummitus(new Vector(xKoordinaatti, yKoordinaatti), 60, 60);
63
64            indeksi++;
65        }
66    }
67
68    void LuoKummitus(Vector paikka, double b, double c)
69    {
70        PhysicsObject kummitus = new PhysicsObject(b, c);
71        kummitus.Position = paikka;
72        kummitus.Image = kummituksenKuva;
73        kummitus.IgnoresCollisionResponse = true;
74        kummitus.Tag = "kummitus";
75        Add(kummitus, 3);
76
77        //FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
78        RandomMoverBrain aivot = new RandomMoverBrain(100);
79        aivot.WanderRadius = 200;
80        kummitus.Brain = aivot;
81    }
82
83    void LuoKentta()
84    {
85        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta1");
86        ruudut.SetTileMethod(Color.Black, LuoTaso, paalyTiilenKuva);
87        ruudut.SetTileMethod(Color.FromHexCode("303030"), LuoTaso, tayttoTiilenKuva);
88        ruudut.SetTileMethod(Color.FromHexCode("FFD800"), LuoPelaaja);
89        ruudut.SetTileMethod(Color.FromHexCode("00FF21"), LuoAse);
90        //ruudut.SetTileMethod(Color.Red, LuoKummitus);
91        ruudut.Execute(60, 60);
92
93        Camera.Follow(pelaaja);
94        Camera.StayInLevel = true;
95
96        Level.Background.Color = Color.Brown;
97        Gravity = new Vector(0, -1000);
98    }
99
100    void LuoAse(Vector paikka, double leveys, double korkeus)
101    {
102        PhysicsObject ase = new PhysicsObject(leveys/2, korkeus/2);
103        ase.Position = paikka;
104        ase.Image = aseenKuva;
105        ase.Tag = "plasmakanuuna";
106        Add(ase);
107    }
108
109    void LisaaOhjaimet()
110    {
111        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "", 400.0);
112        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "", -400.0);
113        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "");
114
115        Keyboard.Listen(Key.Space, ButtonState.Pressed, Ammu, "Ammu plasmapanoksia");
116
117        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Sulje peli");
118    }
119
120    void Ammu()
121    {
122        PhysicsObject ammus = pelaaja.Weapon.Shoot();
123
124        if(ammus != null)
125        {
126            ammus.Size *= 3;
127            ammus.Image = ammuksenKuva;
128        }
129       
130    }
131
132    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
133    {
134        pelaaja = new Dahlia(80, 120);
135        pelaaja.Image = pelaajanKuva;
136        pelaaja.Position = paikka;
137        pelaaja.LinearDamping = 1;
138        pelaaja.Tag = "pelaaja";
139        pelaaja.AnimIdle = dahliaIdlaa;
140        pelaaja.AnimWalk = dahliaJuoksee;
141        pelaaja.AnimJump = dahliaHyppaa;
142        pelaaja.AnimFall = dahliaPutoaa;
143        Add(pelaaja);
144
145        AddCollisionHandler(pelaaja, "kummitus", PelaajaTormaaKummitukseen);
146        AddCollisionHandler(pelaaja, "plasmakanuuna", PelaajaPoimiiAseen);
147    }
148
149    void PelaajaTormaaKummitukseen(PhysicsObject tormaaja, PhysicsObject vihu)
150    {
151        pelaaja.ElamaLaskuri.Value--;
152        //Timer.SingleShot(3, Exit);
153    }
154
155    void PelaajaPoimiiAseen(PhysicsObject tormaaja, PhysicsObject kohde)
156    {
157        pelaaja.Weapon = new AssaultRifle(30, 30);
158        pelaaja.Weapon.Image = kohde.Image; // tai pelaaja.Weapon.Image = aseenkuva
159        //pelaaja.Weapon.Position += new Vector(-5, 20);
160        pelaaja.Weapon.ProjectileCollision = AmmusOsui;
161        //pelaaja.Wea
162        kohde.Destroy();
163    }
164
165    void AmmusOsui(PhysicsObject tormaaja, PhysicsObject tormatty)
166    {
167        tormaaja.Destroy();
168        if(tormatty.Tag == "kummitus")
169        {
170            tormatty.Destroy();
171        }
172    }
173
174    void LuoTaso(Vector paikka, double leveys, double korkeus, Image kuva)
175    {
176        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
177        taso.Position = paikka;
178        taso.Image = kuva;
179        Add(taso);
180    }
181
182    void Hyppaa()
183    {
184        pelaaja.Jump(600);
185    }
186
187    void Liikuta(double nopeus)
188    {
189        pelaaja.Walk(nopeus);
190    }
191
192
193}
Note: See TracBrowser for help on using the repository browser.