source: 2017/30/JouniP/Syomispeli/Syomispeli/Syomispeli/Syomispeli.cs @ 9108

Revision 9108, 4.8 KB checked in by nupeohje, 2 years ago (diff)

Refaktorointia: Beginistä vihollisten tekeminen omaan aliohjelmaansa

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Syomispeli : PhysicsGame
10{
11    PhysicsObject pelaaja1;
12
13    Image pahiksenNollailukuva = LoadImage("pahisnollailee");
14
15    public override void Begin()
16    {
17
18        LisaaPelaaja1();
19        LisaaOhjaimet();
20
21        LisaaKaikkiViholliset();
22
23
24        LuoKentta();
25
26        //LuoPongmaila(200.0, 0.0);
27       
28       
29    }
30
31    void LisaaKaikkiViholliset()
32    {
33        //LisaaPahis(100.0, 0.0);
34        //LisaaPahis(-100.0, 0.0);
35        //LisaaPahis(0.0, 200.0);
36
37        for (int i = 0; i < 3; i++)
38        {
39            LisaaPahis(RandomGen.NextDouble(Level.Left, Level.Right), RandomGen.NextDouble(Level.Bottom, Level.Top));
40        }
41    }
42
43    void LisaaPahis(double x, double y)
44    {
45        PhysicsObject pahis = new PhysicsObject(40.0, 40.0);
46        pahis.X = x;
47        pahis.Y = y;
48        pahis.CanRotate = false;
49        pahis.Image = pahiksenNollailukuva;
50        pahis.Tag = "ilkee tyyppi";
51        Add(pahis);
52    }
53
54    void LuoKentta()
55    {
56        Level.CreateBorders();
57        Level.Background.CreateGradient(Color.Black, Color.Gray);
58        LisaaRuokapalat();
59
60        //LuoOlio(Shape.Diamond, Color.Blue, 0.0, 0.0);
61        //LuoOlio(Shape.Circle, Color.White, 100.0, 20.0);
62        //LuoOlio(Shape.Rectangle, Color.Brown, 50.0, 150.0);
63
64        //LuoPallo(Color.White, 50.0, 47.8);
65        //LuoPallo(Color.Yellow, 30.0, 30.0);
66        //LuoPallo(Color.Yellow, 70.0, 80.0);
67
68    }
69
70    void LisaaPelaaja1()
71    {
72        pelaaja1 = new PhysicsObject(40.0, 40.0);
73        pelaaja1.CanRotate = false;
74        Add(pelaaja1);
75
76        AddCollisionHandler(pelaaja1, "ruoka", PelaajaKasvaaIsommaksi);
77        AddCollisionHandler(pelaaja1, "ilkee tyyppi", PelaajaTormasiViholliseen);
78    }
79
80    void LisaaRuokapalat()
81    {
82        //LuoSyotavaJuttu(10.0, 10.0);
83        //LuoSyotavaJuttu(90.0, 90.0);
84        //LuoSyotavaJuttu(100.0, 340.0);
85        //LuoSyotavaJuttu(300.0, 390.0);
86        //LuoSyotavaJuttu(200.0, 10.0);
87        //LuoSyotavaJuttu(-200.0, 90.0);
88
89        for (int i = 0; i < 50; i++)
90        {
91            double xKoordinaatti = RandomGen.NextDouble(Level.Left, Level.Right);
92            double yKoordinaatti = RandomGen.NextDouble(Level.Bottom, Level.Top);
93            LuoSyotavaJuttu(xKoordinaatti, yKoordinaatti);
94
95        }
96
97
98    }
99
100    void LisaaOhjaimet()
101    {
102        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-1000.0, 0.0));
103        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, new Vector(1000.0, 0.0));
104        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0.0, 1000.0));
105        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0.0, -1000.0));
106
107        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
108    }
109
110    void LiikutaPelaajaa(Vector vektori)
111    {
112        pelaaja1.Push(vektori);
113    }
114
115    void PelaajaKasvaaIsommaksi(PhysicsObject pelaajaJokaTormasi, PhysicsObject tormayksenKohde)
116    {
117        pelaajaJokaTormasi.Width = pelaajaJokaTormasi.Width + 10.0;
118        pelaajaJokaTormasi.Height = pelaajaJokaTormasi.Height + 10.0;
119
120        tormayksenKohde.Destroy();
121    }
122
123    void PelaajaTormasiViholliseen(PhysicsObject pelaajaJokaTormasi, PhysicsObject vihuJohonTormattiin)
124    {
125        if (pelaajaJokaTormasi.Width - 10.0 <= 0.0 || pelaajaJokaTormasi.Height - 10.0 <= 0.0)
126        {
127            return;
128        }
129        pelaajaJokaTormasi.Width -= 10.0;
130        pelaajaJokaTormasi.Height -= 10.0;
131    }
132    void LuoOlio(Shape muoto, Color vari, double x, double y, double leveys = 40.0, double korkeus = 40.0)
133    {
134        PhysicsObject otus = new PhysicsObject(leveys, korkeus);
135        otus.Shape = muoto;
136        otus.Color = vari;
137        otus.X = x;
138        otus.Y = y;
139        Add(otus);
140    }
141
142    void LuoPallo(Color vari, double x, double y)
143    {
144        LuoOlio(Shape.Circle, vari, x, y);
145    }
146
147    void LuoSyotavaJuttu(double x, double y)
148    {
149        //LuoOlio(Shape.Circle, Color.Yellow, x, y, 10.0, 10.0);
150
151        PhysicsObject syotava = new PhysicsObject(10.0, 10.0);
152        syotava.Shape = Shape.Circle;
153        syotava.Color = Color.Yellow;
154        syotava.X = x;
155        syotava.Y = y;
156        Add(syotava);
157        syotava.Tag = "ruoka";
158
159    }
160
161    void LuoPongmaila(double x, double y)
162    {
163        //PhysicsObject maila = new PhysicsObject(20.0, 80.0);
164        //maila.X = x;
165        //maila.Y = y;
166        //Add(maila);
167
168        LuoOlio(Shape.Rectangle, Color.White, x, y, 20.0, 80.0);
169    }
170}
Note: See TracBrowser for help on using the repository browser.