Changeset 2100 for 2011


Ignore:
Timestamp:
2011-06-17 12:42:50 (8 years ago)
Author:
eejoprit
Message:
 
Location:
2011/24/EeroP/ZOMBIE RUNNER/ZOMBIE RUNNER
Files:
1 added
10 edited

Legend:

Unmodified
Added
Removed
  • 2011/24/EeroP/ZOMBIE RUNNER/ZOMBIE RUNNER/ZOMBIE RUNNER/Peli.cs

    r2058 r2100  
    1111    public Timer liikeajastin = new Timer(); 
    1212    Vector vanhapaikka = Vector.Zero; 
    13     TagFollowerBrain seuraaja_aivot = new TagFollowerBrain("pelaaja", 120); 
    14  
    15     RandomMoverBrain pakoaivot = new RandomMoverBrain(120) 
    16         { 
    17             ChangeMovementSeconds = 1 
     13    TagFollowerBrain seuraaja_aivot = new TagFollowerBrain("pelaaja", 5000); 
     14    public IntMeter zombinelamat = new IntMeter(1);  
     15 
     16    RandomMoverBrain pakoaivot = new RandomMoverBrain(5000) 
     17        { 
     18            ChangeMovementSeconds = 4 
    1819             
    1920        }; 
     
    2223        : base(leveys, korkeus) 
    2324    { 
    24         liikeajastin.Interval = 0.3; 
     25        zombinelamat.MaxValue = 20; 
     26        zombinelamat.LowerLimit += new Meter<int>.OnLimitHandler(zombinelamat_LowerLimit); 
     27 
     28        liikeajastin.Interval = 2; 
    2529         
    2630        liikeajastin.Trigger += new Timer.TriggerHandler(liikeajastin_Trigger); 
     
    2933    } 
    3034 
     35    
     36     
     37    void zombinelamat_LowerLimit(int value) 
     38    { 
     39        Destroy(); 
     40    } 
     41 
     42    
     43     
    3144    void liikeajastin_Trigger(Timer sender) 
    3245    { 
     
    3548        if (paikkojenetaisyys.Magnitude == 0.0) 
    3649        { 
    37             Timer.SingleShot(0.5, palauta_aivot); 
    38  
    39             if (Brain != pakoaivot) 
    40                 Brain = pakoaivot; 
     50            Brain = pakoaivot; 
    4151        } 
    4252        else 
    4353        { 
    44             if (Brain != seuraaja_aivot) 
    45                 Brain = seuraaja_aivot; 
     54            Brain = seuraaja_aivot; 
    4655        } 
    4756        vanhapaikka = Position; 
    48     } 
    49  
    50     void palauta_aivot() 
    51     { 
    52         Brain = seuraaja_aivot; 
    5357    } 
    5458} 
     
    7074    Image pelaaja4kuva = LoadImage("keltainenukko"); 
    7175    Image zombikuva = LoadImage("zombi"); 
     76    Image sininen = LoadImage("sininen"); 
    7277 
    7378    GameObject kamerapiste; 
    7479     
    7580    PhysicsObject pelaaja; 
     81 
     82    PhysicsObject[] pelaajat = new PhysicsObject[4]; 
    7683    PhysicsObject pelaaja1; 
    7784    PhysicsObject pelaaja2; 
    7885    PhysicsObject pelaaja3; 
    7986    PhysicsObject pelaaja4; 
     87 
     88    Weapon[] aseet = new Weapon[4]; 
     89 
     90    List<Vector> teleportit = new List<Vector>(); 
     91     
     92 
     93 
    8094    PhysicsObject zombi; 
    8195 
     
    8498    { 
    8599        // TODO: Kirjoita ohjelmakoodisi tähän 
     100         
    86101        luokentta(); 
    87102         
     
    95110        kamerapiste.Y = (pelaaja1.Y + pelaaja2.Y + pelaaja3.Y + pelaaja4.Y) / 4; 
    96111        kamerapiste.Shape = Shape.Circle; 
     112 
     113        Timer zombiAjastin = new Timer(); 
     114        zombiAjastin.Interval = 5; 
     115        zombiAjastin.Trigger += new Timer.TriggerHandler(uusizombi); 
     116        zombiAjastin.Start(); 
     117    } 
     118 
     119    void uusizombi(Timer sender) 
     120    { 
     121        int paikkaIndeksi = RandomGen.NextInt(0, teleportit.Count - 1); 
     122        Vector paikka = teleportit[paikkaIndeksi]; 
     123 
     124        PhysicsObject zombi = luozombit(); 
     125        zombi.Position = paikka; 
    97126    } 
    98127 
     
    102131        kamerapiste.Y = (pelaaja1.Y + pelaaja2.Y + pelaaja3.Y + pelaaja4.Y) / 4; 
    103132 
    104          
     133        Vector ehdokas = new Vector(0, 0); 
     134        for (int i = 0; i < pelaajat.Length; i++) 
     135        { 
     136            if (ehdokas.Magnitude < Vector.Distance(kamerapiste.Position, pelaajat[i].Position)) 
     137                ehdokas = pelaajat[i].Position - kamerapiste.Position; 
     138        } 
     139 
     140        double zoomX = Screen.Width / (2 * Math.Abs(ehdokas.X) + 700); 
     141        double zoomY = Screen.Height / (2 * Math.Abs(ehdokas.Y) + 700); 
     142 
     143        Camera.ZoomFactor = Math.Min(zoomX, zoomY); 
    105144 
    106145        base.Update(time); 
     
    121160        ruudut.SetTileMethod('m', luomustaa); 
    122161        ruudut.SetTileMethod('=', luoraputpysty); 
     162        ruudut.SetTileMethod('i', luoraputvaaka); 
     163        ruudut.SetTileMethod('b', luosinista); 
     164        ruudut.SetTileMethod('@', luoteleportti); 
    123165        ruudut.Execute(64, 64); 
    124166         
     
    142184        pelaaja3 = luopelaajat(pelaaja3kuva, 0.0, -1000.0); 
    143185        pelaaja4 = luopelaajat(pelaaja4kuva, 0.0, -1000.0); 
     186 
     187        pelaajat[0] = pelaaja1; 
     188        pelaajat[1] = pelaaja2; 
     189        pelaajat[2] = pelaaja3; 
     190        pelaajat[3] = pelaaja4; 
     191 
     192        luoaseet(); 
     193 
    144194        zombi = luozombit(); 
    145195    } 
     
    163213        ikkuna.Position = paikka; 
    164214        ikkuna.Image = ikkunakuva; 
     215        ikkuna.IgnoresCollisionResponse = true; 
    165216        Add(ikkuna); 
    166217    } 
     
    172223        musta.Image = mustakuva; 
    173224        musta.IgnoresCollisionResponse = true; 
    174         Add(musta); 
     225        Add(musta, 1); 
    175226    } 
    176227 
     
    181232        raput_y.Image = pystyraput; 
    182233        raput_y.IgnoresCollisionResponse = true; 
    183         Add(raput_y); 
    184     } 
     234        Add(raput_y, -1); 
     235    } 
     236 
     237 
     238    void luoraputvaaka(Vector paikka, double x, double y) 
     239    { 
     240        PhysicsObject raput_x = PhysicsObject.CreateStaticObject(64.0, 64.0); 
     241        raput_x.Position = paikka; 
     242        raput_x.Image = vaakaraput; 
     243        raput_x.IgnoresCollisionResponse = true; 
     244        Add(raput_x, -1); 
     245    } 
     246 
     247 
     248    void luosinista(Vector paikka, double x, double y) 
     249    { 
     250        PhysicsObject sinistä = PhysicsObject.CreateStaticObject(64.0, 64.0); 
     251        sinistä.Position = paikka; 
     252        sinistä.Image = sininen; 
     253        sinistä.IgnoresCollisionResponse = true; 
     254        Add(sinistä, -1); 
     255    } 
     256 
     257    void luoteleportti(Vector paikka, double x, double y) 
     258    { 
     259        PhysicsObject teleportti = PhysicsObject.CreateStaticObject(64.0, 64.0); 
     260        teleportti.Position = paikka; 
     261        teleportti.Image = mustakuva; 
     262        teleportti.IgnoresCollisionResponse = true; 
     263        Add(teleportti, 1); 
     264 
     265        teleportit.Add(paikka); 
     266    } 
     267 
     268 
    185269 
    186270    #endregion 
     
    202286        pelaaja.Shape = Shape.Circle; 
    203287        pelaaja.CanRotate = false; 
     288        AddCollisionHandler(pelaaja, pelaajatormaa);  
    204289 
    205290        Add(pelaaja); 
    206  
     291        
    207292        return pelaaja; 
    208293        
     294    } 
     295 
     296    void pelaajatormaa(PhysicsObject pelaaja, PhysicsObject kohde)  
     297    { 
     298        if (kohde is Zombi) 
     299        { 
     300            pelaaja.Destroy(); 
     301        } 
    209302    } 
    210303 
     
    215308        zombi.Image = zombikuva; 
    216309        zombi.Shape = Shape.Circle; 
     310        zombi.Tag = ("vihollinen"); 
    217311        Add(zombi); 
    218312        return zombi; 
    219313    } 
    220314 
     315    void luoaseet() 
     316    { 
     317 
     318        for (int i = 0; i < aseet.Length; i++) 
     319        { 
     320            aseet[i] = new AssaultRifle(15, 5); 
     321            aseet[i].Ammo.Value = 500; 
     322            aseet[i].ProjectileCollision = ase1osuu; 
     323            //aseet[i].X = pelaaja.Width / 2; 
     324            //aseet[i].Y = -pelaaja.Height / 2; 
     325            aseet[i].Image = null; 
     326            aseet[i].Color = Color.Transparent; 
     327 
     328            pelaajat[i].Add(aseet[i]); 
     329        } 
     330    } 
     331 
    221332 
    222333#endregion 
     334 
     335    void ase1osuu(PhysicsObject ammus, PhysicsObject kohde) 
     336    { 
     337        if (kohde is Zombi) 
     338        { 
     339            Zombi zombi = (Zombi)kohde; 
     340            zombi.zombinelamat.Value -= 1; 
     341        } 
     342        ammus.Destroy(); 
     343    } 
    223344 
    224345 
     
    229350        ControllerOne.ListenAnalog(AnalogControl.LeftStick, -1, pelaaja0liike, ("liikutelaan pelaajaa numero 1"), pelaaja1); 
    230351        ControllerOne.ListenAnalog(AnalogControl.RightStick, 0.01, pelaaja0katse, "katsotaan pelaajalla numero 1",pelaaja1); 
     352        ControllerOne.ListenAnalog(AnalogControl.RightTrigger, 0.001, ammuaseella, "pelaaja1 ampuu aseella", aseet[0]);        
    231353        ControllerOne.Listen(Button.Back, ButtonState.Down, Exit, ("poistu pelistä")); 
    232354 
    233355        ControllerTwo.ListenAnalog(AnalogControl.LeftStick, -1, pelaaja0liike, ("liikutelaan pelaajaa numero 2"), pelaaja2); 
    234356        ControllerTwo.ListenAnalog(AnalogControl.RightStick, 0.01, pelaaja0katse, "katsotaan pelaajalla numero 2", pelaaja2); 
     357        ControllerTwo.ListenAnalog(AnalogControl.RightTrigger, 0.001, ammuaseella, "pelaaja2 ampuu aseella", aseet[1]);  
    235358        ControllerTwo.Listen(Button.Back, ButtonState.Down, Exit, ("poistu pelistä")); 
    236359 
    237360        ControllerThree.ListenAnalog(AnalogControl.LeftStick, -1, pelaaja0liike, ("liikutelaan pelaajaa numero 3"), pelaaja3); 
    238361        ControllerThree.ListenAnalog(AnalogControl.RightStick, 0.01, pelaaja0katse, "katsotaan pelaajalla numero 3", pelaaja3); 
     362        ControllerThree.ListenAnalog(AnalogControl.RightTrigger, 0.001, ammuaseella, "pelaaja3 ampuu aseella", aseet[2]); 
    239363        ControllerThree.Listen(Button.Back, ButtonState.Down, Exit, ("poistu pelistä")); 
    240364 
    241365        ControllerFour.ListenAnalog(AnalogControl.LeftStick, -1, pelaaja0liike, ("liikutelaan pelaajaa numero 4"), pelaaja4); 
    242366        ControllerFour.ListenAnalog(AnalogControl.RightStick, 0.01, pelaaja0katse, "katsotaan pelaajalla numero 4", pelaaja4); 
     367        ControllerFour.ListenAnalog(AnalogControl.RightTrigger, 0.001, ammuaseella, "pelaaja4 ampuu aseella", aseet[3]); 
    243368        ControllerFour.Listen(Button.Back, ButtonState.Down, Exit, ("poistu pelistä")); 
    244369    } 
     
    256381            Vector pelaaja1nopeus = nopeus * tatinasento; 
    257382            pelaaja0.Velocity = pelaaja1nopeus; 
     383 
    258384        } 
    259385 
     
    265391        Vector tatin2asento = oikea_tatintila.StateVector; 
    266392        Vector pelaaja1katse = katse * tatin2asento ; 
    267         pelaaja0.Angle = pelaaja1katse.Angle - Angle.RightAngle; 
    268     } 
     393        pelaaja0.Angle = pelaaja1katse.Angle; 
     394    } 
     395 
     396    void ammuaseella(AnalogState s, Weapon ase) 
     397    { 
     398        PhysicsObject ammus = ase.Shoot(); 
     399 
     400        if (ammus != null) 
     401        { 
     402            ammus.Size = new Vector(6.0, 3.0); 
     403            ammus.Image = null; 
     404            ammus.Color = Color.Black; 
     405        } 
     406    } 
     407 
    269408    #endregion 
    270409 
  • 2011/24/EeroP/ZOMBIE RUNNER/ZOMBIE RUNNER/ZOMBIE RUNNERContent/ZOMBIE RUNNERContent.contentproj

    r2046 r2100  
    104104    </Compile> 
    105105  </ItemGroup> 
     106  <ItemGroup> 
     107    <Compile Include="sininen.png"> 
     108      <Name>sininen</Name> 
     109      <Importer>TextureImporter</Importer> 
     110      <Processor>TextureProcessor</Processor> 
     111    </Compile> 
     112  </ItemGroup> 
    106113  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 
    107114  <!--  To modify your build process, add your task inside one of the targets below and uncomment it.  
Note: See TracChangeset for help on using the changeset viewer.