source: 2015/27/MiroS/Raiskintapeli/Raiskintapeli/Raiskintapeli/TankkiPeli.cs @ 6731

Revision 6731, 4.1 KB checked in by miausilj, 4 years ago (diff)

viholliset 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 TankkiPeli : PhysicsGame
10{
11    Image tankkikuva = LoadImage("Tankki");
12    Image Vihulainen = LoadImage("Vihulainen");
13    Image rajahdys = LoadImage("Rajahdys");
14    Image pommi1 = LoadImage("Pommi");
15
16    PhysicsObject tankki;
17
18    public override void Begin()
19    {
20   
21        //IsFullScreen = true;
22
23        Level.Background.Color = Color.Black;
24       
25        Level.Width = Screen.Width;
26        Level.Height = Screen.Height;
27        Camera.ZoomToLevel();
28
29        Level.CreateBorders();
30        LisaaPelaaja();
31        LisaaOhjaimet();
32        LuoMappi(1);
33    }
34    void LisaaPelaaja()
35    {
36
37        tankki = new PhysicsObject(50.0, 50.0);
38        tankki.X = -1.0;
39        tankki.Y = -300.0;
40        tankki.Image = tankkikuva;
41        tankki.LinearDamping = 0.1;
42        tankki.AngularDamping = 0.1;
43        Add(tankki);
44
45    }
46     
47    void LuoVihulainen()
48    {
49        PhysicsObject vihu = new PhysicsObject(Vihulainen);
50        vihu.Size = vihu.Size * 0.1;
51        vihu.Position = new Vector(RandomGen.NextDouble(Level.Left, Level.Right), RandomGen.NextDouble(Level.Bottom, Level.Top));
52        vihu.CanRotate = false;
53        Add(vihu);
54
55        RandomMoverBrain aivot = new RandomMoverBrain();
56        aivot.WanderRadius = 200.0;
57        aivot.ChangeMovementSeconds = 2.0;
58        vihu.Brain = aivot;
59
60        AssaultRifle vihunAse = new AssaultRifle(20.0, 20.0);
61        vihunAse.ProjectileCollision = AmmusOsui;
62        vihunAse.IsVisible = false;
63        vihu.Add(vihunAse);
64
65        Timer vihunAjastin = new Timer();
66        vihunAjastin.Interval = 1.0;
67        vihunAjastin.Timeout += delegate { VihuAmpuu(vihunAse); };
68        vihunAjastin.Start();
69
70    }
71    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
72    {
73        ammus.Destroy();
74    }
75
76    void JättääPommin(PhysicsObject tankki)
77    {
78        PhysicsObject pommi = new PhysicsObject(30.0, 30.0);
79        pommi.Position = tankki.Position;
80        Add(pommi);
81        pommi.Color = Color.Blue;
82        pommi.CanRotate = false;
83        pommi.Image = pommi1;
84        Timer.SingleShot(2.0, delegate
85        {
86            pommi.Destroy();
87            Explosion raj = new Explosion(300.0);
88            raj.Speed = 900.0;
89            raj.Position = pommi.Position;
90            raj.Image = rajahdys;
91            Add(raj);
92        });
93
94    }
95    void Ampuu(PhysicsObject tankki)
96    {
97        PhysicsObject ammus = new PhysicsObject(5.0, 5.0);
98        ammus.Position = tankki.Position;
99            Add(ammus);
100            ammus.Color = Color.Red;
101            ammus.Hit(tankki.Angle.GetVector()*3000);
102            Timer.SingleShot(0.70, delegate
103            {
104                ammus.Destroy();
105            });
106           
107
108    }
109    void LuoMappi(int vaikeusaste)
110    {
111        for (int i = 0; i < 3*vaikeusaste; i++)
112        {
113            LuoVihulainen();
114        }
115    }
116    void LisaaOhjaimet()
117    {
118       
119        Mouse.Listen(MouseButton.Right, ButtonState.Pressed, JättääPommin, "Jättää pommin", tankki);
120        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, Ampuu, "Ampuu tykillä", tankki);
121        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
122
123        Mouse.ListenMovement(0.0, Tahtaa, "");
124        Mouse.IsCursorVisible = true;
125        Keyboard.Listen(Key.W, ButtonState.Down, LiikuWASD, "LiikutaYlos");
126    }
127    void Tahtaa(AnalogState hiirenTila)
128    {
129        tankki.Angle = (Mouse.PositionOnWorld - tankki.Position).Angle;
130
131
132    }
133    void LiikuWASD()
134    {
135        tankki.Push(Vector.FromLengthAndAngle(9000, tankki.Angle));
136    }
137    void VihuAmpuu(AssaultRifle ase)
138    {
139        ase.AbsoluteAngle = (tankki.Position - ase.Parent.Position).Angle;
140        PhysicsObject panos=ase.Shoot();
141
142        if(panos !=null)
143        {
144            panos.MaximumLifetime = TimeSpan.FromSeconds(1.0);
145
146        }
147
148    }
149}
Note: See TracBrowser for help on using the repository browser.