source: 2016/24/PanuK/Trump attack/Trump attack/Trump_attack/Trump_attack.cs @ 7344

Revision 7344, 5.3 KB checked in by paerjuko, 6 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 Trump_attack : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("");
18    Image tahtiKuva = LoadImage("");
19
20    SoundEffect maaliAani = LoadSoundEffect("maali");
21    private AssaultRifle pelaajan1Ase;
22   
23
24    public override void Begin()
25    {
26        Gravity = new Vector(0, -1000);
27
28        LuoKentta();
29        LisaaNappaimet();
30
31        Camera.Follow(pelaaja1);
32        Camera.ZoomFactor = 1.2;
33        Camera.StayInLevel = true;
34
35        MediaPlayer.PlayFromURL("https://www.youtube.com/watch?v=PJLSzsEjpWM");
36        MediaPlayer.IsRepeating = true;
37    }
38
39
40    void LuoKentta()
41    {
42        TileMap kentta = TileMap.FromLevelAsset("kentta1");
43        kentta.SetTileMethod('#', LisaaTaso);
44        kentta.SetTileMethod('*', LisaaTahti);
45        kentta.SetTileMethod('N', LisaaPelaaja);
46        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
47        Level.CreateBorders();
48        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
49
50        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
51"Aloita peli", "Parhaat pisteet", "Lopeta");
52
53        Add(alkuValikko);
54    }
55
56    void LisaaTaso(Vector paikka, double leveys, double korkeus)
57    {
58        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
59        taso.Position = paikka;
60        taso.Color = Color.Beige;
61        Add(taso);
62    }
63
64    void LisaaTahti(Vector paikka, double leveys, double korkeus)
65    {
66        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
67        tahti.IgnoresCollisionResponse = true;
68        tahti.Position = paikka;
69        tahti.Image = tahtiKuva;
70        tahti.Tag = "tahti";
71        Add(tahti);
72    }
73
74    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
75    {
76        pelaaja1 = new PlatformCharacter(leveys, korkeus);
77        pelaaja1.Position = paikka;
78        pelaaja1.Mass = 4.0;
79        pelaaja1.Image = pelaajanKuva;
80        AddCollisionHandler(pelaaja1, "tahti", ammuhanet);
81        Add(pelaaja1);
82
83        pelaajan1Ase = new AssaultRifle(30, 10);
84
85        //Ammusten määrä aluksi:
86        pelaajan1Ase.Ammo.Value = 1000;
87
88        //Mitä tapahtuu kun ammus osuu johonkin?
89        pelaajan1Ase.ProjectileCollision = AmmusOsui;
90
91        pelaaja1.Add(pelaajan1Ase);
92    }
93
94
95    private void AmmusOsui(PhysicsObject collidingObject, PhysicsObject otherObject)
96    {
97        throw new NotImplementedException();
98    }
99
100    void LisaaNappaimet()
101    {
102        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
103        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
104
105        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
106        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
107        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
108
109        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
110
111        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
112        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
113        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
114
115        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
116
117        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
118    }
119    void AmmuAseella(AssaultRifle ase)
120    {
121        PhysicsObject ammus = ase.Shoot();
122
123        if (ammus != null)
124        {
125            //ammus.Size *= 3;
126            //ammus.Image = ...
127            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
128        }
129    }
130    void Liikuta(PlatformCharacter hahmo, double nopeus)
131    {
132        hahmo.Walk(nopeus);
133    }
134
135    void Hyppaa(PlatformCharacter hahmo, double nopeus)
136    {
137        hahmo.Jump(nopeus);
138    }
139
140    void ammuhanet(PhysicsObject hahmo, PhysicsObject tahti)
141    {
142        maaliAani.Play();
143        MessageDisplay.Add("tapoit hänet!");
144        tahti.Destroy();
145    }
146
147   
148
149        class Vihu : PhysicsObject
150        {
151            private IntMeter elamaLaskuri = new IntMeter(3, 0, 3);
152            public IntMeter ElamaLaskuri
153            {
154                get
155                {
156                    return elamaLaskuri;
157                }
158            }
159
160            public Vihu(double leveys, double korkeus)
161                : base(leveys, korkeus)
162            {
163                elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
164
165                Vihu hemmo = new Vihu(20, 20);
166                hemmo.X = -100;
167                hemmo.Y = -100;
168                // ...
169                hemmo.ElamaLaskuri.Value--;  // häviää automaattsiesti jos elämät menee 0:ksi.
170            }         
171                    }
172               }
173           
174       
175   
Note: See TracBrowser for help on using the repository browser.