source: 2014/24/IlariR/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1.cs @ 4958

Revision 4958, 4.6 KB checked in by ilkarist, 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 FysiikkaPeli1 : PhysicsGame
10{
11    Image olionKuva = LoadImage("akukuva");
12    PhysicsObject hirviniemi;
13    AssaultRifle hirviniemiase;
14    Image munamieskuva = LoadImage("munamieskuva");
15    Image gigakuva= LoadImage("gigapudding");
16    Image ammuksenkuva = LoadImage("nakki");
17    Image tahtaimenkuva = LoadImage("tahtain");
18    public override void Begin()
19    {
20        MediaPlayer.Play("taustamusiikki");
21        SmoothTextures = false;
22        Image taustaKuva = LoadImage("planeettataustakuva");
23        Level.Background.Image = taustaKuva;
24        Camera.ZoomToLevel();
25        LuoKentta();
26        Level.Background.Color = Color.Black;
27        Mouse.IsCursorVisible = true;
28        Camera.Follow(hirviniemi);
29        Camera.Zoom(2.9);
30        GameObject tahtain = new GameObject(20, 20);
31        tahtain.Image = tahtaimenkuva;
32        Add(tahtain);
33
34        Timer tahtaimenLiikutus = new Timer();
35        tahtaimenLiikutus.Interval = 0.01;
36        tahtaimenLiikutus.Timeout += delegate { tahtain.Position = Mouse.PositionOnWorld; };
37        tahtaimenLiikutus.Start();
38
39        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
40        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, null, hirviniemi, new Vector(-500, 0));
41        Keyboard.Listen(Key.D, ButtonState.Down, AsetaNopeus, null, hirviniemi, new Vector(500, 0));
42        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, null, hirviniemi, new Vector(0, 500));
43        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, null, hirviniemi, new Vector(0, -500));
44        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
45        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu", hirviniemi);
46        Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella");
47    }
48
49    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
50{
51    ammus.Destroy();
52}
53    void Tahtaa(AnalogState hiirenLiike)
54    {
55        Vector suunta = (Mouse.PositionOnWorld - hirviniemiase.AbsolutePosition).Normalize();
56        hirviniemiase.Angle = suunta.Angle;
57    }
58
59    void AmmuAseella(PhysicsObject hirviniemi)
60    {
61       PhysicsObject ammus = hirviniemiase.Shoot();
62       if (ammus != null) 
63       ammus.Image = ammuksenkuva;
64    }
65
66    void AsetaNopeus(PhysicsObject hirviniemi, Vector nopeus)
67    {
68        hirviniemi.Velocity = nopeus;
69    }
70
71    void LiikutaPelaajaa(PhysicsObject hirviniemi, Vector vektori)
72    {
73        hirviniemi.Push(vektori);
74    }
75
76    void LuoKentta()
77    {
78        //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä.
79
80        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta");
81
82        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa.
83        ruudut.SetTileMethod(Color.FromHexCode("00FF80"), LuoPelaaja);
84        ruudut.SetTileMethod(Color.Black, LuoTaso);
85        //ruudut.SetTileMethod(Color.Yellow, LuoTahti);
86
87        //3. Execute luo kentän
88        //   Parametreina leveys ja korkeus
89        ruudut.Execute(20, 20);
90        LuoVihollinen(); LuoVihollinen(); LuoVihollinen(); LuoVihollinen(); LuoVihollinen(); LuoVihollinen();
91    }
92
93    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
94    {
95        hirviniemi = new PhysicsObject(30, 30);
96        hirviniemi.Position = paikka;
97        hirviniemi.CanRotate = false;
98        //AddCollisionHandler(hirviniemi, "tahti", TormaaTahteen);
99
100        hirviniemi.Image = olionKuva;
101        hirviniemi.LinearDamping = 0.90;
102        hirviniemiase = new AssaultRifle(30, 10);
103        hirviniemiase.Ammo.Value = 1000;
104        //hirviniemiase.ProjectileCollision = AmmusOsui;
105        hirviniemiase.IsVisible = false;
106        hirviniemiase.ProjectileCollision = AmmusOsui;
107        hirviniemi.Add(hirviniemiase);
108        Add(hirviniemi);
109    }
110
111    void LuoTaso(Vector paikka, double leveys, double korkeus)
112    {
113        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
114        taso.Position = paikka;
115        //taso.Image = groundImage;
116        taso.CollisionIgnoreGroup = 1;
117        taso.Color = Color.Transparent;
118        Add(taso);
119    }
120    void LuoVihollinen()
121    {
122        PhysicsObject vihollinen = new PhysicsObject(30, 30);
123        vihollinen.Position = new Vector( RandomGen.NextDouble(Level.Left, Level.Right), RandomGen.NextDouble(Level.Bottom, Level.Top));
124        Add(vihollinen);
125
126    }
127
128
129}
Note: See TracBrowser for help on using the repository browser.