source: 2015/26/KonstaH/Tower Defense/Tower Defense/Tower Defense/Tower_Defense.cs @ 6261

Revision 6261, 3.4 KB checked in by komihovi, 4 years ago (diff)

Tower Defense edistyy mainiosti! :3

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Tower_Defense : PhysicsGame
10{
11    Image tykkikuva = LoadImage("Tykki");
12    const double tykinLeveys = 80;
13    const double tykinKorkeus = 40;
14    Image Ammus = LoadImage("Ammus");
15    Image Paivitetyntykinkuva = LoadImage("Parempitykki");
16   
17     
18
19   
20    enum TykinTyyppi
21    {
22        EiTykki,
23        Perustykki,
24        PaivitettyTykki,
25        ViritettyTykki
26    }
27
28    TykinTyyppi valittuTykki = TykinTyyppi.EiTykki;
29
30    IntMeter rahaa = new IntMeter(200, 0, 999);
31
32
33    public override void Begin()
34    {
35        SetWindowSize(800, 600);
36
37        Level.Width = 800;
38        Level.Height = 600;
39        LuoKassakone();
40        Camera.ZoomToLevel();
41
42        PhysicsObject tykki = LisaaTykki(new Vector(Level.Right - tykinLeveys, Level.Top - tykinKorkeus*4),tykkikuva, false );
43        Mouse.ListenOn(tykki, MouseButton.Left, ButtonState.Pressed, OtaTykki, "Laita tykki paikoilleen.", TykinTyyppi.Perustykki);
44
45        PhysicsObject Paivitettytykki = LisaaTykki(new Vector(Level.Right - tykinLeveys, Level.Top - tykinKorkeus * 6), Paivitetyntykinkuva, false);
46        Mouse.ListenOn(Paivitettytykki, MouseButton.Left, ButtonState.Pressed, OtaTykki, "Laita tykki paikoilleen.", TykinTyyppi.PaivitettyTykki);
47       
48        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, LisaaOstettuTykki, "Lisää tykin.");
49        IsMouseVisible = true;
50        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
51    }
52    void OtaTykki(TykinTyyppi Tyyppi)
53    {
54        valittuTykki = Tyyppi;
55
56    }
57    void LuoKassakone()
58    {
59        Label pisteNaytto = new Label();
60        pisteNaytto.X = Screen.Right - 80;
61        pisteNaytto.Y = Screen.Top - 100;
62        pisteNaytto.TextColor = Color.Gold;
63        pisteNaytto.Color = Color.Transparent;
64        pisteNaytto.BindTo(rahaa);
65        pisteNaytto.Font = LoadFont("Rahafontti");
66        Add(pisteNaytto);
67    }
68
69    void LisaaOstettuTykki()
70    {
71        if (rahaa.Value >= 10 && valittuTykki == TykinTyyppi.Perustykki)
72        {
73            rahaa.Value -= 10;
74
75            LisaaTykki(Mouse.PositionOnWorld, tykkikuva, true);
76        }
77        else if(rahaa.Value >= 50 && valittuTykki == TykinTyyppi.PaivitettyTykki)
78        {
79            rahaa.Value -= 50;
80
81            LisaaTykki(Mouse.PositionOnWorld, Paivitetyntykinkuva, true );
82        }
83       
84
85    }
86
87    PhysicsObject LisaaTykki(Vector paikka, Image Tykinkuva, bool pystyykoAmpumaan)
88    {
89        PhysicsObject tykki = new PhysicsObject(tykinLeveys, tykinKorkeus);
90        Add(tykki);
91        tykki.Image = Tykinkuva;
92        tykki.Tag = "Tykki";
93        tykki.Position = paikka;
94
95       
96
97        if (pystyykoAmpumaan)
98        {
99            Timer AmpumisAjastin = new Timer(); AmpumisAjastin.Interval = 0.5;
100            AmpumisAjastin.Timeout += delegate { Tykkiampuu(tykki); };
101            AmpumisAjastin.Start();
102        }
103
104        return tykki;
105    }
106    void Tykkiampuu(PhysicsObject tykki)
107    {
108        PhysicsObject panos = new PhysicsObject(Ammus.Width, Ammus.Height);
109        panos.Image = Ammus;
110        Add(panos);
111        panos.Position = tykki.Position;
112        panos.Hit(new Vector(200, 0));
113    }
114
115}
116
Note: See TracBrowser for help on using the repository browser.