source: 2010/23/elalylon/Ball Wars/Peli.cs @ 642

Revision 642, 6.2 KB checked in by paaaanro, 10 years ago (diff)

Tein Ball Warsia eteenpäin ja laitoin aseeseen collisionhandlerin. Tein mys vähän muita lisäyksiä.

Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5
6
7namespace Ball_Wars
8{
9    class Tasohyppely : PhysicsGame
10    {
11        const double nopeus = 200;
12        const double hyppyVoima = 8000;
13        int enemyHitpoints = 10;
14        int pelaajaHitpoints = 50;
15        Vector enemyshootvector;
16        Vector tahtaa;
17        Vector vasemmalle = new Vector(-400, 0);
18        Vector oikealle = new Vector(400, 0);
19
20        IntMeter pisteLaskuri;
21        ValueDisplay pisteNaytto;
22        ValueDisplay ammoNaytto;
23        PlatformCharacter pelaaja1;
24        PlatformCharacter vihollinen;
25        AssaultRifle m16;
26        AssaultRifle Glock;
27       
28
29        protected override void Begin()
30        {
31            Level.Width = 2000;
32            Level.Height = 1000;
33
34            // Luodaan pistelaskuri
35            pisteLaskuri = new IntMeter(0);
36
37            // luodaan pistelaskunäyttö
38            pisteNaytto = new ValueDisplay();
39            pisteNaytto.Text = "Pisteitä: ";
40            pisteNaytto.X = Screen.RightSafe - 250;
41            pisteNaytto.Y = Screen.TopSafe - 50;
42            pisteNaytto.BindTo(pisteLaskuri);
43            Add(pisteNaytto);    // lisätään peliin
44
45            ammoNaytto = new ValueDisplay();
46            ammoNaytto.Text = "Pisteitä: ";
47            ammoNaytto.X = Screen.RightSafe - 250;
48            ammoNaytto.Y = Screen.TopSafe - 50;
49            Add(ammoNaytto);
50
51           
52            // Ajastin, jonka avulla ajastetaan vihollisen toiminta,
53            // mm. ampuminen säännöllisin väliajoin
54            Timer aly = new Timer();
55            aly.Interval = 0.1; // 0.1 sekuntia
56            aly.Trigger += enemyshoot;
57            aly.Trigger += enemymove;
58            Add(aly);
59            aly.Start();
60
61            // Zoomataan lähemmäksi
62            Camera.ZoomFactor = 2.0;
63
64            Camera.StayInLevel = true;
65
66            luoKentta();
67
68        }
69
70        void enemyshoot(Timer t)
71        {
72            if (pelaaja1.Position.X < 0)
73            {
74                //Glock laitetaan toisin päin
75            }
76            enemyshootvector = pelaaja1.Position - vihollinen.Position;
77            vihollinen.Weapon.Angle = enemyshootvector.Angle;
78            Glock.Use();
79        }
80        void enemymove(Timer t)
81        {
82
83            if (pelaaja1.Position.X < (vihollinen.Position.X - 100))
84            {
85                vihollinen.Hit(vasemmalle);
86                return;
87            }
88            else if (pelaaja1.Position.X > (vihollinen.Position.X + 100))
89            {
90                vihollinen.Hit(oikealle);
91                return;
92            }       
93        }
94       
95
96               
97        void luoKentta()
98        {
99            Level.CreateBorders();
100            Level.Background.CreateGradient(Color.Blue, Color.Red);
101            Gravity = new Vector(0, -1000);
102           
103           
104            lisaaTaso(-200, -400);
105            lisaaTaso(0, -300);
106            lisaaTaso(-450, -300);
107
108            lisaaPelaajat();
109            LuoVihollinen();
110            Camera.Follow(pelaaja1);
111            lisaaNappaimet();
112        }
113
114        void lisaaTaso(double x, double y)
115        {
116            PhysicsObject taso = PhysicsObject.CreateStaticObject(100, 30);
117            taso.Color = Color.Gray;
118            taso.X = x;
119            taso.Tag = "taso";
120            taso.Y = y;
121            Add(taso);
122           
123        }
124
125        void lisaaPelaajat()
126        {
127            pelaaja1 = new PlatformCharacter(50, 50);
128            pelaaja1.Mass = 10.0;
129            pelaaja1.Image = LoadImage("Hero");
130            pelaaja1.X = 0;
131            pelaaja1.Y = Level.Bottom + 120;
132            pelaaja1.Tag = "pelaaja1";           
133            Add(pelaaja1);
134
135            m16 = new AssaultRifle(100, 30);
136            m16.Ammo.Value = 60;
137            pelaaja1.Add(m16);
138            m16.Image = LoadImage("m16_levea");
139            m16.TimeBetweenUse = new TimeSpan(1500000);
140            m16.BulletCollision = LuotiOsuu;
141            // TODO: Panokset lentämään suorempaan
142        }
143        void LuotiOsuu(PhysicsObject kuula, PhysicsObject toinen)
144        {
145            // Vähennä Hitpointsia
146        }
147
148        void LuoVihollinen()
149        {
150            vihollinen = new PlatformCharacter(50, 50);
151            vihollinen.Mass = 10.0;
152            vihollinen.Image = LoadImage("enemy");
153            vihollinen.X = 200;
154            vihollinen.Y = Level.Bottom + 120;
155            Add(vihollinen);
156           
157            Glock = new AssaultRifle(100, 30);
158            Glock.Ammo.Value = 14;
159            pelaaja1.Weapon = m16;
160            Glock.Image = LoadImage("Glock 17");
161            Glock.TimeBetweenUse = new TimeSpan(3000000);
162            vihollinen.Weapon = Glock;
163            // TODO: Saako vihollisen ampumia panoksia / omia panoksia häviämään jotenkin? (tuleeko niistä damagea pelaajalle?)
164
165        }
166        void lisaaNappaimet()
167        {
168            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
169            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
170
171            Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
172            Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
173            Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
174            Mouse.Listen(MouseButton.Left, ButtonState.Down, shoot, "ammu");
175            Mouse.ListenMovement(0.1, tahtax_, null);
176        }
177
178        void tahtax_(AnalogState tila)
179        {
180            if (Mouse.PositionOnScreen.< 0)
181            {
182
183            }
184            else if (Mouse.PositionOnScreen.X > 0)
185            {
186
187            }
188
189            tahtaa = Mouse.PositionOnWorld - pelaaja1.Position;
190            m16.Angle = tahtaa.Angle;
191        }
192
193        void shoot()
194        {
195            m16.Use();
196        }
197
198        void liikuta(PlatformCharacter hahmo, double nopeus)
199        {
200            hahmo.Walk(nopeus);
201        }
202
203        void hyppaa(PlatformCharacter hahmo, double voima)
204        {
205            hahmo.Jump(voima);
206        }
207    }
208}
Note: See TracBrowser for help on using the repository browser.