source: 2015/30/ValtteriT/Labyrintti/Labyrintti/Labyrintti/Labyrintti.cs @ 6993

Revision 6993, 5.1 KB checked in by mivasata, 4 years ago (diff)

Tankki ampuu.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Labyrintti : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 3000;
13    const int RUUDUN_KOKO = 40;
14
15    AssaultRifle pelaajan1Ase;
16
17    Image tankinKuva = LoadImage("Tankki");
18
19    PhysicsObject pelaaja1;
20   
21    SoundEffect RajahdysAani = LoadSoundEffect("RajahdysAani");
22
23    public override void Begin()
24    {
25        Gravity = new Vector(0, 0);
26
27        LuoKentta();
28        LisaaNappaimet();
29
30        Camera.Follow(pelaaja1);
31        Camera.ZoomFactor = 1.2;
32        Camera.StayInLevel = true;
33    }
34
35    void LuoKentta()
36    {
37        TileMap kentta = TileMap.FromLevelAsset("kentta1");
38        kentta.SetTileMethod('#', LisaaTaso);
39        kentta.SetTileMethod('3', LisaaTaso2);
40        kentta.SetTileMethod('N', LisaaPelaaja);
41        kentta.SetTileMethod('4', LisaaMiina);
42        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
43        Level.CreateBorders();
44        Level.Background.Color = Color.White;
45    }
46
47    void LisaaTaso(Vector paikka, double leveys, double korkeus)
48    {
49        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
50        taso.Position = paikka;
51        taso.Color = Color.Green;
52        Add(taso);
53    }
54
55    void LisaaTaso2(Vector paikka, double leveys, double korkeus)
56    {
57        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
58        taso.Position = paikka;
59        taso.Color = Color.Gray;
60        Add(taso);
61    }
62
63    void LisaaMiina(Vector paikka, double leveys, double korkeus)
64    {
65        PhysicsObject Miina = PhysicsObject.CreateStaticObject(30, 30);
66        Miina.Size = new Vector(30, 30);
67        Miina.Position = paikka;
68        Miina.Color = Color.LightGray;
69        Miina.Tag = "Miina";
70        Add (Miina);
71    }
72
73    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
74    {
75        pelaaja1 = new PhysicsObject(20, 20);
76        pelaaja1.Position = paikka;
77        pelaaja1.Restitution = 0.5;
78        pelaaja1.Mass = 0.5;
79        pelaaja1.Image = tankinKuva;
80        pelaaja1.Tag = "tankki";
81        AddCollisionHandler(pelaaja1, "Miina", TormaaMiinaan);
82        Add(pelaaja1);
83
84        pelaajan1Ase = new AssaultRifle(30, 10);
85        pelaajan1Ase.ProjectileCollision = AmmusOsui;
86        pelaaja1.Add(pelaajan1Ase);
87    }
88    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
89    {
90        ammus.Destroy();
91    }
92
93    void LisaaNappaimet()
94    {
95        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
96        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
97
98        Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella");
99        IsMouseVisible = true;
100        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
101
102        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, new Vector (-nopeus, 0));
103        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, new Vector(nopeus, 0));
104        Keyboard.Listen(Key.Up, ButtonState.Down, Liikuta, "Liikkuu eteenpäin", pelaaja1, new Vector(0, nopeus));
105        Keyboard.Listen(Key.Down, ButtonState.Down, Liikuta, "Liikkuu taaksepäin", pelaaja1, new Vector(0, -nopeus));
106
107        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
108
109        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, new Vector (-nopeus, 0));
110        ControllerOne.Listen(Button.X, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, new Vector (nopeus, 0));
111        ControllerOne.Listen(Button.Y, ButtonState.Down, Liikuta, "Pelaaja liikkuu eteenpäin", pelaaja1, new Vector (0, nopeus));
112        ControllerOne.Listen(Button.A, ButtonState.Down, Liikuta, "Pelaaja liikkuu taaksepäin", pelaaja1, new Vector (0, -nopeus));
113
114        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
115    }
116
117    void Liikuta(PhysicsObject hahmo, Vector nopeus)
118    {
119        hahmo.Push(nopeus);
120    }
121
122    void EteenJaTaaksePain(PhysicsObject hahmo, double nopeus)
123    {
124        //hahmo.(nopeus);
125    }
126
127    void TormaaMiinaan(PhysicsObject hahmo, PhysicsObject Miina)
128    {
129        MessageDisplay.Add("Osuit miinaan!");
130        Miina.Destroy();
131        Explosion rajahdys = new Explosion(50);
132        rajahdys.Position = Miina.Position;
133        rajahdys.Speed = 250.0;
134        rajahdys.Force = 65;
135        Add(rajahdys);
136    }
137
138    void Tahtaa(AnalogState hiirenLiike)
139    {
140        Vector suunta = (Mouse.PositionOnWorld - pelaaja1.AbsolutePosition).Normalize();
141        pelaaja1.Angle = suunta.Angle;
142    }
143
144    void AmmuAseella(AssaultRifle ase)
145    {
146    PhysicsObject ammus = ase.Shoot();
147
148        if(ammus != null)
149        {
150        ammus.Size *= 2;
151            //ammus.Image = ?
152            ammus.MaximumLifetime = TimeSpan.FromSeconds(5.0);
153            ammus.Restitution = 1.0;
154        }
155    }
156}
Note: See TracBrowser for help on using the repository browser.