source: 2017/27/OskariL/testiasdf/testiasdf/testiasdf/testiasdf.cs @ 8844

Revision 8844, 5.3 KB checked in by npo17_41, 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 testiasdf : PhysicsGame
10{
11    const double nopeus = 200;
12    const int RUUDUN_KOKO = 40;
13    bool laskuriPaalla = false;
14
15    Timer aikaLaskuri;
16    Timer liikutusajastin;
17
18    PlatformCharacter pelaaja1;
19
20    PhysicsObject taso;
21    PhysicsObject ammus;
22    PhysicsObject maali;
23
24    Image pelaajanKuva = LoadImage("norsu");
25    Image tahtiKuva = LoadImage("tahti");
26
27    SoundEffect maaliAani = LoadSoundEffect("maali");
28    public override void Begin()
29    {
30        LuoKentta();
31        LisaaNappaimet();       
32        Camera.Follow(pelaaja1);
33        Camera.ZoomFactor = 1.2;
34        Camera.StayInLevel = true;
35        Gravity = new Vector(0, -240);
36    }
37    void SiirraPelaajaaOikeammalle(PhysicsObject pelaaja1)
38    {
39        pelaaja1.Push(new Vector(0, 0));
40        return;
41    }
42    void LuoKentta()
43    {
44        TileMap kentta = TileMap.FromLevelAsset("kentta1");
45        kentta.SetTileMethod('#', LisaaTaso);
46        kentta.SetTileMethod('*', LisaaTahti);
47        kentta.SetTileMethod('N', LisaaPelaaja);
48        kentta.SetTileMethod('O', LisaaMaali);
49        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
50        Level.CreateBottomBorder(1, false);
51        Level.CreateTopBorder(1, false);
52        Level.CreateHorizontalBorders(1,false, Color.Azure);
53        Level.Background.CreateStars(1000);
54       
55
56        liikutusajastin = new Timer();
57        liikutusajastin.Interval = 0.01;
58        liikutusajastin.Timeout += delegate
59        {
60            SiirraPelaajaaOikeammalle(pelaaja1);
61        };
62        liikutusajastin.Start();
63
64    }
65
66    void LisaaTaso(Vector paikka, double leveys, double korkeus)
67    {
68        taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
69        taso.Position = paikka;
70        taso.Color = Color.Azure;
71        taso.Tag = "taso";
72        taso.Oscillate(new Vector(leveys, korkeus), 40, 0.4, 0, 0);
73        //taso.Oscillate(new Vector(RandomGen.NextInt(250), RandomGen.NextInt(250)),40,0.5,0,0);
74        Add(taso);
75    }
76    void LisaaMaali(Vector paikka, double leveys, double korkeus)
77    {
78        maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
79        maali.Position = paikka;
80        maali.Color = new Color(255, 255, 0);
81        AddCollisionHandler(pelaaja1, "pelaaja", TormaaMaaliin(pelaaja1, maali));
82
83    }
84    void TormaaMaaliin(PhysicsObject pelaaja1, PhysicsObject maali)
85    {
86        ConfirmExit();
87    }
88    void LisaaTahti(Vector paikka, double leveys, double korkeus)
89    {
90        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
91        tahti.Position = paikka;
92        tahti.Color = Color.BloodRed;
93        tahti.Tag = "tahti";
94        Add(tahti);
95    }
96    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
97    {
98        pelaaja1 = new PlatformCharacter(leveys, korkeus);
99        pelaaja1.Position = paikka;
100        pelaaja1.Mass = 3.0;
101        pelaaja1.MaintainMomentum = true;
102        pelaaja1.Color = new Color(Color.ForestGreen, 1);
103        pelaaja1.Tag = "pelaaja";
104        Add(pelaaja1);
105    }
106    void LisaaNappaimet()
107    {
108        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
109        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
110
111        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, nopeus);
112        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaX, "Liikkuu vasemmalle", pelaaja1, -nopeus);
113        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaX, "Liikkuu vasemmalle", pelaaja1, nopeus);
114        Keyboard.Listen(Key.Z, ButtonState.Pressed, Ammu, "Pelaaja ampuu", pelaaja1);
115
116    }
117    void Ammu(PlatformCharacter hahmo)
118    {
119        LuoAikaLaskuri(ammus, taso);
120        if (laskuriPaalla == false)
121        {
122
123            ammus = new PhysicsObject(15, 15, Shape.Circle);
124            ammus.X = pelaaja1.X + 50;
125            ammus.Y = pelaaja1.Y;
126            ammus.Color = Color.Azure;
127           
128            Add(ammus);
129            //AddCollisionHandler(ammus, "taso", LuoAikaLaskuri);
130
131            Vector vauhti = new Vector(1000, -500);
132            ammus.Hit(vauhti);
133            LuoAikaLaskuri(ammus, taso);
134            hahmo.Walk(-nopeus);
135            hahmo.Walk(-nopeus);
136            laskuriPaalla = true;
137
138            aikaLaskuri.Start();
139
140        }
141    }
142    void LuoAikaLaskuri(PhysicsObject ammus, PhysicsObject taso)
143    {
144
145        aikaLaskuri = new Timer();
146        aikaLaskuri.Interval = 1.5;
147        aikaLaskuri.Timeout += LaskeAlaspain;
148        laskuriPaalla = new bool();
149        laskuriPaalla = false;
150
151    }
152    void LaskeAlaspain()
153    {
154
155        AmmusRajahtaa(ammus, taso);
156        aikaLaskuri.Stop();
157        laskuriPaalla = false;
158    }
159    void AmmusRajahtaa(PhysicsObject ammus, PhysicsObject taso)
160    {
161
162        Explosion rajahdys = new Explosion(100);
163        rajahdys.Position = ammus.Position;
164        Add(rajahdys);
165        ammus.Destroy();
166
167    }
168    void LiikutaX(PlatformCharacter hahmo, double nopeus)
169    {
170        hahmo.Walk(nopeus);
171    }
172    void Hyppaa(PlatformCharacter hahmo, double nopeus)
173    {
174        hahmo.Jump(nopeus*3);
175    }
176
177}
Note: See TracBrowser for help on using the repository browser.