Ignore:
Timestamp:
2015-06-26 12:15:48 (5 years ago)
Author:
vilmikvi
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2015/26/ViljamiV/UkemiPeli/UkemiPeli/UkemiPeli/UkemiPeli.cs

    r6141 r6466  
    99public class UkemiPeli : PhysicsGame 
    1010{ 
    11     const double nopeus = 200; 
    12     const double hyppyNopeus = 500; 
     11    const double nopeus = 300; 
     12    const double hyppyNopeus = 700; 
    1313    const int RUUDUN_KOKO = 40; 
    1414 
     15    Timer aikaLaskuri; 
     16 
     17    DoubleMeter Pistelaskuri = new DoubleMeter(0); 
     18 
    1519    PlatformCharacter pelaaja1; 
     20 
     21    DoubleMeter elamat; 
    1622 
    1723    PhysicsObject juttu; 
     
    2228    Image hyppykuva = LoadImage("hahmohyppy"); 
    2329    Image tippukuva = LoadImage("hahmotippuu"); 
     30    Image kyykkykuva = LoadImage("hahmokyykky"); 
    2431    Image tahdenkuva = LoadImage("palikka"); 
     32    Image VihunKuva = LoadImage("vihu2"); 
     33    Image Vihun2Kuva = LoadImage("pahis3"); 
     34    Image haviokuva = LoadImage("haviokuva"); 
     35    Image alkukuva = LoadImage("alkukuva"); 
     36 
     37    EasyHighScore topLista = new EasyHighScore(); 
     38 
     39     
    2540 
    2641    private Image[] ukkelinKavely = LoadImages("hahmo2", "hahmo3", "hahmo4", "hahmo5", "hahmo6"); 
     
    3045    public override void Begin() 
    3146    { 
    32         Gravity = new Vector(0, -1000); 
     47        ///////////////////IsFullScreen = true; 
     48        LuoAlkuvalikko(); 
     49    } 
     50 
     51 
     52    void LuoAlkuvalikko(Window sulkeutunutikkuna = null) 
     53    { 
     54        IsMouseVisible = true; 
     55        MediaPlayer.Play("valikkomusiikki"); 
     56        MediaPlayer.Volume = 10.0; 
     57        MediaPlayer.IsRepeating = true; 
     58        Level.Background.Image = alkukuva; 
     59        //GameObject alkuruutu = new GameObject(Screen.Width, Screen.Height); 
     60        Level.Background.ScaleToLevel(); 
     61        Level.Background.Color = Color.Black; 
     62        Timer.SingleShot(2, delegate 
     63        { 
     64            MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Parhaat pisteet", "Lopeta"); 
     65            Add(alkuValikko); 
     66            alkuValikko.AddItemHandler(0, Aloitapeli); 
     67            alkuValikko.AddItemHandler(1, ParhaatPisteet); 
     68            alkuValikko.AddItemHandler(2, Exit); 
     69        }); 
     70    } 
     71 
     72 
     73 
     74 
     75    void LuoAikaLaskuri() 
     76    { 
     77        aikaLaskuri = new Timer(); 
     78        aikaLaskuri.Start(); 
     79 
     80        Label aikaNaytto = new Label(); 
     81        aikaNaytto.TextColor = Color.White; 
     82        aikaNaytto.DecimalPlaces = 1; 
     83        aikaNaytto.Position = new Vector(Screen.Left + 40, Screen.Top - 40); 
     84        aikaNaytto.TextColor = Color.BloodRed; 
     85        aikaNaytto.BindTo(aikaLaskuri.SecondCounter); 
     86        Add(aikaNaytto); 
     87         
     88    } 
     89 
     90    void LuoPistelaskuri() 
     91    { 
     92        Label pistenaytto = new Label(); 
     93        pistenaytto.TextColor = Color.White; 
     94        pistenaytto.DecimalPlaces = 1; 
     95        pistenaytto.Position = new Vector(Screen.Left + 40, Screen.Top - 65); 
     96        pistenaytto.TextColor = Color.Blue; 
     97        pistenaytto.BindTo(Pistelaskuri); 
     98        Add(pistenaytto); 
     99    } 
     100 
     101    void Aloitapeli(Window suljettuikkuna) 
     102    { 
     103        Aloitapeli(); 
     104    } 
     105 
     106 
     107    void Aloitapeli() 
     108    { 
     109        ClearAll(); 
     110        LuoAikaLaskuri(); 
     111        LuoPistelaskuri(); 
     112        MediaPlayer.Play("musiikki"); 
     113        MediaPlayer.Volume = 0.2; 
     114        MediaPlayer.IsRepeating = true; 
     115            Gravity = new Vector(0, -1000); 
    33116        IsMouseVisible = true; 
    34117        LuoKentta(); 
     
    38121        Camera.ZoomFactor = 2.5; 
    39122        Camera.StayInLevel = false; 
    40     } 
     123 
     124    } 
     125 
     126 
     127 
    41128 
    42129    void LuoKentta() 
     
    46133        kentta.SetTileMethod('*', LisaaTahti); 
    47134        kentta.SetTileMethod('N', LisaaPelaaja); 
     135        //kentta.Optimize('#'); 
    48136        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO); 
     137        TileMap kentta2 = TileMap.FromLevelAsset("kentta1"); 
     138        kentta2.SetTileMethod('V', LisaaVihu); 
     139        kentta2.Execute(RUUDUN_KOKO, RUUDUN_KOKO); 
    49140        Level.CreateBorders(false); 
     141        LisaaElamaPalkki(); 
    50142        Level.Background.CreateGradient(Color.DarkGreen, Color.SlateGray); 
    51     } 
     143        Timer vihollisajastin = new Timer(); 
     144        vihollisajastin.Interval = 0.6; 
     145        vihollisajastin.Timeout += delegate 
     146        { 
     147            LisaaVihu(RandomGen.NextVector(pelaaja1.Position.X - Screen.Width/2, pelaaja1.Position.Y - Screen.Height/2 , pelaaja1.Position.X + Screen.Width/2, pelaaja1.Position.Y + Screen.Height/2), RUUDUN_KOKO, RUUDUN_KOKO); 
     148            LisaaVihu2(RandomGen.NextVector(pelaaja1.Position.X - Screen.Width / 2, pelaaja1.Position.Y - Screen.Height / 2, pelaaja1.Position.X + Screen.Width / 2, pelaaja1.Position.Y + Screen.Height / 2), RUUDUN_KOKO, RUUDUN_KOKO); 
     149        }; 
     150 
     151        vihollisajastin.Start(); 
     152    } 
     153 
     154 
     155 
     156 
    52157 
    53158    void LisaaTaso(Vector paikka, double leveys, double korkeus) 
     
    56161        taso.Position = paikka; 
    57162        taso.Image = lattiaKuva; 
     163        taso.CollisionIgnoreGroup = 1; 
    58164        Add(taso); 
     165    } 
     166 
     167    void LisaaElamaPalkki() 
     168    { 
     169        elamat = new DoubleMeter(10, 0, 10); 
     170        elamat.LowerLimit += delegate 
     171        { pelaaja1.Destroy(); 
     172        PeliLoppui(null); 
     173        //MessageDisplay.Add("Hävisit"); 
     174 
     175        }; 
     176 
     177 
     178 
     179        ProgressBar ElamaPalkki = new ProgressBar(200, 35); 
     180        ElamaPalkki.Position = new Vector(Screen.Right - 150, Screen.Top - 20); 
     181        ElamaPalkki.Color = Color.Blue; 
     182        ElamaPalkki.BarColor = Color.Red; 
     183        ElamaPalkki.BindTo(elamat); 
     184        Add(ElamaPalkki); 
    59185    } 
    60186 
     
    63189        Vector suunta = (Mouse.PositionOnWorld - pelaaja1.AbsolutePosition).Normalize(); 
    64190        juttu.Angle = suunta.Angle; 
    65         juttu.Position = suunta * 65; 
    66     } 
     191        juttu.Position = suunta * 40; 
     192 
     193        List<GameObject>lista = GetObjectsAt(juttu.AbsolutePosition, "Vihu", 5); 
     194        foreach (GameObject olio in lista) 
     195        { 
     196            double vahinko = 2.5; 
     197            if ( ( ((Vihu)olio).Elamat.Value - vahinko ) <= ( ((Vihu)olio).Elamat.MinValue ) ) 
     198            { 
     199                Pistelaskuri.Value += 0.1; 
     200 
     201            } 
     202 
     203            ((Vihu)olio).Elamat.Value -= vahinko; 
     204                      
     205        } 
     206 
     207    } 
     208 
     209    void ParhaatPisteet() 
     210    { 
     211        topLista.Show(); 
     212        topLista.HighScoreWindow.List.ScoreFormat = "{0:0.00}"; 
     213        //////////////topLista.Clear(); 
     214        topLista.HighScoreWindow.Closed += LuoAlkuvalikko; 
     215         
     216         
     217    } 
     218 
     219 
    67220 
    68221    void LisaaTahti(Vector paikka, double leveys, double korkeus) 
     
    89242        pelaaja1.AnimFall = new Animation(tippukuva); 
    90243 
    91         pelaaja1.AnimWalk.FPS = 10; 
     244         
     245 
     246        pelaaja1.AnimWalk.FPS = 11; 
    92247        pelaaja1.AnimIdle = new Animation(pelaajanKuva); 
    93248        AddCollisionHandler(pelaaja1, "juttu", TormaaTahteen); 
    94          
    95         Add(pelaaja1); 
     249        AddCollisionHandler(pelaaja1, "Vihu", TormaaVihuun); 
     250 
     251 
     252        Add(pelaaja1,1); 
    96253        juttu = new PhysicsObject(leveys, korkeus); 
    97254        pelaaja1.Add(juttu); 
     
    99256        //juttu.Position = paikka; 
    100257        juttu.Image = tahtiKuva; 
    101         Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella"); 
     258        Mouse.ListenMovement(0.0, Tahtaa, "Tähtää aseella"); 
     259        //IsMouseVisible = false; 
     260       
     261    } 
     262 
     263    void TormaaVihuun(PhysicsObject pelaaja, PhysicsObject vihu) 
     264    { 
     265        elamat.Value -= 0.25; 
     266 
     267    } 
     268 
     269    void LisaaVihu(Vector paikka, double leveys, double korkeus) 
     270    { 
     271 
     272        Vihu vihu = new Vihu(leveys * 0.8, korkeus * 0.8, 5); 
     273        vihu.Position = paikka; 
     274         
     275        //vihu.Color = Color.Red; 
     276        vihu.Image = VihunKuva; 
     277        vihu.IgnoresGravity = true; 
     278        vihu.Tag = "Vihu"; 
     279        vihu.CollisionIgnoreGroup = 1; 
     280        //vihu.IgnoresCollisionResponse = true; 
     281         
     282        Add(vihu, 1); 
     283 
     284        FollowerBrain Aivot = new FollowerBrain(pelaaja1); 
     285        Aivot.Speed = nopeus * 1.2 ; 
     286         
     287        vihu.Brain = Aivot; 
     288 
     289        GameObject palkinPaikka = new GameObject(50, 50); 
     290        palkinPaikka.Position = new Vector(0, 50); 
     291        palkinPaikka.IsVisible = false; 
     292        //Add(palkinPaikka); 
     293        vihu.Add(palkinPaikka); 
     294 
     295        ProgressBar vihunElamat = new ProgressBar(50, 20); 
     296        vihunElamat.IsVisible = false;//////////////////////////////////////////////////////////true = elamat nakyy! 
     297        vihunElamat.BindTo(vihu.Elamat); 
     298        palkinPaikka.Add(vihunElamat); 
     299 
     300 
     301    } 
     302 
     303    void LisaaVihu2(Vector paikka, double leveys, double korkeus) 
     304    { 
     305 
     306        Vihu vihu2 = new Vihu(leveys * 0.8, korkeus * 0.8, 5); 
     307        vihu2.Position = paikka; 
     308 
     309        //vihu.Color = Color.Red; 
     310        vihu2.Image = Vihun2Kuva; 
     311        vihu2.IgnoresGravity = true; 
     312        vihu2.Tag = "Vihu"; 
     313        vihu2.CollisionIgnoreGroup = 1; 
     314        //vihu.IgnoresCollisionResponse = true; 
     315 
     316        Add(vihu2, 1); 
     317 
     318        FollowerBrain Aivot = new FollowerBrain(pelaaja1); 
     319        Aivot.Speed = nopeus * 1.2; 
     320 
     321        vihu2.Brain = Aivot; 
     322 
     323        GameObject palkinPaikka = new GameObject(50, 50); 
     324        palkinPaikka.Position = new Vector(0, 50); 
     325        palkinPaikka.IsVisible = false; 
     326        //Add(palkinPaikka); 
     327        vihu2.Add(palkinPaikka); 
     328 
     329        ProgressBar vihunElamat = new ProgressBar(50, 20); 
     330        vihunElamat.IsVisible = false;//////////////////////////////////////////////////////////true = elamat nakyy! 
     331        vihunElamat.BindTo(vihu2.Elamat); 
     332        palkinPaikka.Add(vihunElamat); 
     333 
     334 
    102335    } 
    103336 
     
    110343        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus); 
    111344        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus); 
     345        Keyboard.Listen(Key.Down, ButtonState.Down, laitaanimaatiotpois, "Pelaaja kyykkää"); 
     346        Keyboard.Listen(Key.Down, ButtonState.Released, laitaanimaatiottakaisin, "pelaaja ei kyykkää"); 
     347 
     348 
     349  
    112350 
    113351        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus); 
     
    116354        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus); 
    117355        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus); 
     356        Keyboard.Listen(Key.S, ButtonState.Down, laitaanimaatiotpois, "Pelaaja kyykkää"); 
     357        Keyboard.Listen(Key.S, ButtonState.Released, laitaanimaatiottakaisin, "pelaaja ei kyykkää"); 
    118358 
    119359        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä"); 
    120360 
    121         ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus); 
    122         ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus); 
    123         ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus); 
    124  
    125         PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 
     361 
     362      
     363    } 
     364 
     365     void laitaanimaatiotpois() { 
     366            pelaaja1.Animation = new Animation(kyykkykuva); 
     367            pelaaja1.AnimWalk = null; 
     368            pelaaja1.AnimIdle = null; 
     369            pelaaja1.Animation.Start(); 
     370  
     371 
     372         } 
     373    void laitaanimaatiottakaisin() { 
     374     
     375            pelaaja1.AnimWalk = new Animation(ukkelinKavely); 
     376            pelaaja1.AnimWalk.FPS = 11; 
     377            pelaaja1.AnimIdle = new Animation(pelaajanKuva); 
     378 
     379 
    126380    } 
    127381 
     
    142396        tahti.Destroy(); 
    143397    } 
     398 
     399 
     400 
     401    void PeliLoppui(Window sulkeutunutikkuna) 
     402    { 
     403        ClearAll(); 
     404        pelaaja1.Destroy(); 
     405        aikaLaskuri.Stop(); 
     406        Pistelaskuri.Stop(); 
     407         
     408        //TODO tyhvennä pisteet 
     409        ClearTimers(); 
     410        Pistelaskuri.Value = 0; 
     411        MessageDisplay.Add("HÄVISIT"); 
     412        GameObject alkuruutu = new GameObject(Screen.Width, Screen.Height); 
     413        alkuruutu.Position = Screen.Center; 
     414        alkuruutu.Image = haviokuva; 
     415        Add(alkuruutu, -3); 
     416 
     417        //MediaPlayer.Volume = 0.5; 
     418        //MediaPlayer.IsRepeating = true; 
     419 
     420 
     421        //Level.Background.Image = kentta; 
     422        //Level.Background.ScaleToLevel(); 
     423        //Level.Background.Color = Color.Black; 
     424        Timer.SingleShot(2, delegate 
     425        { 
     426            double loppupisteet = aikaLaskuri.SecondCounter.Value + Pistelaskuri.Value;     
     427            topLista.HighScoreWindow.NameInputWindow.Message.Text = "Onneksi olkoon! Sait {0:0.00} pistettä!"; 
     428            topLista.HighScoreWindow.List.ScoreFormat = "{0:0.00}"; 
     429            topLista.EnterAndShow(loppupisteet); 
     430            topLista.HighScoreWindow.Closed += LuoAlkuvalikko; 
     431        }); 
     432    } 
     433 
     434 
     435 
     436 
     437    public class Vihu : PhysicsObject 
     438    { 
     439        DoubleMeter elamat; 
     440        public DoubleMeter Elamat { get { return elamat; } } 
     441        public Vihu(double leveys, double korkeus, int elamia) 
     442            : base(leveys, korkeus) 
     443        { 
     444            elamat = new DoubleMeter(elamia, 0, elamia); 
     445            elamat.LowerLimit += delegate { this.Destroy(); }; 
     446        } 
     447 
     448 
     449 
     450 
     451    } 
    144452} 
Note: See TracChangeset for help on using the changeset viewer.