source: 2017/utsjoki/NilláN/Speargear/Speargear/Speargear/Speargear.cs @ 9092

Revision 9092, 3.5 KB checked in by sieerinn, 2 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9class Pelaaja : PhysicsObject
10{
11    private IntMeter elamaLaskuri = new IntMeter(3, 0, 3);
12    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
13    public Vector suunta;
14    public Pelaaja(double leveys, double korkeus)
15        : base(leveys, korkeus)
16    {
17        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
18    }
19}
20
21public class Speargear : PhysicsGame
22{
23    Pelaaja pelaaja1;
24    Pelaaja pelaaja2;
25
26    Vector nopeusYlos = new Vector(0, 10000);
27    Vector nopeusAlas = new Vector(0, -10000);
28    Vector nopeusOikea = new Vector(10000, 0);
29    Vector nopeusVasen = new Vector(-10000, 0);
30
31    PhysicsObject vasenReuna;
32    PhysicsObject oikeaReuna;
33    PhysicsObject ylaReuna;
34    PhysicsObject alaReuna;
35
36    public override void Begin()
37    {
38        SmoothTextures = false;
39        LuoKentta();
40        Ohjaimet();
41        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
42        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
43    }
44
45    Pelaaja LuoPelaaja(double x, double y)
46    {
47        Pelaaja pelaaja = new Pelaaja(50, 50);
48        pelaaja.Shape = Shape.Rectangle;
49        Add(pelaaja);
50        pelaaja.X = x;
51        pelaaja.Y = y;
52        pelaaja.LinearDamping = 0.4;
53        pelaaja.CanRotate = false;
54        pelaaja.Image = LoadImage("peliukko");
55        return pelaaja;
56
57
58    }
59
60    void LuoKentta()
61    {
62        pelaaja1 = LuoPelaaja(0, 0);
63        pelaaja2 = LuoPelaaja(-100, 0);
64
65        vasenReuna = Level.CreateLeftBorder();
66        oikeaReuna = Level.CreateRightBorder();
67        ylaReuna = Level.CreateTopBorder();
68        alaReuna = Level.CreateBottomBorder();
69
70    }
71
72    void PelaajaLiike(Pelaaja pelaaja, Vector nopeus)
73    {
74        pelaaja.Push(nopeus);
75        pelaaja.suunta = nopeus;
76    }
77
78    void Ohjaimet()
79    {
80        Keyboard.Listen(Key.Up, ButtonState.Down, PelaajaLiike, null, pelaaja1, nopeusYlos);
81        Keyboard.Listen(Key.Down, ButtonState.Down, PelaajaLiike, null, pelaaja1, nopeusAlas);
82        Keyboard.Listen(Key.Right, ButtonState.Down, PelaajaLiike, null, pelaaja1, nopeusOikea);
83        Keyboard.Listen(Key.Left, ButtonState.Down, PelaajaLiike, null, pelaaja1, nopeusVasen);
84
85        Keyboard.Listen(Key.W, ButtonState.Down, PelaajaLiike, null, pelaaja2, nopeusYlos);
86        Keyboard.Listen(Key.S, ButtonState.Down, PelaajaLiike, null, pelaaja2, nopeusAlas);
87        Keyboard.Listen(Key.D, ButtonState.Down, PelaajaLiike, null, pelaaja2, nopeusOikea);
88        Keyboard.Listen(Key.A, ButtonState.Down, PelaajaLiike, null, pelaaja2, nopeusVasen);
89
90        Keyboard.Listen(Key.Period, ButtonState.Pressed, Lyönti, null, pelaaja1);
91        Keyboard.Listen(Key.T, ButtonState.Pressed, Lyönti, null, pelaaja2);
92
93
94
95    }
96
97    void Lyönti(Pelaaja pelaaja)
98    {
99        PhysicsObject keihäs = new PhysicsObject(50, 10);
100        keihäs.Image = LoadImage("keppi");
101        keihäs.Position = pelaaja.Position + pelaaja.suunta.Normalize() * 50;
102        keihäs.CanRotate = false;
103        keihäs.LifetimeLeft = TimeSpan.FromSeconds(0.5);
104
105        Add(keihäs);
106
107        Timer ajastin = new Timer();
108        ajastin.Interval = 0.05;
109        ajastin.Timeout += delegate { keihäs.Position = pelaaja.Position + pelaaja.suunta.Normalize() * 50;};
110        ajastin.Start();
111
112    }
113}
114
Note: See TracBrowser for help on using the repository browser.