source: 2017/24/ViljamiM/Zombodroid/Zombodroid/Zombodroid/Zombodroid.cs @ 8656

Revision 8656, 5.3 KB checked in by npo17_18, 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
9public class Zombodroid : PhysicsGame
10{
11    PhysicsObject matti;
12    SoundEffect Aani = LoadSoundEffect("pyssyaani");
13    bool vasenPyssy = true;
14    List<PhysicsObject> vihut = new List<PhysicsObject>();
15    List<PhysicsObject> nakokentat = new List<PhysicsObject>();
16    public override void Begin()
17    {
18        AsetaOhjaimet();
19        AsetaHenkilot();
20
21        Mappi();
22
23        Camera.Follow(matti);
24
25        Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella");
26
27        IsMouseVisible = true;
28
29        YksVihu();
30
31
32
33    }
34    void AsetaOhjaimet()
35    {
36        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
37
38        Keyboard.Listen(Key.A, ButtonState.Down,
39   LiikutaPelaajaa, null, new Vector(-220, 0));
40        Keyboard.Listen(Key.D, ButtonState.Down,
41          LiikutaPelaajaa, null, new Vector(220, 0));
42        Keyboard.Listen(Key.W, ButtonState.Down,
43          LiikuEteen, null);
44        Keyboard.Listen(Key.S, ButtonState.Down,
45          LiikutaPelaajaa, null, new Vector(0, -220));
46
47        Keyboard.Listen(Key.A, ButtonState.Released,
48   LiikutaPelaajaa, null, Vector.Zero);
49        Keyboard.Listen(Key.D, ButtonState.Released,
50         LiikutaPelaajaa, null, Vector.Zero);
51        Keyboard.Listen(Key.W, ButtonState.Released,
52          LiikutaPelaajaa, null, Vector.Zero);
53        Keyboard.Listen(Key.S, ButtonState.Released,
54          LiikutaPelaajaa, null, Vector.Zero);
55
56        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, Ammu, null);
57
58
59    }
60    void AsetaHenkilot()
61    {
62        matti = new PhysicsObject(75, 75);
63        matti.Image = LoadImage("oikeeukkeli");
64        matti.Tag = "pelaaja";
65        matti.X = 100;
66        Add(matti, 3);
67        matti.CanRotate = false;
68        double laserinpituus = 1000;
69        GameObject laser = new GameObject(2, laserinpituus);
70        laser.Y = matti.Y + laserinpituus / 2 + 16;
71        laser.Color = new Color(Color.Red, 30);
72        matti.Add(laser);
73        AddCollisionHandler(matti, "nakoalue", VihuNakeeMatin);
74
75    }
76
77    void LiikutaPelaajaa(Vector vektori)
78    {
79        matti.Move(vektori);
80    }
81    void Tahtaa(AnalogState hiirenLiike)
82    {
83        Vector suunta = (Mouse.PositionOnWorld - matti.AbsolutePosition).Normalize();
84        matti.Angle = suunta.Angle - Angle.RightAngle;
85    }
86    void Ammu()
87    {
88        Aani.Play();
89        PhysicsObject panos = new PhysicsObject(5.0, 5.0);
90        if (vasenPyssy)
91        {
92            panos.Position = matti.Position + ((Mouse.PositionOnWorld - matti.AbsolutePosition).Normalize()) * 32 + (((Mouse.PositionOnWorld - matti.AbsolutePosition).Normalize()) * 22).RightNormal;
93            vasenPyssy = false;
94        }
95        else
96        {
97            panos.Position = matti.Position + ((Mouse.PositionOnWorld - matti.AbsolutePosition).Normalize()) * 32 + (((Mouse.PositionOnWorld - matti.AbsolutePosition).Normalize()) * -22).RightNormal;
98            vasenPyssy = true;
99        }
100        panos.IgnoresCollisionWith(matti);
101        panos.MaximumLifetime = new TimeSpan(0, 0, 2);
102        Add(panos);
103        panos.Velocity = ((Mouse.PositionOnWorld - matti.AbsolutePosition).Normalize()) * 2000;
104        AddCollisionHandler(panos, "tsompi", LuotiOsuu);
105
106        panos.Tag = "luoti";
107
108    }
109    void Mappi()
110    {
111        Level.Background.Image = LoadImage("mappi");
112
113    }
114    void LiikuEteen()
115    {
116        matti.Move(((Mouse.PositionOnWorld - matti.AbsolutePosition).Normalize()) * 220);
117    }
118    void YksVihu()
119    {
120        PhysicsObject vihu = new PhysicsObject(100.0, 100.0);
121        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(50);
122        satunnaisAivot.ChangeMovementSeconds = 3;
123        vihu.Brain = satunnaisAivot;
124
125        vihut.Add(vihu);
126        vihu.Tag = "tsompi";
127
128        double nakokentanpituus = 300;
129        PhysicsObject nakokentta = new PhysicsObject(300, nakokentanpituus);
130        nakokentta.Tag = "nakoalue";
131        nakokentta.Y = vihu.Y + nakokentanpituus / 2 + 16;
132        nakokentta.Angle = Angle.StraightAngle;
133        nakokentta.Shape = Shape.Triangle;
134        vihu.CanRotate = false;
135        nakokentta.CanRotate = false;
136        nakokentat.Add(nakokentta);
137
138
139
140        Add(vihu);
141        Add(nakokentta);
142        PhysicsStructure kokoVihu = new PhysicsStructure(vihu, nakokentta);
143
144
145        nakokentta.IgnoresCollisionResponse = true;
146    }
147    void VihuNakeeMatin(PhysicsObject matti, PhysicsObject nakokentta)
148
149    {
150        MessageDisplay.Add("vihunakeepelaajan");
151        int indexi = nakokentat.IndexOf(nakokentta);
152        PhysicsObject vihu = vihut[indexi];
153        FollowerBrain suraajanAivot = new FollowerBrain(matti);
154        vihu.Brain = suraajanAivot;
155        suraajanAivot.TurnWhileMoving = true;
156    }
157    void LuotiOsuu(PhysicsObject luoti, PhysicsObject vihu)
158    {
159
160    }
161
162}
163class Viho : PhysicsObject
164{
165    private IntMeter elamaLaskuri = new IntMeter(3, 0, 3);
166    public IntMeter ElmaLaskuri { get { return elamaLaskuri; } }
167
168    public Viho(double leveys, double korkeus)
169        : base(leveys, korkeus)
170    {
171        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
172    }
173}
Note: See TracBrowser for help on using the repository browser.