source: 2017/24/SamuelN/SpaceShooter2k17/SpaceShooter2k17/SpaceShooter2k17/SpaceShooter2k17.cs @ 8745

Revision 8745, 6.6 KB checked in by npo17_6, 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 SpaceShooter2k17 : PhysicsGame
10{
11    PhysicsObject player;
12    PhysicsObject bottom;
13    PhysicsObject top;
14    PhysicsObject left;
15    PhysicsObject right;
16    Timer moveTimer2;
17    Color vari = RandomGen.NextColor();
18    Vector SpeedUp = new Vector(0, 500);
19    Vector SpeedDown = new Vector(0, -500);
20    AssaultRifle playerGun;
21    SoundEffect d = LoadSoundEffect("d");
22    List<GameObject> movingObj = new List<GameObject>();
23    double way = -5;
24    Widget wid;
25    int levelnum = 1;
26    public override void Begin()
27    {
28        IsMouseVisible = true;
29        IsFullScreen = true;
30        Level.Background.Color = Color.Black;
31        MultiSelectWindow alkuValikko = new MultiSelectWindow("OuterSpace Invaders", "Start Game" , "Exit");
32        alkuValikko.AddItemHandler(0, LoadLevel);
33        alkuValikko.AddItemHandler(1, Exit);
34
35        wid = new Widget(1500, 900);
36        wid.Image = LoadImage("start");
37        Add(wid);
38
39        alkuValikko.IsVisible = false;
40        Add(alkuValikko);
41    }
42    void Start()
43    {
44        wid.IsVisible = false;
45        Level.Background.CreateStars(5000);
46        MediaPlayer.Play("IttyBitty");
47        LuoPistelaskuri();
48
49        Timer moveTimer = new Timer();
50        moveTimer.Interval = 0.05;
51        moveTimer.Timeout += MoveObj;
52        moveTimer.Start();
53
54        moveTimer2 = new Timer();
55        moveTimer2.Interval = 2;
56        moveTimer2.Timeout += AddObj;
57        moveTimer2.Start();
58
59        top = new PhysicsObject(200, 50);
60        top.Color = Color.FromHexCode("00FF00");
61        top.X = -900;
62        top.Y = 550;
63        top.IsVisible = false;
64        Add(top);
65
66        bottom = new PhysicsObject(200, 50);
67        bottom.Color = Color.FromHexCode("00FF00");
68        bottom.X = -900;
69        bottom.Y = -550;
70        bottom.IsVisible = false;
71        Add(bottom);
72
73        player = PhysicsObject.CreateStaticObject(88, 143);
74        player.Image = LoadImage("ship");
75        player.X = -900;
76        player.Shape = Shape.FromImage(LoadImage("ship"));
77        AddCollisionHandler(player, "obj", p);
78        player.Restitution = 1.0;
79
80        playerGun = new AssaultRifle(120, 40);
81        playerGun.InfiniteAmmo = true;
82        playerGun.ProjectileCollision = AmmoHit;
83        playerGun.X -= 60;
84        playerGun.Y = 0;
85        playerGun.IsVisible = false;
86        playerGun.AttackSound = null; //LoadSoundEffect("shoot");
87        playerGun.FireRate = 2;
88        player.Add(playerGun);
89
90        Add(player);
91
92        Keyboard.Listen(Key.Space, ButtonState.Down, Shoot, "Shoot", playerGun);
93
94        Keyboard.Listen(Key.Up, ButtonState.Down, SetSpeed, null, player, SpeedUp);
95        Keyboard.Listen(Key.Up, ButtonState.Released, SetSpeed, null, player, Vector.Zero);
96
97        Keyboard.Listen(Key.Down, ButtonState.Down, SetSpeed, null, player, SpeedDown);
98        Keyboard.Listen(Key.Down, ButtonState.Released, SetSpeed, null, player, Vector.Zero);
99
100        Keyboard.Listen(Key.LeftShift, ButtonState.Pressed, AddObj, null);
101        Keyboard.Listen(Key.F12, ButtonState.Pressed, Input, null);
102    }
103    void LoadLevel()
104    {
105        ClearAll();
106        if (levelnum == 1)
107        {
108            Start();
109        }
110        else if (levelnum == 2)
111        {
112            moveTimer2.Interval = 1.8;
113            way = 6;
114            Start();
115        }
116        else if (levelnum == 3)
117        {
118            moveTimer2.Interval = 1.6;
119            way = 7;
120            Start();
121        }
122        else if (levelnum == 4)
123        {
124            moveTimer2.Interval = 1.4;
125            way = 8;
126            Start();
127        }
128        else if (levelnum == 5)
129        {
130            moveTimer2.Interval = 1.2;
131            way = 9;
132            Start();
133        }
134        else if (levelnum == 6)
135        {
136            moveTimer2.Interval = 1.0;
137            way = 10;
138            Start();
139        }
140    }
141    void p(PhysicsObject player, PhysicsObject kohde)
142    {
143        pisteLaskuri.Value -= 2;
144    }
145    void Input()
146    {
147        InputWindow kysymysIkkuna = new InputWindow("Cheat Engine");
148        kysymysIkkuna.TextEntered += ProcessInput;
149        Add(kysymysIkkuna);
150        Pause();
151    }
152    void ProcessInput(InputWindow ikkuna)
153    {
154        Pause();
155        string vastaus = ikkuna.InputBox.Text;
156        if (vastaus == "exit")
157        {
158            Exit();
159        }
160        else if (vastaus == "mlgmode true")
161        {
162            playerGun.FireRate = 100;
163            moveTimer2.Interval = 0.1;
164            way = -30;
165        }
166        else if (vastaus == "mlgmode false")
167        {
168            playerGun.FireRate = 2;
169            moveTimer2.Interval = 1.5;
170        }
171    }
172        IntMeter pisteLaskuri;
173    void LuoPistelaskuri()
174    {
175        pisteLaskuri = new IntMeter(0);
176
177        Label pisteNaytto = new Label();
178        pisteNaytto.X = Screen.Left + 100;
179        pisteNaytto.Y = Screen.Top - 100;
180        pisteNaytto.TextColor = Color.White;
181
182        pisteNaytto.BindTo(pisteLaskuri);
183        Add(pisteNaytto);
184    }
185    void AddObj()
186    {
187        double im = RandomGen.NextDouble(-400, 400);
188        PhysicsObject obj = PhysicsObject.CreateStaticObject(99, 72);
189        obj.Y = im;
190        obj.X = 900;
191        obj.Image = LoadImage("space");
192        obj.Shape = Shape.FromImage(LoadImage("space"));
193        obj.Tag = "obj";
194        Add(obj);
195        movingObj.Add(obj);
196    }
197    private void MoveObj()
198    {
199        for (int i = 0; i < movingObj.Count; i++)
200        {
201            GameObject obj = movingObj[i];
202            obj.X += way;
203            if (obj.X <= Level.Left)
204            {
205                obj.Destroy();
206                movingObj.Remove(obj);
207            }
208        }
209    }
210    void AmmoHit(PhysicsObject ammus, PhysicsObject kohde)
211    {
212        ammus.Destroy();
213        if (kohde.Tag == "obj")
214        {
215            kohde.Destroy();
216            //d.Play();
217            pisteLaskuri.Value += 1;
218        }
219    }
220
221    void Shoot(AssaultRifle gun)
222    {
223        PhysicsObject ammo = gun.Shoot();
224       
225    }
226    void SetSpeed(PhysicsObject player, Vector nopeus)
227    {
228        if ((nopeus.Y > 0) && (player.Top > top.Bottom))
229        {
230            player.Velocity = Vector.Zero;
231            return;
232        }
233        if ((nopeus.Y < 0) && (player.Bottom < bottom.Top))
234        {
235            player.Velocity = Vector.Zero;
236            return;
237        }
238
239        player.Velocity = nopeus;
240    }
241}
Note: See TracBrowser for help on using the repository browser.