source: 2015/30/EliasHy/SpaceAdventure/SpaceAdventure new.cs @ 6917

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