source: 2017/27/OskariK/OK/OK/OK/OK.cs @ 8933

Revision 8933, 7.3 KB checked in by npo17_42, 4 years ago (diff)

peliä on poijjaat, tehty.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class OK : PhysicsGame
10{
11    GameObject command; //UI-ruutu, jossa pelikomennot
12    GameObject feed; //UI-ruutu, johon tulee combat log
13    GameObject portrait; //ruutu, jossa pelihahmon HP ja kauniit kasvot
14    GameObject tappio; //ruutu, joka ilmaantuu pelaajan hävitessä
15    GameObject foe1; //ruutu, jossa pahis 1
16    GameObject foe2; //ruutu, jossa pahis 2
17    GameObject foe3; //ruutu, jossa pahis 3
18    double textheight = -220;
19    double textwidth = -750;
20
21    PhysicsObject Pointer; //jolla valitaan schaibaa
22    Timer ajastin;
23    bool pelaajatoiminut = false;  //tarkistaa, että onko pelaaja käyttänyt vuoronsa, että hän ei pääse rikkomaan peliä
24
25    IntMeter goopHP; //ekan vihollisen hp
26    IntMeter HP; //pelaajan hp
27    int playerdamage = 10; //pelaajan papu
28    int enemy1damage = 5; //ekan vihollisen tehot
29
30    Label foeHP;
31    Label playerHP;
32    Label feedtext;
33
34    Vector nopeusYlos = new Vector(0, 100);
35    Vector nopeusAlas = new Vector(0, -100);
36    Vector nopeusVasen = new Vector(-200, 0);
37    Vector nopeusOikea = new Vector(200, 0);
38
39    public override void Begin()
40    {
41        LuoAlue();
42        luopelaaja();
43        LuoHP();
44        Kontrollit();
45
46
47        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
48    }
49
50    void LuoAlue()
51    {
52
53        Level.Background.Color = Color.White;
54
55        command = new GameObject(450.0, 300.0);
56        command.Shape = Shape.Rectangle;
57        command.Color = Color.Black;
58        command.X = 370.00;
59        command.Y = -330.00;
60        command.Image = LoadImage("Kökkö");
61        Add(command);
62
63        feed = new GameObject(1000.00, 300.00);
64        feed.Shape = Shape.Rectangle;
65        feed.Color = Color.Black;
66        feed.X = -400.00;
67        feed.Y = -330.00;
68        Add(feed);
69
70        feedtext = new Label();
71        feedtext.X = textwidth;
72        feedtext.Y = textheight;
73        feedtext.TextColor = Color.White;
74        feedtext.Color = Color.Transparent;
75        Add(feedtext, 2);
76
77
78        portrait = new GameObject(250.00, 300.00);
79        portrait.Shape = Shape.Rectangle;
80        portrait.Color = Color.Black;
81        portrait.X = 750.00;
82        portrait.Y = -330.00;
83        Add(portrait);
84
85        foe1 = new GameObject(1800.00, 700.00);
86        foe1.Shape = Shape.Rectangle;
87        foe1.Color = Color.Aqua;
88        foe1.X = -10.00;
89        foe1.Y = 200.00;
90        foe1.Image = LoadImage("köntsä");
91        Add(foe1);
92    }
93
94    PhysicsObject luopelaaja()
95    {
96        Pointer = new PhysicsObject(5.0, 5.0);
97        Pointer.Color = Color.White;
98        Pointer.X = 190.00;
99        Pointer.Y = -220.00;
100        Add(Pointer, 2);
101        Pointer.IgnoresExplosions = true;
102        return Pointer;
103    }
104
105    void LuoHP()
106    {
107        goopHP = new IntMeter(20);
108
109        Label foeHP = new Label();
110
111        foeHP.X = 150.00;
112        foeHP.Y = Screen.Top - 40.00;
113        foeHP.TextColor = Color.Red;
114        foeHP.Color = Color.Transparent;
115
116        foeHP.BindTo(goopHP);
117        Add(foeHP, 2);
118
119        HP = new IntMeter(65);
120
121        Label playerHP = new Label();
122
123        playerHP.X = 660.00;
124        playerHP.Y = -200.00;
125        playerHP.TextColor = Color.LightGreen;
126        playerHP.Color = Color.Transparent;
127
128        playerHP.BindTo(HP);
129        Add(playerHP, 2);
130
131
132
133
134    }
135    void AsetaNopeus(PhysicsObject Pointer, Vector nopeus)
136    {
137        PlaySound("blip");
138
139        if (Pointer.Velocity.Magnitude > 0) return;
140
141        Vector sijainti = Pointer.Position + nopeus;
142        if (sijainti.Y > command.Top) return;
143        else if (sijainti.Y < command.Bottom) return;
144
145        Pointer.MoveTo(Pointer.Position + nopeus, 1000.00);
146
147    }
148    void Kontrollit()
149    {
150        Keyboard.Listen(Key.Down, ButtonState.Pressed, AsetaNopeus, "liikkuu", Pointer, nopeusAlas);
151        //Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, Pointer, Vector.Zero);
152
153        Keyboard.Listen(Key.Up, ButtonState.Pressed, AsetaNopeus, "liikkuu", Pointer, nopeusYlos);
154        //Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, Pointer, Vector.Zero);
155
156
157
158        //Keyboard.Listen(Key.Left, ButtonState.Pressed, AsetaNopeus, "liikkuu", Pointer, nopeusVasen);
159        ///Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, null, Pointer, Vector.Zero);
160
161        //Keyboard.Listen(Key.Right, ButtonState.Pressed, AsetaNopeus, "liikkuu", Pointer, nopeusOikea);
162        //Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus, null, Pointer, Vector.Zero);
163
164        Keyboard.Listen(Key.Z, ButtonState.Pressed, Valitse, null);
165
166        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
167
168    }
169
170    void Valitse()
171
172    {
173        if (pelaajatoiminut) return;
174        pelaajatoiminut = true;
175        if (Pointer.Y > command.Top - command.Height / 3) Attack();
176        else if (Pointer.Y < command.Bottom + command.Height / 3) Exit();
177        else Exit();
178    }
179
180    void Attack() //mitä tapahtuu jos painaa attackkia
181    {
182        goopHP.Value -= playerdamage;
183
184        GameObject hit = new GameObject(100.00, 100.00);
185        hit.Shape = Shape.Star;
186        hit.Color = Color.OrangeRed;
187        hit.X = 0.00;
188        hit.Y = Screen.Top - 60.00;
189        Add(hit, 3);
190        hit.Image = LoadImage("hitanim2");
191        hit.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 50);
192
193        PlaySound("hit");
194
195        GameObject hit2 = new GameObject(100.00, 100.00);
196        hit2.Shape = Shape.Star;
197        hit2.Color = Color.OrangeRed;
198        hit2.X = 0.00;
199        hit2.Y = Screen.Top - 60.00;
200        hit2.Image = LoadImage("hitanim");
201        hit2.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 100);
202        Add(hit2, 3);
203
204        Attackfeed(playerdamage);
205    }
206
207    void Attackfeed(double damage) //combat login tiedot päivittyy
208    {
209        double y = feedtext.Y;
210
211        feedtext.Text = "Delivered " + damage + " damage.\n" + feedtext.Text;
212        feedtext.Y = textheight - feedtext.Height / 2;
213
214        if (goopHP == 0) Transition();
215
216        ajastin = new Timer();
217        ajastin.Interval = 1.00;
218        ajastin.Timeout += Enemy1attack;
219        ajastin.Start();
220    }
221
222    void Enemy1attack() //ekan vihollisen AI
223
224    {
225        PlaySound("playertakesdamage");
226
227        HP.Value -= enemy1damage;
228
229        double y = feedtext.Y;
230        double x = feedtext.X;
231
232        feedtext.Text = "Received " + enemy1damage + " damage.\n" + feedtext.Text;
233        feedtext.Y = textheight - feedtext.Height / 2;
234        feedtext.X = textwidth;
235
236        ajastin.Stop();
237
238        pelaajatoiminut = false;
239
240        if (HP == 0) Lose();
241    }
242
243    void Transition() //pelin siirtyminen eteenpäin, kun pahis voitettu
244    {
245        //return Enemy1attack();
246    }
247
248    void Lose() //pelaajan häviö
249    {
250        pelaajatoiminut = true;
251        tappio = new GameObject(Screen.Width, Screen.Height);
252        tappio.Shape = Shape.Rectangle;
253        tappio.Color = Color.Black;
254        tappio.Image = LoadImage("häviö");
255        Add(tappio, 3);
256
257    }
258}
259
Note: See TracBrowser for help on using the repository browser.