source: 2014/23/EliasK/Don't die ;)/FysiikkaPeli1/FysiikkaPeli1/Don't die.cs @ 4899

Revision 4899, 6.2 KB checked in by sieerinn, 7 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 FysiikkaPeli1 : PhysicsGame
10{
11    PhysicsObject pelaaja;
12   
13   
14    AssaultRifle pelaajan1Ase;
15   
16   
17    Image Pelaajakuva = LoadImage("Pelaaja");
18    Image Maailmakuva = LoadImage("Untitled");
19    Image Hirviokuva = LoadImage("Hirviö");
20    Image groundImage = LoadImage("Kivi");
21    Image Ammuskuva = LoadImage("Ammus");
22    Image taustaKuva = LoadImage("Background");
23    Image AseKuva = LoadImage("AK47");
24    class Vihu : PhysicsObject
25    {
26        private IntMeter elamaLaskuri = new IntMeter(3, 0, 3);
27        public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
28
29        public Vihu(double leveys, double korkeus)
30            : base(leveys, korkeus)
31        {
32            elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
33        }
34
35    }
36
37    public override void Begin()
38    {
39        // TODO: Kirjoita ohjelmakoodisi tähän
40        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
41"Aloita peli", "Parhaat pisteet", "Lopeta");
42        alkuValikko.AddItemHandler(0, AloitaPeli);
43        alkuValikko.AddItemHandler(1, ParhaatPisteet);
44        alkuValikko.AddItemHandler(2, Exit); Add(alkuValikko);
45        LuoKentta();
46        Mouse.IsCursorVisible = true;
47        Camera.Follow(pelaaja);
48        Camera.Zoom(3);
49        Camera.StayInLevel = true;
50        pelaajan1Ase.Image = AseKuva;
51        Keyboard.Listen(Key.A, ButtonState.Down,
52    LiikutaPelaajaa, null, new Vector(-1000, 0));
53        Keyboard.Listen(Key.D, ButtonState.Down,
54          LiikutaPelaajaa, null, new Vector(1000, 0));
55        Keyboard.Listen(Key.W, ButtonState.Down,
56          LiikutaPelaajaa, null, new Vector(0, 1000));
57        Keyboard.Listen(Key.S, ButtonState.Down,
58          LiikutaPelaajaa, null, new Vector(0, -1000));
59        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, AmmuAseella, "Ammu", pelaajan1Ase);
60        Vector pelaajanSuunta = Vector.FromLengthAndAngle(500.0, pelaaja.Angle);
61        pelaaja.Push(pelaajanSuunta);
62        pelaaja.LinearDamping = 0.95;
63        pelaaja.MaxVelocity = 200;
64        pelaaja.Restitution = 0.0;
65        pelaaja.AngularDamping = 0.5;
66        Level.Background.Image = taustaKuva;
67        Level.Background.FitToLevel();
68
69        Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella");
70        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
71        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
72    }
73    void LuoKentta()
74    {
75        //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä.
76        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("Untitled");
77
78        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa.
79        ruudut.SetTileMethod(Color.FromHexCode("00FF00"), LuoPelaaja);
80        ruudut.SetTileMethod(Color.Black, LuoTaso);
81        ruudut.SetTileMethod(Color.Red, LuoHirvio);
82
83        //3. Execute luo kentän
84        //   Parametreina leveys ja korkeus
85        ruudut.Execute(20, 20);
86    }
87
88    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
89    {
90        pelaaja = new Vihu(leveys, korkeus);
91        pelaaja.Position = paikka;
92        pelaaja.Image = Pelaajakuva;
93        pelaajan1Ase = new AssaultRifle(30, 10);
94        pelaaja.Tag = ("pelaaja");
95        AddCollisionHandler(pelaaja, "hirvio", hirvioosui);
96        //Ammusten määrä aluksi:
97        pelaajan1Ase.Ammo.Value = 1000;
98
99        //Mitä tapahtuu kun ammus osuu johonkin?
100        pelaajan1Ase.ProjectileCollision = AmmusOsui;
101        pelaajan1Ase.Position = new Vector(10, 5);
102        pelaaja.Add(pelaajan1Ase);
103       
104        Add(pelaaja);
105    }
106    void LuoHirvio(Vector paikka, double leveys, double korkeus)
107    {
108        PhysicsObject hirvio = new Vihu(leveys, korkeus);
109        hirvio.Image = Hirviokuva;
110        hirvio.Position = paikka;
111        Add(hirvio);
112        hirvio.Tag = "hirvio";
113
114
115        LabyrinthWandererBrain labyrinttiAivot = new LabyrinthWandererBrain(leveys);
116        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
117        seuraajanAivot.Speed = 200;                 // Millä nopeudella kohdetta seurataan
118        seuraajanAivot.DistanceFar = 100;           // Etäisyys jolla aletaan seurata kohdetta
119        seuraajanAivot.DistanceClose = 5;         // Etäisyys jolloin ollaan lähellä kohdetta
120        seuraajanAivot.StopWhenTargetClose = true;  // Pysähdytään kun ollaan lähellä kohdetta
121        seuraajanAivot.FarBrain = labyrinttiAivot;
122        labyrinttiAivot.Speed = 100.0;
123        labyrinttiAivot.LabyrinthWallTag = "seina";
124
125        seuraajanAivot.Active = true;
126        seuraajanAivot.TurnWhileMoving = true;
127        labyrinttiAivot.TurnWhileMoving = true;
128        hirvio.Brain = seuraajanAivot;
129
130
131    }
132    void hirvioosui(PhysicsObject pelaaja, PhysicsObject hirvio)
133    {
134        pelaaja.Destroy();
135       }
136
137    void LuoTaso(Vector paikka, double leveys, double korkeus)
138    {
139        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
140        taso.Position = paikka;
141        taso.Image = groundImage;
142        taso.CollisionIgnoreGroup = 1;
143        taso.Tag = "seina";
144        Add(taso);
145    }
146    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
147    {
148        if (kohde.Tag == "hirvio")
149        {
150            kohde.Destroy();
151        }
152        ammus.Destroy();
153
154    }
155    void Tahtaa(AnalogState hiirenLiike)
156    {
157        Vector suunta = (Mouse.PositionOnWorld - pelaajan1Ase.AbsolutePosition).Normalize();
158       
159        pelaaja.Angle = suunta.Angle;
160    }
161    void LiikutaPelaajaa(Vector vektori)
162    {
163        pelaaja.Push(vektori);
164    }
165    void AmmuAseella(AssaultRifle ase)
166    {
167        PhysicsObject ammus = ase.Shoot();
168
169        if (ammus != null)
170        {
171            ammus.Image = Ammuskuva;
172            //ammus.Size *= 3;
173            //ammus.Image = ...
174            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
175
176        }
177    }
178    void AloitaPeli()
179    {
180    }
181    void ParhaatPisteet()
182    {
183    }
184}
Note: See TracBrowser for help on using the repository browser.