Ignore:
Timestamp:
2016-07-07 15:03:26 (3 years ago)
Author:
pimaeeru
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2014/koodauskerho/38/PietuR/MagicalFlowerParty/MagicalFlowerParty/MagicalFlowerParty/MagicalFlowerParty.cs

    r7904 r7969  
    1212 
    1313    public bool osunut = false; 
     14     
    1415 
    1516    public DoubleMeter kerroin { get;} 
     17 
     18    public ProgressBar aika { get; } 
     19    public DoubleMeter Loppuajastin; 
    1620 
    1721    public Pelaaja(double width, double height) 
    1822        : base(width, height){ 
    1923        kerroin = new DoubleMeter(100, 0, 300); 
     24        Loppuajastin = new DoubleMeter(3, 0, 3); 
     25 
     26        aika = new ProgressBar(100, 10); 
     27        aika.BindTo(Loppuajastin); 
     28        aika.IsVisible = true; 
     29        Add(aika); 
     30        aika.Position -= new Vector(-15, height/2); 
     31        Loppuajastin.LowerLimit += delegate { this.Destroy(); }; 
     32         
     33 
    2034    } 
    2135} 
     
    3448public class MagicalFlowerParty : PhysicsGame 
    3549{ 
    36      
     50    Image finnypic = LoadImage("Finny"); 
     51    Image wibblypic = LoadImage("Wibbly"); 
     52    Image puffypic = LoadImage("Puffy"); 
     53    Image kookypic = LoadImage("Kooky"); 
     54    Image arenapic = LoadImage("Arena"); 
     55    Image bgpic = LoadImage("Background"); 
     56    Image bgpic2 = LoadImage("Background2"); 
     57 
     58    Image dandy = LoadImage("Dandelion"); 
     59    Image leaf = LoadImage("leaf"); 
     60    Image[] bumblebee = LoadImages("Bumblebee", "Bumblebee2", "Bumblebee3", "bumblebee2"); 
     61    Image bumbly = LoadImage("bumblebee"); 
     62 
     63 
     64    Image wall = LoadImage("Wall"); 
     65    Image wall2 = LoadImage("Wall2"); 
     66    Image wall3 = LoadImage("Wall3"); 
     67    Image wallp = LoadImage("WallP"); 
     68    Image wallp2 = LoadImage("WallP2"); 
     69    Image wallp3 = LoadImage("WallP3"); 
     70 
     71    SoundEffect bounce = LoadSoundEffect("Bounce"); 
     72    SoundEffect glass = LoadSoundEffect("Glass"); 
    3773 
    3874    Pelaaja pelaaja1; 
     
    4076    Pelaaja pelaaja3; 
    4177    Pelaaja pelaaja4; 
     78    GameObject tausta; 
     79    PhysicsObject este; 
     80 
     81    PhysicsObject arena; 
    4282    public override void Begin() 
    4383    { 
    44  
    45         Image finnypic = LoadImage("Finny"); 
    46         Image wibblypic = LoadImage("Wibbly"); 
    47         Image puffypic = LoadImage("Puffy"); 
    48         Image kookypic = LoadImage("Kooky"); 
    49         Image arenapic = LoadImage("Arena"); 
    50         Image wall = LoadImage("Wall"); 
    51         Image bgpic = LoadImage("Background"); 
    52         Image bgpic2 = LoadImage("Background2"); 
    53  
    54         Level.Background.Image = bgpic; 
    55  
    56         PhysicsObject arena = new PhysicsObject(1186, 1186); 
    57         arena.Shape = Shape.FromImage(arenapic); 
     84        Camera.ZoomFactor = 0.8; 
     85 
     86        //Level.Background.Image = bgpic; 
     87        tausta = new GameObject(Window.Width * 1.25, Window.Height * 1.25); 
     88        tausta.Image = bgpic; 
     89        Add(tausta, -3); 
     90 
     91         arena = new PhysicsObject(1244, 1244); 
     92        //arena.Shape = Shape.FromImage(arenapic); 
     93        arena.Shape = Shape.Circle; 
     94        arena.Color = Color.HotPink; 
    5895        arena.Image = arenapic; 
     96        arena.Tag = "arena"; 
    5997        arena.IgnoresCollisionResponse = true; 
    6098        Add(arena, -1); 
    6199 
    62         Camera.ZoomFactor = 0.8; 
    63100 
    64101        Luokilpi(220, 530, wall, 67.5); 
     
    70107        Luokilpi(220, -530, wall, 292.5); 
    71108        Luokilpi(530, -220, wall, 337.5); 
    72  
    73         PhysicsObject santtu = new PhysicsObject(100, 100); 
    74         santtu.IgnoresCollisionResponse = true; 
    75         santtu.Tag = "tapettavariivio"; 
    76         Add(santtu); 
    77109 
    78110 
     
    87119        AddCollisionHandler(pelaaja1, "pallero", PelaajaOsuu); 
    88120        AddCollisionHandler(pelaaja1, "shield", KilpeenOsuu); 
     121        AddCollisionHandler(pelaaja1, Osuma); 
    89122        Add(pelaaja1); 
     123        
     124 
    90125 
    91126        LuoKerroin(pelaaja1); 
     
    175210          Dash, null, new Vector(0, -10000), pelaaja4); 
    176211 
    177  
    178  
    179  
    180         PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 
     212        Timer ajastin = new Timer(); 
     213        ajastin.Interval = 1; 
     214        ajastin.Timeout += delegate { Luoeste(dandy, 766/2, 244/2, "dandy", 0); }; 
     215        ajastin.Start(); 
     216 
     217        Timer ajastin2 = new Timer(); 
     218        ajastin2.Interval = 1; 
     219        ajastin2.Timeout += delegate { Luoeste(leaf, 500 / 2, 272 / 2, "leaf", 0); }; 
     220        ajastin2.Start(); 
     221         
     222 
     223        Timer ajastin3 = new Timer(); 
     224        ajastin3.Interval = 1; 
     225        ajastin3.Timeout += delegate { 
     226            Animation anim = new Animation(bumblebee); 
     227            anim.FPS = 16; 
     228            anim.Start(); 
     229            Luoeste(bumbly, 75, 120, "bumblebee", 0, anim); }; 
     230        ajastin3.Start(); 
     231 
    181232        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    182233    } 
     234 
     235    protected override void Update(Time time) 
     236    { 
     237        Onkosisalla(pelaaja1, time); 
     238        Onkosisalla(pelaaja2, time); 
     239        Onkosisalla(pelaaja3, time); 
     240        Onkosisalla(pelaaja4, time); 
     241 
     242        base.Update(time); 
     243 
     244    } 
     245    void Onkosisalla(Pelaaja pelaaja, Time time) 
     246    { 
     247        if (!arena.IsInside(pelaaja.Position)) 
     248        { 
     249            pelaaja.Loppuajastin.Value -= time.SinceLastUpdate.TotalSeconds; 
     250            pelaaja.aika.IsVisible = true; 
     251            //pelaaja1.kerroin.Value += time.SinceLastUpdate.TotalSeconds; 
     252            //Timer.SingleShot(3.0, delegate { pelaaja.Destroy(); }); 
     253 
     254            /*Timer ajastin = new Timer(); 
     255            ajastin.Interval = 3.0; 
     256            ajastin.Timeout += delegate { pelaaja.Destroy(); }; 
     257            ajastin.Start();*/ 
     258        } 
     259        else if (arena.IsInside(pelaaja.Position)) 
     260        { 
     261            pelaaja.Loppuajastin.Value = 2; 
     262            pelaaja.aika.IsVisible = false; 
     263        } 
     264    } 
    183265    void MovePlayer(Vector vector, PhysicsObject pelaaja) 
    184266    { 
    185267        pelaaja.Push(vector); 
    186268    } 
    187  
    188269    void Dash(Vector vector, Pelaaja pelaaja) 
    189270    { 
     
    198279     
    199280    } 
    200      
    201  
    202281    void Luokilpi(double X, double Y, Image kuva, double kulma) 
    203282    { 
     
    208287        shield.AbsoluteAngle = Angle.FromDegrees(kulma); 
    209288        shield.MakeStatic(); 
     289        shield.CollisionIgnoreGroup = 1; 
    210290        shield.Tag = "shield"; 
    211291        Add(shield); 
     
    215295    { 
    216296         
    217         Image wall = LoadImage("Wall"); 
    218         Image wall2 = LoadImage("Wall2"); 
    219         Image wall3 = LoadImage("Wall3"); 
    220         Image wallp = LoadImage("WallP"); 
    221         Image wallp2 = LoadImage("WallP2"); 
    222         Image wallp3 = LoadImage("WallP3"); 
    223297 
    224298        Pelaaja pelaaja = tormaaja as Pelaaja; 
     
    230304        { 
    231305            osuttu.kestavyys.Value -= 1; 
     306            glass.Play(); 
     307        } 
     308        else 
     309        { 
     310            bounce.Play(); 
    232311        } 
    233312 
     
    258337        osuttu.kestavyys.LowerLimit += delegate { osuttu.Destroy(); }; 
    259338    } 
    260  
    261339    void PelaajaOsuu(PhysicsObject tormaaja, PhysicsObject kohde) 
    262340    { 
     341 
     342        SoundEffect Hit = LoadSoundEffect("Bass"); 
     343 
    263344        Pelaaja pelaaja = tormaaja as Pelaaja; 
    264345        Pelaaja osuttu = kohde as Pelaaja; 
    265346        if (osuttu == null) 
    266347        return; 
    267          
     348 
    268349        if (pelaaja.Velocity.Magnitude > kohde.Velocity.Magnitude && !osuttu.osunut && !pelaaja.osunut) 
    269350        { 
    270             double vahinko = (pelaaja.Velocity - kohde.Velocity).Magnitude / 60.0 * 2.0; 
     351 
     352            Hit.Play(); 
     353            double vahinko = (pelaaja.Velocity - kohde.Velocity).Magnitude / 80.0 * 2.0; 
    271354            osuttu.osunut = true; 
    272355            osuttu.kerroin.Value += vahinko; 
    273             osuttu.Hit(pelaaja.Velocity.Normalize() *  (osuttu.kerroin.Value * osuttu.kerroin.Value / 50)); 
     356            osuttu.Hit(pelaaja.Velocity.Normalize() * (osuttu.kerroin.Value * osuttu.kerroin.Value * osuttu.kerroin.Value / 8000)); 
    274357            //osuttu.Hit(pelaaja.Velocity * osuttu.kerroin.Value / 100.0); 
    275358            //osuttu.Hit(pelaaja.Velocity * osuttu.kerroin.Value / 80.0 + new Vector (osuttu.kerroin.Value / 80.0, osuttu.kerroin.Value / 80.0)); 
    276359            //osuttu.Hit((pelaaja.Velocity * osuttu.kerroin.Value / 100.0)*(pelaaja.Velocity * osuttu.kerroin.Value / 100.0)); 
    277360            pelaaja.Stop(); 
    278              
    279             ((Label)osuttu.Objects[0]).TextColor = Color.Lerp(Color.White, Color.Red, (osuttu.kerroin.Value - 100) / 200.0); 
     361 
     362            List<GameObject> lapsiLabelit = osuttu.Objects.FindAll(o => o is Label); 
     363            ((Label)lapsiLabelit[0]).TextColor = Color.Lerp(Color.White, Color.Red, (osuttu.kerroin.Value - 100) / 200.0); 
    280364 
    281365            Timer.SingleShot(0.05, () => osuttu.osunut = false); 
     
    290374        pelaaja.Add(kerroinarvo); 
    291375 
    292     } 
    293     void Luoeste(Image kuva, string esteennimi) 
    294     { 
    295  
    296         Image dandy = LoadImage("Dandelion"); 
    297  
    298         PhysicsObject este = new PhysicsObject(766, 224); 
     376 
     377 
     378    } 
     379    void Luoeste(Image kuva, double X, double Y, string esteennimi, double nopeus, Animation anim = null) 
     380    { 
     381 
     382        PhysicsObject este = new PhysicsObject(X, Y); 
    299383        este.Image = kuva; 
    300         este.Shape = Shape.FromImage(dandy); 
     384        este.Shape = Shape.FromImage(kuva); 
     385        este.CollisionIgnoreGroup = 1; 
    301386        string[] tags = new string[2]; 
    302387        tags[0] = "obs"; 
     
    304389        este.Tag = tags; 
    305390 
    306  
    307  
    308         Vector vektori1 = new Vector(RandomGen.NextDouble(Level.Right, Level.Right + 300), RandomGen.NextDouble(Level.Bottom, Level.Top)); 
    309         Vector vektori2 = new Vector(RandomGen.NextDouble(Level.Left - 300, Level.Left), RandomGen.NextDouble(Level.Bottom, Level.Top)); 
    310         Vector vektori3 = new Vector(RandomGen.NextDouble(Level.Left - 300, Level.Right + 300), RandomGen.NextDouble(Level.Top, Level.Top + 300)); 
     391        if (anim != null) 
     392        { 
     393            este.Animation = anim; 
     394        } 
     395 
     396 
     397        //este.AbsoluteAngle = Angle.FromDegrees(); 
     398 
     399        Vector vektori1 = new Vector(RandomGen.NextDouble(tausta.Right, tausta.Right), RandomGen.NextDouble(tausta.Bottom, tausta.Top)); 
     400        Vector vektori2 = new Vector(RandomGen.NextDouble(tausta.Left - 200, tausta.Left - 200), RandomGen.NextDouble(tausta.Bottom, tausta.Top)); 
     401        Vector vektori3 = new Vector(RandomGen.NextDouble(tausta.Left, tausta.Right), RandomGen.NextDouble(tausta.Top, tausta.Top + 200)); 
     402        Vector vektori4 = new Vector(RandomGen.NextDouble(tausta.Left, tausta.Right), RandomGen.NextDouble(tausta.Bottom, tausta.Bottom + 200)); 
    311403 
    312404        int vektorinumero; 
    313         vektorinumero = RandomGen.NextInt(1, 4); 
     405        vektorinumero = RandomGen.NextInt(1, 5); 
    314406 
    315407        if (vektorinumero == 1) 
    316408        { 
    317409            este.Position = vektori1; 
     410            este.AbsoluteAngle = Angle.FromDegrees(180); 
     411            este.Hit(new Vector(-1000, 0)); 
    318412        } 
    319413        else 
     
    322416            { 
    323417                este.Position = vektori2; 
     418                este.AbsoluteAngle = Angle.FromDegrees(0); 
     419                este.Hit(new Vector(1000, 0)); 
     420            } 
     421            else if (vektorinumero == 3) 
     422            { 
     423                este.Position = vektori3; 
     424                este.AbsoluteAngle = Angle.FromDegrees(270); 
     425                este.Hit(new Vector(0, -1000)); 
    324426            } 
    325427            else 
    326428            { 
    327                 este.Position = vektori3; 
     429                este.Position = vektori4; 
     430                este.AbsoluteAngle = Angle.FromDegrees(90); 
     431                este.Hit(new Vector(0, 1000)); 
    328432            } 
    329433        } 
    330         
     434        Add(este); 
     435    } 
     436    void Osuma(PhysicsObject uhri, PhysicsObject obstaakkeli) 
     437    { 
     438        Pelaaja pelaaja = uhri as Pelaaja; 
     439        PhysicsObject este = obstaakkeli as PhysicsObject; 
     440 
     441        string[] tags = obstaakkeli.Tag as string[]; 
     442        if (tags == null) return; 
     443 
     444        if (tags[1] == "dandy") 
     445        { 
     446            pelaaja.kerroin.Value += 25; 
     447            obstaakkeli.Destroy(); 
     448 
     449        } 
    331450    } 
    332451 
Note: See TracChangeset for help on using the changeset viewer.