Ignore:
Timestamp:
2017-07-07 13:42:15 (2 years ago)
Author:
npo17_50
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2017/27/RasmusL/ZombiSurvi/ZombiSurvi/ZombiSurvi/ZombiSurvi.cs

    r8855 r9014  
    33using Jypeli; 
    44using Jypeli.Assets; 
    5 using Jypeli.Controls;  
     5using Jypeli.Controls; 
    66using Jypeli.Effects; 
    77using Jypeli.Widgets; 
     
    1010{ 
    1111    private IntMeter elamaLaskuri; 
     12 
    1213    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } } 
    1314 
    1415    public Hahmo(double leveys, double korkeus, int elama) 
    1516        : base(leveys, korkeus) 
    16     {  
     17    { 
    1718        elamaLaskuri = new IntMeter(elama, 0, elama); 
    1819        elamaLaskuri.LowerLimit += delegate { this.Destroy(); }; 
     
    2324public class ZombiSurvi : PhysicsGame 
    2425{ 
     26    
    2527    const double nopeus = 200; 
    2628    const double hyppyNopeus = 950; 
     
    2931    EasyHighScore topLista = new EasyHighScore(); 
    3032 
    31     int vahinko = 1; 
     33    int vahinko = 999; 
     34    double ammusnopeus = 1.0; 
     35    bool ammusräjähtää = false; 
     36 
     37    bool onkom16 = false; 
     38    bool onkosnipu = false; 
     39 
     40 
     41    Label slot1; 
     42    Label slot2; 
    3243 
    3344    IntMeter round = new IntMeter(1); 
     45    Label pisteNaytto; 
    3446 
    3547    Hahmo pelaaja1; 
    3648    GameObject tahtain; 
     49 
     50    AssaultRifle pisla; 
     51    AssaultRifle m16; 
     52    AssaultRifle awp; 
    3753 
    3854    Image taustakuva = LoadImage("tausta"); 
     
    4056    Image pelaajanKuva = LoadImage("oikeajuoksu2_1"); 
    4157    Image zombi = LoadImage("zombi"); 
    42     Image asekuva = LoadImage("käsiase"); 
     58    Image asekuva = LoadImage("m9kadessa"); 
    4359    Image panos = LoadImage("panos"); 
    4460    Image tahtainkuva = LoadImage("crosshairs_144"); 
    4561    GameObject valo; 
     62    GameObject laser; 
    4663    SoundEffect maaliAani = LoadSoundEffect("maali"); 
    4764    SoundEffect snipu = LoadSoundEffect("awp"); 
     
    5370    Image awpkuva = LoadImage("kädetönawp"); 
    5471    Image awpkäsi = LoadImage("awspa"); 
     72    Image m16kuva = LoadImage("M16Maassa"); 
     73    Image m16käsi = LoadImage("M16Kadessa"); 
     74    Image pistoolikäsi = LoadImage("m9kadessa"); 
    5575    Image tunneli = LoadImage("luola"); 
    5676    Image takakuva = LoadImage("zombisurvitausta"); 
     77    Image laaser = LoadImage("Laaseri"); 
     78    Image m16slot = LoadImage("m16slot"); 
     79    Image awpslot = LoadImage("Awpslot"); 
     80    Image m9slot = LoadImage("m9slot"); 
     81    Image lamppuslot = LoadImage("lamppuslot"); 
     82    Image tyhjä2 = LoadImage("tyhjaslot2"); 
     83    Image valittulamppu = LoadImage("valittulamppu"); 
     84    Image valittum16 = LoadImage("m16pickedslot"); 
     85    Image valittum9 = LoadImage("m9pickedslot"); 
     86    Image valittuawp = LoadImage("awppickedslot"); 
     87    Image kädet = LoadImage("lamppukadessa"); 
    5788 
    5889    public override void Begin() 
    5990    { 
    6091        IsFullScreen = false; 
    61         topLista.HighScoreWindow.Closed += (Window w)=>alkuvalikko(); 
     92        topLista.HighScoreWindow.Closed += (Window w) => alkuvalikko(); 
    6293        alkuvalikko(); 
    6394    } 
    6495 
    6596    void alkuvalikko() 
    66     {  
    67          
     97    { 
     98 
    6899        Level.Background.Image = takakuva; 
    69100        MultiSelectWindow alkuValikko = new MultiSelectWindow("ZombiSurvi", "Aloita peli", "Parhaat pisteet", "Lopeta"); 
     
    84115    { 
    85116        round.Value = 1; 
     117        onkom16 = false; 
     118        onkosnipu = false; 
    86119        aloitapeli(); 
     120 
    87121 
    88122    } 
     
    94128        Gravity = new Vector(0, -1000); 
    95129 
     130pisla = new AssaultRifle(255 * 0.2, 15 * 1); 
     131        pisla.Image = pistoolikäsi; 
     132        pisla.Image = asekuva; 
     133        pisla.FireRate = 2.5; 
     134        pisla.Ammo.Value = 5000; 
     135        pisla.ProjectileCollision = AmmusOsui; 
     136        pisla.AttackSound = pistooli; 
     137 
     138        m16 = new AssaultRifle(200 * 0.5, 35 * 0.4); 
     139        m16.Image = m16käsi; 
     140        m16.FireRate = 8.5; 
     141        m16.Ammo.Value = 500; 
     142        m16.ProjectileCollision = AmmusOsui; 
     143 
     144        awp = new AssaultRifle(250 * 0.5, 50 * 0.4); 
     145        awp.Image = awpkäsi; 
     146        awp.FireRate = 1; 
     147        awp.Ammo.Value = 350; 
     148        awp.ProjectileCollision = AmmusOsui; 
     149        awp.AttackSound = snipu; 
     150 
     151        luoasekuvat(); 
    96152        LuoKentta(); 
    97153        LisaaNappaimet(); 
     
    99155        LuoroundLaskuri(); 
    100156 
     157         
     158 
     159 
    101160        Camera.Follow(pelaaja1); 
    102         Camera.ZoomFactor = 1.2; 
     161        Camera.ZoomFactor = 1.25; 
    103162        //Camera.StayInLevel = true; 
    104163    } 
    105164 
     165    void luoasekuvat() 
     166    { 
     167        slot1 = new Label(50, 50); 
     168        slot1.Color = Color.White; 
     169        slot1.Image = lamppuslot; 
     170        slot1.X = Screen.Left + 100; 
     171        slot1.Y = Screen.Bottom + 50; 
     172        Add(slot1); 
     173 
     174        slot2 = new Label(50, 50); 
     175        slot2.Color = Color.White; 
     176        slot2.Image = m9slot; 
     177        slot2.X = Screen.Left + 155; 
     178        slot2.Y = Screen.Bottom + 50; 
     179        Add(slot2); 
     180 
     181    } 
    106182    void LuoKentta() 
    107183    { 
     
    115191        ruudut.SetTileMethod(Color.FromHexCode("0037FF"), Lisaazombispawn); 
    116192        ruudut.SetTileMethod(Color.FromHexCode("DD8EFF"), Lisaasnipu); 
     193        ruudut.SetTileMethod(Color.FromHexCode("BF00FF"), Lisaam16); 
    117194        ruudut.Execute(RUUDUN_KOKO, RUUDUN_KOKO); 
    118195        Level.CreateBorders(); 
     
    136213        snipu.Position = paikka; 
    137214        snipu.Image = awpkuva; 
    138         snipu.Tag = "snipukuva"; 
     215 
     216        Timer.SingleShot(5, delegate 
     217       { 
     218           snipu.Tag = "snipukuva"; 
     219       }); 
     220 
     221    } 
     222 
     223    void Lisaam16(Vector paikka, double leveys, double korkeus) 
     224    { 
     225        PhysicsObject m16 = new PhysicsObject(leveys * 1.3, korkeus / 2); 
     226        Add(m16); 
     227        m16.Position = paikka; 
     228        m16.Image = m16kuva; 
     229 
     230        Timer.SingleShot(5, delegate 
     231        { 
     232            m16.Tag = "m16kuva"; 
     233        }); 
    139234    } 
    140235 
     
    174269        Add(zombi); 
    175270 
    176         //PlatformWandererBrain tasoAivot = new PlatformWandererBrain(); 
    177         //tasoAivot.Speed = 100; 
    178         //tasoAivot.TriesToJump = true; 
    179         //tasoAivot.JumpSpeed = 1000; 
    180  
    181271        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja"); 
    182272        seuraajanAivot.Speed = 300; 
    183         //seuraajanAivot.DistanceFar = 800; 
    184         //seuraajanAivot.FarBrain = tasoAivot; 
    185273 
    186274        Timer hyppyAjastin = new Timer(); 
     
    205293        AddCollisionHandler(pelaaja1, "zombi", osuizombiin); 
    206294        AddCollisionHandler(pelaaja1, "snipukuva", osuisnipuun); 
     295        AddCollisionHandler(pelaaja1, "m16kuva", osuim16); 
     296 
    207297 
    208298        Add(pelaaja1); 
    209         pelaaja1.Weapon = new AssaultRifle(250 * 0.2, 50 * 1); 
    210         pelaaja1.Weapon.Image = asekuva; 
    211         pelaaja1.Weapon.FireRate = 3; 
    212         pelaaja1.Weapon.Ammo.Value = 1000; 
    213         pelaaja1.Weapon.ProjectileCollision = AmmusOsui; 
    214         pelaaja1.Weapon.AttackSound = pistooli; 
     299 
    215300        ProgressBar elamaPalkki = new ProgressBar(150, 20); 
    216301        elamaPalkki.X = Screen.Left + 150; 
     
    223308        valo.IsVisible = true; 
    224309        Add(valo, 3); 
     310 
     311        laser = new GameObject(laaser); 
     312        laser.Width *= 10; 
     313        laser.Position = pelaaja1.Position; 
     314        laser.IsVisible = false; 
     315        Add(laser, 3); 
     316 
     317         
     318         
     319        otapistooli(); 
     320        LuopanosLaskuri(); 
     321    } 
     322 
     323    void osuipistooliin(PhysicsObject pelaaja, PhysicsObject pisla) 
     324    { 
     325        pisla.Destroy(); 
     326        otapistooli(); 
     327    } 
     328    void otapistooli() 
     329    { 
     330        pelaaja1.Weapon = pisla; 
     331        asenosto.Play(); 
     332        vahinko = 4; 
     333        laser.IsVisible = false; 
     334        ammusräjähtää = false; 
     335        slot2.Image = valittum9; 
     336 
     337        if(pisteNaytto != null) pisteNaytto.BindTo(pelaaja1.Weapon.Ammo); 
     338 
     339        if (onkom16) slot1.Image = m16slot; 
     340        else if (onkosnipu) slot1.Image = awpslot; 
     341        else slot1.Image = lamppuslot; 
     342 
    225343    } 
    226344    void osuisnipuun(PhysicsObject pelaaja, PhysicsObject kädetönawp) 
    227345    { 
    228346        kädetönawp.Destroy(); 
    229         pelaaja1.Weapon = new AssaultRifle(250 * 0.5, 50 * 0.4); 
    230         pelaaja1.Weapon.Image = awpkäsi; 
    231         pelaaja1.Weapon.FireRate = 1; 
    232         pelaaja1.Weapon.Ammo.Value = 9999999; 
    233         pelaaja1.Weapon.ProjectileCollision = AmmusOsui; 
    234         pelaaja1.Weapon.AttackSound = snipu; 
    235         asenosto.Play(); 
    236         vahinko = 10; 
    237  
     347 
     348        if (onkom16) Lisaam16(pelaaja1.Position, RUUDUN_KOKO, RUUDUN_KOKO); 
     349 
     350        slot1.Image = awpslot; 
     351 
     352        onkosnipu = true; 
     353        onkom16 = false; 
     354        otasnipu(); 
     355    } 
     356    void otasnipu() 
     357    { 
     358        if (onkosnipu) 
     359        { 
     360 
     361            pelaaja1.Weapon = awp; 
     362            asenosto.Play(); 
     363            laser.IsVisible = true; 
     364            vahinko = 15; 
     365            ammusnopeus = 1.75; 
     366 
     367            ammusräjähtää = true; 
     368            slot1.Image = valittuawp; 
     369            slot2.Image = m9slot; 
     370 
     371            pisteNaytto.BindTo(pelaaja1.Weapon.Ammo); 
     372        } 
     373    } 
     374 
     375    void osuim16(PhysicsObject pelaaja, PhysicsObject M16Maassa) 
     376    { 
     377        M16Maassa.Destroy(); 
     378 
     379        if (onkosnipu) Lisaasnipu(pelaaja1.Position, RUUDUN_KOKO, RUUDUN_KOKO); 
     380 
     381        onkom16 = true; 
     382        onkosnipu = false; 
     383        otam16(); 
     384    } 
     385    void otam16() 
     386    { 
     387        if (onkom16) 
     388        { 
     389 
     390            pelaaja1.Weapon = m16; 
     391            asenosto.Play(); 
     392            vahinko = 3; 
     393            ammusnopeus = 1.3; 
     394            laser.IsVisible = false; 
     395            ammusräjähtää = false; 
     396            slot1.Image = valittum16; 
     397            slot2.Image = m9slot; 
     398 
     399            pisteNaytto.BindTo(pelaaja1.Weapon.Ammo); 
     400 
     401 
     402        } 
     403    } 
     404 
     405    void otakädet() 
     406    { 
     407        if (!onkom16 && !onkosnipu) 
     408        { 
     409            pelaaja1.Weapon = new AssaultRifle(50 * 0.5, 35 * 0.4); 
     410            pelaaja1.Weapon.Image = kädet; 
     411            pelaaja1.Weapon.FireRate = 0; 
     412            laser.IsVisible = false; 
     413            ammusräjähtää = false; 
     414 
     415            slot1.Image = valittulamppu; 
     416            slot2.Image = m9slot; 
     417        } 
    238418    } 
    239419    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde) 
     
    241421        ammus.Destroy(); 
    242422 
     423        if (ammusräjähtää) 
     424 
     425        { 
     426            Explosion rajahdys = new Explosion(50); 
     427            rajahdys.Position = ammus.Position; 
     428            Add(rajahdys); 
     429        } 
     430 
    243431        if (kohde is Hahmo) 
    244432        { 
     433 
    245434            ((Hahmo)kohde).ElamaLaskuri.Value -= vahinko; 
    246435        } 
     
    255444        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus); 
    256445 
     446        Keyboard.Listen(Key.D2, ButtonState.Pressed, otapistooli, ""); 
     447        Keyboard.Listen(Key.D1, ButtonState.Pressed, otam16, ""); 
     448        Keyboard.Listen(Key.D1, ButtonState.Pressed, otasnipu, ""); 
     449        Keyboard.Listen(Key.D1, ButtonState.Pressed, otakädet, ""); 
     450 
    257451        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1); 
    258452 
    259         ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä"); 
    260  
    261         ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus); 
    262         ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus); 
    263         ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus); 
    264  
    265453 
    266454        Mouse.ListenMovement(0.0, KuunteleLiiketta, null); 
    267455 
    268         PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 
     456 
    269457    } 
    270458 
     
    273461        pelaaja1.Weapon.AbsoluteAngle = (Mouse.PositionOnWorld - pelaaja1.Position).Angle; 
    274462        valo.AbsoluteAngle = (Mouse.PositionOnWorld - pelaaja1.Position).Angle; 
     463        laser.AbsoluteAngle = (Mouse.PositionOnWorld - pelaaja1.Position).Angle; 
    275464 
    276465        tahtain.Position = Mouse.PositionOnWorld; 
     
    282471        { 
    283472            valo.Position = pelaaja1.Position; 
     473            laser.Position = pelaaja1.Position; 
    284474        } 
    285475 
     
    293483        if (ammus != null) 
    294484        { 
    295  
    296             snipu.Play(0.1, 0.0, 0.0); 
    297             ammus.Size = new Vector(5, 3) * 2; 
     485          
     486            //snipu.Play(0.1, 0.0, 0.0); 
     487            ammus.Position += ammus.Angle.GetVector() * -1; 
     488            ammus.Position += (ammus.Angle + Angle.FromDegrees(90)).GetVector() * 2.5; 
     489            ammus.Size = new Vector(10, 6); 
    298490            ammus.Image = panos; 
     491            ammus.Velocity *= ammusnopeus; 
     492 
     493 
     494 
     495 
     496 
     497 
    299498            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0); 
    300499        } 
     
    324523    } 
    325524 
     525    void LuopanosLaskuri() 
     526    { 
     527 
     528        pisteNaytto = new Label(); 
     529        pisteNaytto.X = 850; 
     530        pisteNaytto.Y = Screen.Bottom + 45; 
     531        pisteNaytto.TextColor = Color.Yellow; 
     532        //pisteNaytto.Color = Color.White; 
     533 
     534        pisteNaytto.BindTo(pelaaja1.Weapon.Ammo); 
     535        Add(pisteNaytto); 
     536    } 
     537 
    326538    void LuoroundLaskuri() 
    327539    { 
     
    351563        pelaaja1.ElamaLaskuri.Value -= 1; 
    352564    } 
    353  
    354565    void pelipäättyy() 
    355566    { 
Note: See TracChangeset for help on using the changeset viewer.