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

Revision 610, 5.6 KB checked in by paaaanro, 11 years ago (diff)

Tein Ball Warsia eteenpäin ja lisäsin siihen vihollisen.

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