source: 2015/27/SanteriK/Hundreddays/Hundreddays/Hundreddays/Hundreddays.cs @ 6685

Revision 6685, 6.3 KB checked in by saveviku, 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 Hundreddays : PhysicsGame
10{
11    Image wallimage = LoadImage("seinä");
12    Image pelaajankuva = LoadImage("ukkeli2");
13    Image pelaajankuva1 = LoadImage("ukkeli1");
14    Image groundImage = LoadImage("lattia");
15    Image zombinkuva = LoadImage("zombie");
16
17
18    PhysicsObject ukkeli2;
19    PhysicsObject ukkeli1;
20   
21
22    //Kuinka nopeasti ukkeli liikkuu maksimissaan
23    double maxLiikkuminen = 1800.0;
24
25    AssaultRifle ase;
26    AssaultRifle ase2;
27    public override void Begin()
28    {
29
30        LuoKentta();
31        AsetaOhjaimet();
32
33        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
34        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
35    }
36    void LuoLattia(Vector paikka, double leveys, double korkeus)
37    {
38        GameObject lattia = new GameObject(leveys, korkeus);
39
40        lattia.Position = paikka;
41        Add(lattia, -1);
42        lattia.Image = groundImage;
43
44    }
45
46    void LuoKentta()
47    {
48        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kenttä");
49
50        ruudut.SetTileMethod(Color.FromHexCode("0026FF"), LuoPelaaja1);
51        ruudut.SetTileMethod(Color.FromHexCode("4CFF00"), LuoPelaaja2);
52        ruudut.SetTileMethod(Color.FromHexCode("FF0000"), Luozombi);
53        ruudut.SetTileMethod(Color.Black, LuoTaso);
54        ruudut.SetTileMethod(Color.Gray, LuoLattia);
55        ruudut.Execute(20, 20);
56        Camera.ZoomToLevel();
57    }
58    void LuoTaso(Vector paikka, double leveys, double korkeus)
59    {
60        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
61        taso.Position = paikka;
62        taso.Image = wallimage;
63        taso.CollisionIgnoreGroup = 1;
64        Add(taso);
65
66
67    }
68    void Luozombi(Vector paikka, double leveys, double korkeus)
69    {
70
71        Zombi zombi = new Zombi(40, 20);
72        zombi.Image = zombinkuva;
73        zombi.FlipImage();
74        zombi.AngularDamping = 0.8;
75        zombi.Tag = "zombi";
76        Add(zombi);
77
78        AddCollisionHandler(zombi, "ammus", delegate(PhysicsObject z, PhysicsObject ammus)
79        {
80            Zombi zo = z as Zombi;
81            zo.ElamaLaskuri.Value--;
82        });
83
84        FollowerBrain seuraajanAivot = new FollowerBrain("ukkeli");
85        RandomMoverBrain satunnaisAivot = new RandomMoverBrain();
86        seuraajanAivot.Speed = 50;                 // Millä nopeudella kohdetta seurataan
87        seuraajanAivot.DistanceFar = 150;           // Etäisyys jolla aletaan seurata kohdetta
88       
89        seuraajanAivot.FarBrain = satunnaisAivot;   // Käytetään satunnaisaivoja kun ollaan kaukana
90        satunnaisAivot.ChangeMovementSeconds = 3;
91
92        //Aivot käyttöön oliolle
93        zombi.Brain = seuraajanAivot;
94
95       
96    }
97
98
99
100    void AsetaOhjaimet()
101    {
102        ControllerTwo.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaPelaajaa, "Liikuta pelaajaa tattia pyörittämällä.", ukkeli2);
103        ControllerTwo.Listen(Button.A, ButtonState.Down, AmmuAseella, "ammu", ase2);
104        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaPelaajaa, "Liikuta pelaajaa tattia pyörittämällä.", ukkeli1);
105        ControllerOne.Listen(Button.A, ButtonState.Down, AmmuAseella, "ammu", ase);
106        //Keyboard.Listen(Key.Left, ButtonState.Down,
107        //  LiikutaPelaajaa, null, new Vector(-1000, 0));
108        //Keyboard.Listen(Key.Right, ButtonState.Down,
109        //  LiikutaPelaajaa, null, new Vector(1000, 0));
110        //Keyboard.Listen(Key.Up, ButtonState.Down,
111        //  LiikutaPelaajaa, null, new Vector(0, 1000));
112        //Keyboard.Listen(Key.Down, ButtonState.Down,
113        //  LiikutaPelaajaa, null, new Vector(0, -1000));
114        //Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
115
116
117    }
118
119    void LiikutaPelaajaa(AnalogState tatinTila, PhysicsObject pelaaja)
120    {
121        pelaaja.Angle = tatinTila.StateVector.Angle;
122        pelaaja.Push(tatinTila.StateVector * maxLiikkuminen);
123
124    }
125
126    void AmmuAseella(AssaultRifle ase)
127    {
128        PhysicsObject ammus = ase.Shoot();
129
130        if (ammus != null)
131        {
132            //ammus.Size *= 3;
133            //ammus.Image = ...
134            ammus.MaximumLifetime = TimeSpan.FromSeconds(6.0);
135            ammus.Tag = "ammus";
136        }
137    }
138    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
139    {
140        ammus.Destroy();
141    }
142
143    PhysicsObject LuoPelaaja(Vector paikka, double leveys, double korkeus)
144    {
145        PhysicsObject ukkeli = new PhysicsObject(40, 20);
146        ukkeli.LinearDamping = 0.7;
147        ukkeli.AngularDamping = 0.9;
148        ukkeli.Shape = Shape.Rectangle;
149        ukkeli.Position = paikka;
150        ukkeli.Image = pelaajankuva1;
151        ukkeli.Color = Color.Red;
152        ukkeli.Tag = "ukkeli";
153        Add(ukkeli);
154
155        AddCollisionHandler(ukkeli, "zombi", PelaajaosuuVihuun);
156
157        LuoLattia(paikka, leveys, korkeus);
158
159        return ukkeli;
160    }
161
162    void LuoPelaaja1(Vector paikka, double leveys, double korkeus)
163    {
164        ukkeli1 = LuoPelaaja(paikka, leveys, korkeus);
165        ase = new AssaultRifle(30, 10);
166
167        // //Ammusten määrä aluksi:
168        ase.Ammo.Value = 1000;
169        ase.IsVisible = false;
170        // //Mitä tapahtuu kun ammus osuu johonkin?
171        ase.ProjectileCollision = AmmusOsui;
172        ukkeli1.Add(ase);
173
174    }
175
176    void LuoPelaaja2(Vector paikka, double leveys, double korkeus)
177    {
178        ukkeli2 = LuoPelaaja(paikka, leveys, korkeus);
179        ase2 = new AssaultRifle(30, 10);
180
181        // //Ammusten määrä aluksi:
182        ase2.Ammo.Value = 1000;
183        ase2.IsVisible = false;
184        // //Mitä tapahtuu kun ammus osuu johonkin?
185        ase2.ProjectileCollision = AmmusOsui;
186        ukkeli2.Add(ase2);
187
188    }
189    void PelaajaosuuVihuun(PhysicsObject ukkeli,PhysicsObject zombi )
190    {
191        ukkeli.Destroy();
192    }
193}
194class Zombi : PhysicsObject
195{
196    private IntMeter elamaLaskuri = new IntMeter(3, 0, 3);
197    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
198
199    public Zombi(double leveys, double korkeus)
200        : base(leveys, korkeus)
201    {
202        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
203    }
204}
205
Note: See TracBrowser for help on using the repository browser.