Changeset 3331


Ignore:
Timestamp:
2012-06-28 15:04:39 (7 years ago)
Author:
totauria
Message:

Talletus.

Location:
2012/26/TopiasT
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • 2012/26/TopiasT/Ukkeli/Ukkeli/Ukkeli/Ukkeli.cs

    r3287 r3331  
    77using Jypeli.Widgets; 
    88 
     9 
     10public class PeliHahmo : PlatformCharacter 
     11{ 
     12    public IntMeter elamaLaskuri = new IntMeter(10, 0, 10); 
     13     
     14    private Weapon secondWeapon; 
     15    public Weapon SecondWeapon { get { return secondWeapon; } set { secondWeapon = value; this.Add(value); } } 
     16 
     17    public PeliHahmo(double leveys, double korkeus) 
     18        : base(leveys, korkeus) 
     19    { 
     20        elamaLaskuri.LowerLimit += delegate 
     21        { 
     22            SecondWeapon.Destroy(); 
     23            this.Destroy(); 
     24        }; 
     25    } 
     26} 
     27 
     28 
     29 
     30 
     31public class Vihu : PhysicsObject 
     32{ 
     33    public IntMeter elamaLaskuri = new IntMeter(200, 0, 200); 
     34 
     35    public Vihu(double leveys, double korkeus) 
     36        : base(leveys, korkeus) 
     37    { 
     38        elamaLaskuri.LowerLimit += delegate  
     39        { 
     40            this.Destroy();  
     41        }; 
     42    } 
     43 
     44} 
     45 
    946public class Ukkeli : PhysicsGame 
    1047{ 
     
    1350    const int RUUDUN_KOKO = 40; 
    1451 
    15     PlatformCharacter pelaaja1; 
     52    PeliHahmo pelaaja1; 
    1653    Image PahanKuva = LoadImage("paha ukkeli"); 
    1754    Image pelaajanKuva = LoadImage("Ukkeli"); 
    1855    Image tahtiKuva = LoadImage("Kolikko"); 
     56    Image tasokuva = LoadImage("taso"); 
     57 
     58 
    1959 
    2060    SoundEffect maaliAani = LoadSoundEffect("maali"); 
     
    2262    public override void Begin() 
    2363    { 
    24  
    25         Grenade kranaatti = new Grenade(4.0); 
    26   
    2764         
     65 
     66         
     67         
     68        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", 
     69"Aloita peli", "Lopeta"); 
     70        Add(alkuValikko); 
     71        alkuValikko.ItemSelected += PainettiinValikonNappia; 
     72 
     73 
     74 
    2875 
    2976        Gravity = new Vector(0, -1000); 
     
    4693        kentta.SetTileMethod(Color.Black, LisaaTaso); 
    4794        kentta.SetTileMethod(Color.Yellow, LisaaTahti); 
    48         kentta.SetTileMethod(Color.Blue, LisaaPelaaja);         
     95        kentta.SetTileMethod(Color.Blue, LisaaPelaaja); 
    4996        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO); 
    5097        Level.CreateBorders(); 
    5198        Level.Background.CreateGradient(Color.White, Color.SkyBlue); 
     99 
     100        LuoMittari(); 
     101 
     102    } 
     103 
     104    void LuoMittari() 
     105    { 
     106        ProgressBar voimaPalkki = new ProgressBar(150, 10); 
     107        voimaPalkki.BindTo(pelaaja1.elamaLaskuri); 
     108        Add(voimaPalkki); 
     109 
     110        voimaPalkki.X = Screen.Left + 150; 
     111        voimaPalkki.Y = Screen.Top - 20; 
     112        voimaPalkki.BarColor = Color.Red; 
     113        voimaPalkki.BorderColor = Color.Aqua; 
    52114    } 
    53115 
     
    57119        taso.Position = paikka; 
    58120        taso.Color = Color.Green; 
     121        taso.Image = tasokuva; 
    59122        Add(taso); 
    60123    } 
     
    72135    void LisaaPelaaja(Vector paikka, double leveys, double korkeus) 
    73136    { 
    74         pelaaja1 = new PlatformCharacter(leveys, korkeus); 
     137        pelaaja1 = new PeliHahmo(leveys, korkeus); 
    75138        pelaaja1.Position = paikka; 
    76139        pelaaja1.Tag = "pelaaja"; 
     
    80143        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen); 
    81144        pelaaja1.Weapon = new PlasmaCannon(30, 7); 
     145        pelaaja1.Weapon.Ammo.Value = Int32.MaxValue; 
    82146        pelaaja1.Weapon.ProjectileCollision = AmmusOsui; 
    83147 
     148        //pelaaja1.Weapon = new LaserGun(20, 5); 
     149        pelaaja1.SecondWeapon = new LaserGun(20, 5); 
     150        pelaaja1.SecondWeapon.Ammo.Value = Int32.MaxValue; 
     151        pelaaja1.SecondWeapon.ProjectileCollision = laserAmmusOsui; 
     152        //Add(pelaaja1.SecondWeapon); 
    84153        Add(pelaaja1); 
     154 
     155        pelaaja1.Destroyed += delegate 
     156        { 
     157            Exit(); 
     158        }; 
    85159    } 
    86160 
     
    92166        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    93167 
    94         Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus); 
    95         Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus); 
    96         Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus); 
     168        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus); 
     169        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus); 
     170        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus); 
    97171 
    98172        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä"); 
     
    102176        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus); 
    103177 
    104         Mouse.Listen(MouseButton.Left, ButtonState.Pressed, AmmuAseella, "Ammuaseella."); 
     178        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammuaseella."); 
    105179        Mouse.ListenMovement(0.1, KuunteleLiiketta, null); 
    106         Keyboard.Listen(Key.Space, ButtonState.Pressed, HeitaKranaatti , "Liikkuu vasemmalle"); 
    107  
     180        Keyboard.Listen(Key.Space, ButtonState.Down, AmmulaserAseella, "AmmulaserAseella."); 
     181        Keyboard.Listen(Key.V, ButtonState.Down, lisaaelama, "lisaaelama."); 
     182 
     183 
     184        Mouse.Listen(MouseButton.Middle, ButtonState.Down, HeitaKranaatti, "HeitaKranaatti.", pelaaja1); 
     185        Mouse.Listen(MouseButton.Right, ButtonState.Pressed, HeitaKranaatti, "HeitaKranaatti.", pelaaja1); 
    108186 
    109187        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 
     
    133211        if (ammus != null) 
    134212        { 
    135             ammus.CollisionIgnoreGroup = 1; 
     213            ammus.CollisionIgnoreGroup = 6; 
    136214            ammus.Size *= 1; 
    137215        } 
     
    141219    { 
    142220        ammus.Destroy(); 
     221        if (kohde.Tag.ToString() == "vihu") 
     222        { 
     223            (kohde as Vihu).elamaLaskuri.Value--; 
     224        } 
    143225        Explosion rajahdys = new Explosion(10); 
    144226        rajahdys.Position = ammus.Position; 
     
    147229    void LisaaPaha(Vector paikka, double leveys, double korkeus) 
    148230    { 
    149         PhysicsObject Paha = new PhysicsObject(50, 60); 
     231        Vihu Paha = new Vihu(50, 60); 
    150232        Paha.Mass = 40.0; 
     233        Paha.Tag = "vihu"; 
    151234        Paha.Position = paikka; 
    152235        Paha.Image = LoadImage("paha ukkeli"); 
     
    154237        Paha.Image.ReplaceColor(new Color(255, 0, 0), RandomGen.NextColor()); 
    155238 
     239 
    156240        PlasmaCannon pyssy = new PlasmaCannon(0.1, 0.1); 
    157241        pyssy.ProjectileCollision = VihunAmmusOsui; 
    158242        Paha.Add(pyssy); 
    159         pyssy.ProjectileCollision = AmmusOsui; 
     243 
    160244        Add(Paha); 
    161245 
    162246        Timer ampumisAjastin = new Timer(); 
    163         ampumisAjastin.Interval = 2; 
     247        ampumisAjastin.Interval = 1; 
    164248        ampumisAjastin.Timeout += delegate 
    165249        { 
     
    168252            if (ammus != null) 
    169253            { 
    170                 ammus.Hit(Vector.FromLengthAndAngle(100,pyssy.Angle)); 
     254                ammus.Hit(Vector.FromLengthAndAngle(100, pyssy.Angle)); 
    171255            } 
    172256        }; 
    173257 
    174258        ampumisAjastin.Start(); 
    175  
     259        Paha.Destroyed += delegate { ampumisAjastin.Stop(); }; 
    176260        FollowerBrain seuraajaAivot = new FollowerBrain("pelaaja"); 
    177261        Paha.Brain = seuraajaAivot; 
    178262        seuraajaAivot.Active = true; 
    179      
    180     } 
     263 
     264    } 
     265 
    181266    void VihunAmmusOsui(PhysicsObject ammus, PhysicsObject kohde) 
    182267    { 
    183268        ammus.Destroy(); 
     269        if (kohde.Tag.ToString() == "pelaaja") 
     270        { 
     271            (kohde as PeliHahmo).elamaLaskuri.Value--; 
     272        } 
    184273        Explosion rajahdys = new Explosion(10); 
    185274        rajahdys.Position = ammus.Position; 
     
    189278    { 
    190279        pelaaja1.Weapon.Angle = (Mouse.PositionOnWorld - pelaaja1.Position).Angle; 
    191     } 
    192     void HeitaKranaatti(PlatformCharacter pelaaja) 
     280        pelaaja1.SecondWeapon.Angle = (Mouse.PositionOnWorld - pelaaja1.Position).Angle; 
     281    } 
     282 
     283    void HeitaKranaatti(PlatformCharacter pelaaja1) 
    193284    { 
    194285        Grenade kranaatti = new Grenade(4.0); 
    195         kranaatti.X = pelaaja.X + 10; 
    196         kranaatti.Y = pelaaja.Y + 10; 
     286        kranaatti.X = pelaaja1.X + 10; 
     287        kranaatti.Y = pelaaja1.Y + 10; 
     288        kranaatti.ExplosionForce = 0; 
    197289        Add(kranaatti); 
    198         Vector heittoVoima = Vector.FromLengthAndAngle(4000, Angle.FromDegrees(45)); 
     290        Vector heittoVoima = Vector.FromLengthAndAngle(30000, (Mouse.PositionOnWorld - pelaaja1.Position).Angle); 
    199291        kranaatti.Hit(heittoVoima); 
    200         pelaaja.Throw( kranaatti, Angle.FromDegrees( 30 ), 10000 ); 
    201         kranaatti.FuseTime = TimeSpan.FromSeconds( 5 ); 
    202  
    203     } 
    204  
    205  
    206  
     292        AddCollisionHandler(kranaatti, kranaattiosui); 
     293    } 
     294 
     295    void kranaattiosui(PhysicsObject kranaatti, PhysicsObject kohde) 
     296    { 
     297        if (kohde.Tag.ToString() == "vihu") 
     298        { 
     299            (kohde as Vihu).elamaLaskuri.Value -= 5; 
     300        } 
     301        Explosion rajahdys = new Explosion(10); 
     302        rajahdys.UseShockWave = false; 
     303        rajahdys.Force = 0; 
     304        rajahdys.Position = kranaatti.Position; 
     305        Add(rajahdys); 
     306    } 
     307 
     308    void PainettiinValikonNappia(int valinta) 
     309    { 
     310        switch (valinta) 
     311        { 
     312            case 0: 
     313                // AloitaPeli(); 
     314                break; 
     315            case 1: 
     316                Exit(); 
     317                break; 
     318        } 
     319 
     320    } 
     321    void AmmulaserAseella() 
     322    { 
     323        PhysicsObject ammus = pelaaja1.SecondWeapon.Shoot(); 
     324 
     325        if (ammus != null) 
     326        { 
     327            ammus.CollisionIgnoreGroup = 1; 
     328            ammus.Size *= 4; 
     329        } 
     330 
     331    } 
     332    void laserAmmusOsui(PhysicsObject laserammus, PhysicsObject kohde) 
     333    { 
     334        laserammus.Destroy(); 
     335        if (kohde.Tag.ToString() == "vihu") 
     336        { 
     337            (kohde as Vihu).elamaLaskuri.Value--; 
     338        } 
     339        Explosion rajahdys = new Explosion(10); 
     340        rajahdys.Position = laserammus.Position; 
     341        Add(rajahdys); 
     342 
     343 
     344 
     345 
     346    } 
     347    void lisaaelama() 
     348    { 
     349        pelaaja1.elamaLaskuri.Value++; 
     350     
     351    } 
    207352 
    208353 
  • 2012/26/TopiasT/Ukkeli/Ukkeli/UkkeliContent/UkkeliContent.contentproj

    r3287 r3331  
    9494    </Compile> 
    9595  </ItemGroup> 
     96  <ItemGroup> 
     97    <Compile Include="Taso.png"> 
     98      <Name>Taso</Name> 
     99      <Importer>TextureImporter</Importer> 
     100      <Processor>TextureProcessor</Processor> 
     101    </Compile> 
     102  </ItemGroup> 
    96103  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 
    97104  <!--  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.