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

Revision 8669, 6.0 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<Viho> vihut = new List<Viho>();
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       
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
105       
106
107
108        panos.Tag = "luoti";
109
110    }
111    void Mappi()
112    {
113        Level.Background.Image = LoadImage("mappi");
114        TileMap ruudut = TileMap.FromLevelAsset("mappi1");
115        ruudut.SetTileMethod('z', YksVihu);
116       //ruudut.SetTileMethod('#', LuoPalikka);
117        //ruudut.SetTileMethod('*', LuoTahti);
118        ruudut.Execute(100, 100);
119
120
121
122    }
123    void LiikuEteen()
124    {
125        matti.Move(((Mouse.PositionOnWorld - matti.AbsolutePosition).Normalize()) * 220);
126    }
127    void YksVihu(Vector paikka, double leveys, double korkeus)
128    {
129        Viho vihu = new Viho(100.0, 100.0);
130        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(300);
131        satunnaisAivot.ChangeMovementSeconds = 3;
132        vihu.Brain = satunnaisAivot;
133        satunnaisAivot.TurnWhileMoving = true;
134        vihu.Position = paikka;
135
136        vihut.Add(vihu);
137        vihu.Tag = "tsompi";
138
139        double nakokentanpituus = 1000;
140        PhysicsObject nakokentta = new PhysicsObject(1000, nakokentanpituus);
141        nakokentta.Tag = "nakoalue";
142        //nakokentta.Y = vihu.Y + nakokentanpituus / 2 + 16;
143        nakokentta.Y = vihu.Y;
144        nakokentta.X = vihu.X;
145        nakokentta.Angle = Angle.StraightAngle;
146        nakokentta.Shape = Shape.Circle;
147        nakokentta.Color = new Color(Color.White, 50);
148        vihu.CanRotate = false;
149        nakokentta.CanRotate = true;
150        nakokentat.Add(nakokentta);
151
152
153
154        Add(vihu);
155        Add(nakokentta);
156
157        PhysicsStructure kokoVihu = new PhysicsStructure(vihu, nakokentta);
158
159        vihu.Nakokentta = nakokentta;
160
161        AddCollisionHandler(vihu, "luoti", LuotiOsuu);
162        nakokentta.IgnoresCollisionResponse = true;
163    }
164    void VihuNakeeMatin(PhysicsObject matti, PhysicsObject nakokentta)
165
166    {
167        MessageDisplay.Add("vihunakeepelaajan");
168        int indexi = nakokentat.IndexOf(nakokentta);
169        Viho vihu = vihut[indexi];
170        FollowerBrain suraajanAivot = new FollowerBrain(matti);
171        vihu.Brain = suraajanAivot;
172        suraajanAivot.TurnWhileMoving = true;
173       
174    }
175    void LuotiOsuu(PhysicsObject vihu, PhysicsObject luoti)
176    {
177        Viho v = (Viho)vihu;
178        v.ElmaLaskuri.Value--;
179        luoti.Destroy();
180
181    }
182   
183}
184class Viho : PhysicsObject
185{
186    private IntMeter elamaLaskuri = new IntMeter(5, 0, 5);
187    public IntMeter ElmaLaskuri { get { return elamaLaskuri; } }
188
189    public PhysicsObject Nakokentta { get; set; }
190
191    public Viho(double leveys, double korkeus)
192        : base(leveys, korkeus)
193    {
194        elamaLaskuri.LowerLimit += delegate { this.Destroy(); this.Nakokentta.Destroy(); };
195
196    }
197
198}
Note: See TracBrowser for help on using the repository browser.