source: 2015/30/EliasHy/SpaceAdventure/SpaceAdventure/SpaceAdventure/SpaceAdventure.cs.r6951 @ 10337

Revision 6976, 6.0 KB checked in by aahalme, 6 years ago (diff)

coool game mään

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 Cloud = LoadImage("cloud");
18    Image Laser = LoadImage("laser");
19    Image Boss = LoadImage("Boss Ship_zpspn6osve5");
20    Image Vihollinenalus = LoadImage("enemy ship 2");
21
22    IntMeter pistelaskuri;
23
24    double eteenpain = 500;
25    double kaantyminen = 800;
26
27    public override void Begin()
28    {
29        LuoKentta();
30
31        Camera.Zoom(2.5);
32        Camera.FollowedObject = pelaaja;
33        Level.Background.CreateStars();
34        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, eteenpain, 1);
35        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, kaantyminen, 2);
36        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, kaantyminen, 3);
37
38        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää pelin");
39        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja);
40        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
41        LuoPistelaskuri();
42    }
43
44    void LiikutaPelaajaa(double voima, int miten)
45    {
46        switch (miten)
47        {
48            case 1:
49                pelaaja.Push(Vector.FromLengthAndAngle(voima, pelaaja.Angle));
50                break;
51            case 2:
52                pelaaja.ApplyTorque(voima);
53                break;
54            case 3:
55                pelaaja.ApplyTorque(-voima);
56                break;
57            case 4:
58                break;
59            default:
60                break;
61        }
62
63    }
64
65    void LuoKentta()
66    {
67        //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä.
68        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("cool tausta");
69
70        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa.
71        ruudut.SetTileMethod(Color.FromHexCode("00FFFF"), LuoPelaaja);
72        ruudut.SetTileMethod(Color.Black, LuoVihollinen);
73        ruudut.SetTileMethod(Color.Gold, LuoAsteroidi);
74        ruudut.SetTileMethod(Color.FromHexCode("FF0000"), LuoVihollinen2);
75        ruudut.SetTileMethod(Color.FromHexCode("B200FF"), LuoReuna);
76
77        //Level.CreateBorders();
78
79        //3. Execute luo kentän
80        //   Parametreina leveys ja korkeus
81        ruudut.Execute(20, 20);
82    }
83
84    void LuoReuna(Vector paikka, double leveys, double korkeus)
85    {
86        //PhysicsObject Asteroidi = new PhysicsObject(10, 10);
87        PhysicsObject Reuna = PhysicsObject.CreateStaticObject(Cloud);
88        Reuna.Position = paikka;
89        Reuna.Tag = "reuna";
90        Add(Reuna);
91
92    }
93
94    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
95    {
96
97        //pelaaja = new PhysicsObject(10, 10);
98        pelaaja = new PhysicsObject(CoolHyvisalus);
99        pelaaja.Restitution = 1.0;
100        pelaaja.Color = Color.Blue;
101        pelaaja.Position = paikka;
102        pelaaja.AngularDamping = 0.9;
103        pelaaja.Tag = "pelaaja";
104
105        ase = new AssaultRifle(1, 1);
106
107
108        Add(pelaaja);
109        pelaaja.Add(ase);
110    }
111    void LuoVihollinen(Vector paikka, double leveys, double korkeus)
112    {
113        PhysicsObject Vihollinen = new PhysicsObject(CoolAlusKuva);
114        Vihollinen.Position = paikka;
115        Add(Vihollinen);
116        Vihollinen.Tag = "pahis";
117
118        //AddCollisionHandler(Laser, CollisionHandler.ExplodeTarget(150, false));
119        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
120        seuraajanAivot.Speed = 70;
121        Vihollinen.Brain = seuraajanAivot;
122
123
124    }
125    void LuoAsteroidi(Vector paikka, double leveys, double korkeus)
126    {
127        //PhysicsObject Asteroidi = new PhysicsObject(10, 10);
128        PhysicsObject Asteroidi = new PhysicsObject(CoolAsteroidi);
129        Asteroidi.Color = Color.Red;
130        Asteroidi.Position = paikka;
131        Add(Asteroidi);
132
133    }
134    void LuoVihollinen2(Vector paikka, double leveys, double korkeus)
135    {
136        //PhysicsObject Vihollinen2 = new PhysicsObject(10, 10);
137        PhysicsObject Vihollinen2 = new PhysicsObject(Vihollinenalus);
138        Vihollinen2.Color = Color.Gold;
139        Vihollinen2.Size = new Vector(50, 50);
140        Vihollinen2.Position = paikka;
141        Add(Vihollinen2);
142        Vihollinen2.Tag = "pahis2";
143
144        //Tehdään uudet satunnaisaivot, jotka liikkuvat nopeudella 200
145        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(150);
146
147        //Ominaisuuksien muokkaaminen
148        satunnaisAivot.ChangeMovementSeconds = 3;
149        Vihollinen2.Brain = satunnaisAivot;
150
151    }
152
153    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
154    {
155        if (kohde.Tag.ToString() != "reuna")
156        {
157            kohde.Destroy();
158            pistelaskuri.Value += 1;
159        }
160        ammus.Destroy();
161
162    }
163
164    void LuoPistelaskuri()
165    {
166
167
168        pistelaskuri = new IntMeter(0);
169
170        Label pisteNaytto = new Label();
171        pisteNaytto.X = Screen.Left + 100;
172        pisteNaytto.Y = Screen.Top - 100;
173        pisteNaytto.TextColor = Color.Black;
174        pisteNaytto.Color = Color.White;
175        pisteNaytto.Title = "Pisteet";
176        pisteNaytto.BindTo(pistelaskuri);
177        Add(pisteNaytto);
178    }
179
180    void AmmuAseella(PhysicsObject pelaaja)
181    {
182        PhysicsObject ammus = ase.Shoot();
183
184        if (ammus != null)
185        {
186            ammus.Tag = "ammus";
187            ammus.Size *= 0.5;
188            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
189
190            ammus.Image = Laser;
191            ase.FireRate = 3.0;
192
193            AddCollisionHandler(ammus, AmmusOsui);
194        }
195    }
196}
Note: See TracBrowser for help on using the repository browser.