source: 2015/30/EliasHy/SpaceAdventure/SpaceAdventure/SpaceAdventure/SpaceAdventure.cs @ 6913

Revision 6913, 4.4 KB checked in by elhytone, 5 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 SpaceAdventure : PhysicsGame
10{
11    PhysicsObject pelaaja;
12    AssaultRifle ase;
13    Image CoolAlusKuva = LoadImage("cool alus");
14    Image CoolHyvisalus = LoadImage("coolhyvisalus");
15    Image CoolAsteroidi = LoadImage("cool asteroid bu");
16    Image taustaKuva = LoadImage("cool space");
17
18    double eteenpain = 500;
19    double kaantyminen = 800;
20
21    public override void Begin()
22    {
23        LuoKentta();
24
25        Camera.Zoom(2.5);
26        Camera.FollowedObject = pelaaja;
27        Level.Background.CreateStars();
28        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, eteenpain, 1);
29        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, kaantyminen, 2);
30        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, kaantyminen, 3);
31
32        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää pelin");
33        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja);
34        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
35    }
36
37    void LiikutaPelaajaa(double voima, int miten)
38    {
39        switch (miten)
40        {
41            case 1:
42                pelaaja.Push(Vector.FromLengthAndAngle(voima, pelaaja.Angle));     
43                break;
44            case 2:
45                pelaaja.ApplyTorque(voima);
46                break;
47            case 3:
48                pelaaja.ApplyTorque(-voima);
49                break;
50            case 4:
51                break;
52            default:
53                break;
54        }
55             
56    }
57
58    void LuoKentta()
59    {
60        //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä.
61        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("cool tausta");
62
63        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa.
64        ruudut.SetTileMethod(Color.FromHexCode("00FFFF"), LuoPelaaja);
65        ruudut.SetTileMethod(Color.Black, LuoVihollinen);
66        ruudut.SetTileMethod(Color.Gold, LuoAsteroidi);
67        ruudut.SetTileMethod(Color.FromHexCode("FF0000"), LuoVihollinen2);
68
69        //Level.CreateBorders();
70
71        //3. Execute luo kentän
72        //   Parametreina leveys ja korkeus
73        ruudut.Execute(20, 20);
74    }
75    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
76    {
77
78        //pelaaja = new PhysicsObject(10, 10);
79        pelaaja = new PhysicsObject(CoolHyvisalus);
80        pelaaja.Restitution = 1.0;
81        pelaaja.Color = Color.Blue;
82        pelaaja.Position = paikka;
83        pelaaja.AngularDamping = 0.9;
84
85        ase = new AssaultRifle(1,1);
86       
87
88        Add(pelaaja);
89        pelaaja.Add(ase);
90    }
91    void LuoVihollinen(Vector paikka, double leveys, double korkeus)
92    {
93        PhysicsObject Vihollinen = new PhysicsObject(CoolAlusKuva);
94        Vihollinen.Position = paikka;
95        Add(Vihollinen);
96        Vihollinen.Tag = "pahis";
97
98        //AddCollisionHandler(Laser, CollisionHandler.ExplodeTarget(150, false));
99
100
101        //Tehdään uudet satunnaisaivot, jotka liikkuvat nopeudella 200
102        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(150);
103
104        //Ominaisuuksien muokkaaminen
105        satunnaisAivot.ChangeMovementSeconds = 3;
106
107        //Aivot käyttöön oliolle
108        Vihollinen.Brain = satunnaisAivot;
109
110    }
111    void LuoAsteroidi(Vector paikka, double leveys, double korkeus)
112    {
113        //PhysicsObject Asteroidi = new PhysicsObject(10, 10);
114        PhysicsObject Asteroidi = new PhysicsObject(CoolAsteroidi);
115        Asteroidi.Color = Color.Red;
116        Asteroidi.Position = paikka;
117        Add(Asteroidi);
118
119    }
120    void LuoVihollinen2(Vector paikka, double leveys, double korkeus)
121    {
122        PhysicsObject Vihollinen2 = new PhysicsObject(10, 10);
123        Vihollinen2.Color = Color.Gold;
124        Vihollinen2.Position = paikka;
125        Add(Vihollinen2);
126        Vihollinen2.Tag = "pahis2";
127
128    }
129
130    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
131    {
132 
133
134    }
135    void AmmuAseella(PhysicsObject pelaaja)
136    { 
137        PhysicsObject ammus = ase.Shoot();
138       
139        if (ammus != null)
140        {
141            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
142        }
143    }
144}
Note: See TracBrowser for help on using the repository browser.