source: 2015/27/EemilI/infected - Copy/infected/infected/infected.cs @ 6686

Revision 6686, 4.6 KB checked in by eemikone, 4 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 infected : PhysicsGame
10{
11    PhysicsObject mies;
12    Image mieskuva = LoadImage("mieskuva");
13    Image seinakuva = LoadImage("seina");
14    Image zombikuva = LoadImage("zombi");
15
16    List<Vector> spawnipaikat = new List<Vector>();
17
18    public override void Begin()
19    {
20        LuoKentta();
21        kontrollit();
22        LuoAikaLaskuri();
23        //LuoZombi();
24        MessageDisplay.Add("SELVIÄ MAHDOLLISIMMAN PITKÄÄN");
25        MessageDisplay.MessageTime = new TimeSpan(0, 0, 10);
26        MessageDisplay.TextColor = Color.White;
27        IsFullScreen = true;
28    }
29    void LuoHahmo(Vector paikka, double leveys, double korkeus)
30    {
31        mies = new PhysicsObject(mieskuva);
32        mies.Size = new Vector(50, 50);
33        mies.Position = paikka;
34        mies.LinearDamping = 0.1;
35        Add(mies);
36
37    }
38    void LuoKentta()
39    {
40        ColorTileMap mappi = ColorTileMap.FromLevelAsset("mappi");
41        mappi.SetTileMethod(Color.FromHexCode("4CFF00"), LuoSpawn);
42        mappi.SetTileMethod(Color.Black, LuoTaso);
43        mappi.SetTileMethod(Color.Red, LuoHahmo);
44        mappi.Execute(40, 40);
45
46        for (int i = 0; i < 6; i++)
47        {
48            LuoUusiZombi();
49
50        }
51
52
53        Level.CreateBorders();
54        Camera.Follow(mies);
55        Camera.StayInLevel = true;
56        Camera.Zoom(1.0);
57    }
58
59    void LuoTaso(Vector paikka, double leveys, double korkeus)
60    {
61        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
62        taso.Position = paikka;
63        taso.Color = Color.Black;
64        taso.Image = seinakuva;
65        taso.CollisionIgnoreGroup = 1;
66        Level.Background.Color = Color.Black;
67        Add(taso);
68    }
69    void kontrollit()
70    {
71        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, 3000.0, 1);
72        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, 3000.0, 2);
73        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, null, 3000.0, 3);
74        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, 3000.0, 4);
75        Mouse.ListenMovement(0.0, Tahtays, null);
76        Mouse.IsCursorVisible = true;
77        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "InfoIkkuna");
78        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
79    }
80    void LiikutaPelaajaa(double nopeus, int liikkuminen)
81    {
82        switch (liikkuminen)
83        {
84            case 1:
85                mies.Move(Vector.FromLengthAndAngle(nopeus, mies.Angle));
86                break;
87            case 2:
88                mies.Move(-Vector.FromLengthAndAngle(nopeus, mies.Angle));
89                break;
90            case 3:
91                mies.Move(Vector.FromLengthAndAngle(nopeus, mies.Angle - Angle.FromDegrees(90)));
92                break;
93            case 4:
94                mies.Move(Vector.FromLengthAndAngle(nopeus, mies.Angle - Angle.FromDegrees(-90)));
95                break;
96            default:
97                break;
98        }
99    }
100    void Tahtays(AnalogState hiirenTila)
101    {
102        Vector suunta = Mouse.PositionOnWorld - mies.Position;
103        mies.Angle = suunta.Angle;
104    }
105    void LuoAikaLaskuri()
106    {
107        Timer aikaLaskuri = new Timer();
108       
109
110        aikaLaskuri.Interval = 4;
111        aikaLaskuri.Timeout += LuoUusiZombi;
112        aikaLaskuri.Start();
113
114        Label aikaNaytto = new Label();
115        aikaNaytto.X = Screen.Left + 100;
116        aikaNaytto.Y = Screen.Top - 100;
117        aikaNaytto.TextColor = Color.White;
118        aikaNaytto.DecimalPlaces = 1;
119        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
120        Add(aikaNaytto);
121    }
122    void LuoZombi(Vector paikka)
123    {
124        PhysicsObject zombi = new PhysicsObject(40, 40);
125        zombi.Position = paikka;
126        zombi.Image = zombikuva;
127
128        Add(zombi);
129
130    }
131    void LuoUusiZombi()
132    {
133        int indeksi = RandomGen.NextInt(0, spawnipaikat.Count - 1);
134        Vector paikka = spawnipaikat[indeksi];
135        FollowerBrain seuraajanAivot = new FollowerBrain(mies);
136        seuraajanAivot.Speed = 1500;
137        seuraajanAivot.DistanceFar = 500;
138        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella;
139        LuoZombi(paikka);
140
141    }
142    void LuoSpawn(Vector paikka, double leveys, double korkeus)
143    {
144        spawnipaikat.Add(paikka);
145       
146    }
147    void mitaTapahtuuKunOllaanLahella()
148    {
149        mies.Destroy();
150    }
151}
Note: See TracBrowser for help on using the repository browser.