source: 2012/kerho/LeoL/JHaapaduuuuuuuuuuuu!!!!!!!!!!!!!!!!!!/JHaapaduuuuuuuuuuuu!!!!!!!!!!!!!!!!!!/JHaapaduuuuuuuuuuuu__________________.cs @ 3939

Revision 3939, 5.3 KB checked in by jotapoti, 7 years ago (diff)

Pelikerhossa 23.2.2013 tehty kirves ja joulupukki -peli.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class JHaapaduuuuuuuuuuuu__________________ : PhysicsGame
10{
11    AssaultRifle vihunAse;
12    EasyHighScore topLista = new EasyHighScore();
13    PhysicsObject olio;
14    Image olionKuva = LoadImage("BatleAxe");
15    Image lattiankuva = LoadImage("Floor");
16    Image seinankuva = LoadImage("Wall");
17    Image vihukuva = LoadImage("Pahis");
18    double nopeus = 500.0;
19    int VIHUNALOITUSENERGIA = 10000;
20
21    IntMeter laskuri = new IntMeter(0);
22
23
24    public override void Begin()
25    {
26        Valikko(null);
27    }
28
29    private void AloitaPeli()
30    {
31        Level.Width = Screen.Width;
32        Surfaces reunat = Level.CreateBorders(0, true, Color.Gray);
33        reunat.Top.Image = seinankuva;
34        reunat.Bottom.Image = seinankuva;
35
36        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
37        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
38        olio = new PhysicsObject(100, 100);
39        olio.MaxVelocity = 2000;
40        olio.CanRotate = false;
41        olio.Image = olionKuva;
42        Add(olio);
43        Vector impulssi = new Vector(500.0, 0.0);
44        olio.Hit(impulssi);
45        Level.BackgroundColor = Color.Black;
46        Level.Background.Image = lattiankuva;
47        Level.Background.ScaleToLevelByWidth();
48
49        Keyboard.Listen(Key.Left, ButtonState.Down,
50          LiikutaPelaajaa, null, new Vector(-nopeus, 0));
51        Keyboard.Listen(Key.Right, ButtonState.Down,
52          LiikutaPelaajaa, null, new Vector(nopeus, 0));
53        Keyboard.Listen(Key.Up, ButtonState.Down,
54          LiikutaPelaajaa, null, new Vector(0, nopeus));
55        Keyboard.Listen(Key.Down, ButtonState.Down,
56          LiikutaPelaajaa, null, new Vector(0, -nopeus));
57
58        LuoVihu(new Vector(-600, 85));
59    }
60
61    void Valikko(Window ikkuna)
62    {
63        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Parhaat pisteet","Lopeta", "Testi");
64        Add(alkuValikko);
65        alkuValikko.AddItemHandler(0, AloitaPeli);
66        alkuValikko.AddItemHandler(1, ParhaatPisteet);
67        alkuValikko.AddItemHandler(2, Exit);
68        alkuValikko.AddItemHandler(3, TestiValikko);
69    }
70
71    void LiikutaPelaajaa(Vector vektori)
72    {
73        olio.Stop();
74        olio.Angle = vektori.Angle;
75        olio.Hit(vektori);
76    }
77
78    void LuoVihu(Vector vektori)
79    {
80
81        PhysicsObject vihollinen = new PhysicsObject(100.0, 100.0);
82        vihollinen.Position = vektori;
83        vihollinen.Restitution = 1.0;
84        vihollinen.Image = vihukuva;
85        Add(vihollinen);
86        IntMeter vihunElamaLaskuri = new IntMeter(VIHUNALOITUSENERGIA, 0, 10000);
87        vihunElamaLaskuri.LowerLimit += delegate() { VihollinenKuolee(vihollinen); };
88        Label l = new Label();
89        l.TextColor = Color.Black;
90        l.BindTo(vihunElamaLaskuri);
91        l.Color = Color.Red;
92        l.Position = new Vector(Screen.Right - 50, Screen.Top - 50);
93        Add(l);
94        vihollinen.CanRotate = false;
95        //Tehdään uudet satunnaisaivot, jotka liikkuvat nopeudella 200
96        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(200);
97        satunnaisAivot.ChangeMovementSeconds = 3;
98        vihollinen.Brain = satunnaisAivot;
99        AddCollisionHandler(olio, vihollinen, CollisionHandler.AddMeterValue(vihunElamaLaskuri, -1));
100
101        AddCollisionHandler(olio, vihollinen, CollisionHandler.AddMeterValue(laskuri, 1));
102        // tehdään vihulle ase:
103        vihunAse = new AssaultRifle(0, 0);
104        vihunAse.Ammo.Value = 100000;
105        // mitä tapahtuu, kun ammus osuu johonkin:
106        vihunAse.ProjectileCollision = AmmusOsui;
107        vihollinen.Add(vihunAse);
108        Timer ampumisAjastin = new Timer();
109        ampumisAjastin.Interval = 2.0;
110        ampumisAjastin.Timeout += VihuAmpuu;
111        ampumisAjastin.Start();
112    }
113
114    private void VihollinenKuolee(PhysicsObject vihollinen)
115    {
116        vihollinen.Destroy();
117        KysyParhaatPisteet();
118        vihunAse.Destroy();
119    }
120
121    void OlioTormasi(PhysicsObject tormaaja, PhysicsObject kohde)
122    {
123        kohde.Destroy();
124    }
125
126    void VihuAmpuu()
127    {
128        vihunAse.Angle = RandomGen.NextDirection().Angle;
129       
130        vihunAse.Shoot();
131    }
132
133    void AmmusOsui(PhysicsObject tormaaja, PhysicsObject kohde)
134    {
135        if (kohde == null) return;
136        if (kohde.Equals(olio)) // Jos ammuksen kohteena on pelaaja eli pelaaja kuolee ja hävisi pelin:
137        {
138            olio.Destroy(); // tapetaan pelaaja
139            KysyParhaatPisteet();
140           
141        }
142        tormaaja.Destroy(); // Hävitetään panos
143    }
144
145    private void KysyParhaatPisteet()
146    {
147        topLista.EnterAndShow(laskuri.Value);
148        topLista.HighScoreWindow.Closed += Valikko;
149    }
150
151    void TestiValikko()
152    {
153        MultiSelectWindow msw = new MultiSelectWindow("Haloo", "Eka", "Toka");
154        Add(msw);
155        msw.AddItemHandler(0, delegate { Valikko(null); });
156        msw.AddItemHandler(1, ParhaatPisteet);
157    }
158
159    void ParhaatPisteet()
160    {
161        topLista.Show();
162        topLista.HighScoreWindow.Closed += Valikko;
163    }
164
165    void luoLaskuri()
166    {
167   
168    }
169}
Note: See TracBrowser for help on using the repository browser.