source: 2017/utsjoki/ÁndeN/msPaint/msPaint/msPaint/msPaint.cs @ 9176

Revision 9176, 5.8 KB checked in by otosjahn, 2 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Jypeli;
6using Jypeli.Assets;
7using Jypeli.Controls;
8using Jypeli.Effects;
9using Jypeli.Widgets;
10
11public class msPaint : PhysicsGame
12{
13    Image taustaKuva = LoadImage("tausta");
14
15    Vector nopeusYlos = new Vector(0, 250);
16    Vector nopeusAlas = new Vector(0, -250);
17    Vector nopeusVasen = new Vector(-250, 0);
18    Vector nopeusOikea = new Vector(250, 0);
19
20    PhysicsObject pelaaja1;
21    PhysicsObject pelaaja2;
22
23    PhysicsObject vasenReuna;
24    PhysicsObject oikeaReuna;
25    PhysicsObject yläReuna;
26    PhysicsObject alaReuna;
27   
28
29    public override void Begin()
30    {
31        LuoKentta();
32        AsetaOhjaimet();
33
34       
35    }
36
37    void LuoRuutu(Vector paikka, double leveys, double korkeus)
38    {
39        GameObject ruutu = new GameObject(leveys, korkeus);
40        ruutu.Position = paikka;
41        ruutu.Color = Color.Transparent;
42        Add(ruutu);
43    }
44
45    void LuoKentta()
46    {
47        TileMap kentta = TileMap.FromLevelAsset("kentta");
48        kentta.SetTileMethod('x', LuoRuutu);
49        kentta.Execute(50, 50);
50
51        pelaaja1 = LuoPelaaja1(RandomGen.NextDouble(Level.Left, Level.Right), RandomGen.NextDouble(Level.Bottom, Level.Top));
52        pelaaja2 = LuoPelaaja2(RandomGen.NextDouble(Level.Left, Level.Right), RandomGen.NextDouble(Level.Bottom, Level.Top));
53
54        vasenReuna = Level.CreateLeftBorder();
55        vasenReuna.Tag = "vasen";
56        vasenReuna.IsVisible = false;
57
58        oikeaReuna = Level.CreateRightBorder();
59        oikeaReuna.Tag = "oikea";
60        oikeaReuna.IsVisible = false;
61
62        yläReuna = Level.CreateTopBorder();
63        yläReuna.Tag = "ylä";
64        yläReuna.IsVisible = false;
65
66        alaReuna = Level.CreateBottomBorder();
67        alaReuna.Tag = "ala";
68        alaReuna.IsVisible = false;
69
70        Level.Background.Image = taustaKuva;
71        Level.Background.TileToLevel();
72
73       
74
75        Camera.ZoomToLevel();
76    }
77
78    PhysicsObject LuoPelaaja1(double x, double y)
79    {
80        PhysicsObject pelaaja1 = new PhysicsObject(60.0, 100.0);
81        pelaaja1.Shape = Shape.Rectangle;
82        pelaaja1.X = x;
83        pelaaja1.Y = y;
84        //pelaaja1.LinearDamping = 0.4;
85        Add(pelaaja1);
86        pelaaja1.Image = LoadImage("pelaaja1");
87        pelaaja1.CanRotate = false;
88        AddCollisionHandler(pelaaja1, "vasen", osuuVasempaan);
89        AddCollisionHandler(pelaaja1, "oikea", osuuOikeaan);
90        AddCollisionHandler(pelaaja1, "ylä", osuuYlös);
91        AddCollisionHandler(pelaaja1, "ala", osuuAlas);
92
93
94        Timer ajastin = new Timer();
95        ajastin.Interval = 0.01;
96        ajastin.Timeout += delegate { Maalaa(pelaaja1); };
97        ajastin.Start();
98
99        return pelaaja1;
100    }
101
102    void osuuVasempaan(PhysicsObject pelaaja, PhysicsObject seinä)
103    {
104        pelaaja.X = oikeaReuna.Left - 50;
105    }
106
107    void osuuOikeaan(PhysicsObject pelaaja, PhysicsObject seinä)
108    {
109        pelaaja.X = vasenReuna.Right + 50;
110    }
111
112    void osuuYlös(PhysicsObject pelaaja, PhysicsObject seinä)
113    {
114        pelaaja.Y = alaReuna.Top + 70;
115    }
116
117    void osuuAlas(PhysicsObject pelaaja, PhysicsObject seinä)
118    {
119        pelaaja.Y = yläReuna.Bottom - 70;
120    }
121
122    PhysicsObject LuoPelaaja2(double x, double y)
123    {
124        PhysicsObject pelaaja2 = new PhysicsObject(60.0, 100.0);
125        pelaaja2.Shape = Shape.Rectangle;
126        pelaaja2.X = x;
127        pelaaja2.Y = y;
128        //pelaaja2.LinearDamping = 0.4;
129        Add(pelaaja2);
130        pelaaja2.Image = LoadImage("pelaaja2");
131        pelaaja2.CanRotate = false;
132        AddCollisionHandler(pelaaja2, "vasen", osuuVasempaan);
133        AddCollisionHandler(pelaaja2, "oikea", osuuOikeaan);
134        AddCollisionHandler(pelaaja2, "ylä", osuuYlös);
135        AddCollisionHandler(pelaaja2, "ala", osuuAlas);
136
137        Timer ajastin = new Timer();
138        ajastin.Interval = 0.01;
139        ajastin.Timeout += delegate { Maalaa(pelaaja2); };
140        ajastin.Start();
141
142        return pelaaja2;
143    }
144
145    void Maalaa(PhysicsObject pelaaja)
146    {
147        GameObject ruutu = GetObjectAt(pelaaja.Position+(pelaaja.Angle + Angle.FromDegrees(90)).GetVector()*-50);
148       
149        if(pelaaja==pelaaja1)
150        {
151            ruutu.Image = LoadImage("splat1");
152        }
153        if (pelaaja == pelaaja2)
154        {
155            ruutu.Image = LoadImage("splat2");
156        }
157    }
158
159    void AsetaOhjaimet()
160    {
161        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, null, pelaaja1, nopeusYlos, Angle.FromDegrees(0));
162        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, null, pelaaja1, nopeusAlas, Angle.FromDegrees(180));
163        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, null, pelaaja1, nopeusVasen, Angle.FromDegrees(90));
164        Keyboard.Listen(Key.D, ButtonState.Down, AsetaNopeus, null, pelaaja1, nopeusOikea, Angle.FromDegrees(270));
165
166        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, null, pelaaja2, nopeusYlos, Angle.FromDegrees(0));
167        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, null, pelaaja2, nopeusAlas, Angle.FromDegrees(180));
168        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, null, pelaaja2, nopeusVasen, Angle.FromDegrees(90));
169        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, null, pelaaja2, nopeusOikea, Angle.FromDegrees(270));
170
171        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
172        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
173       
174    }
175
176    void AsetaNopeus(PhysicsObject pelaaja, Vector nopeus, Angle kulma)
177    {
178        //pelaaja.Push(nopeus);
179        pelaaja.Velocity = nopeus;
180        pelaaja.Angle = kulma;
181    }
182}
Note: See TracBrowser for help on using the repository browser.