Ignore:
Timestamp:
2011-06-16 15:08:46 (8 years ago)
Author:
veilhalo
Message:
 
Location:
2011/24/VeikkaH/Pallopeli/Pallopeli
Files:
6 added
2 edited

Legend:

Unmodified
Added
Removed
  • 2011/24/VeikkaH/Pallopeli/Pallopeli/Pallopeli/Peli.cs

    r2023 r2054  
    77using Jypeli.Widgets; 
    88 
     9// 
     10// 
     11//lifetime event 
     12// 
     13// 
    914public class Peli : PhysicsGame 
    1015{ 
    11     SoundEffect maali = LoadSoundEffect("maali"); 
     16    /* 
     17    Äänet: maali, keraa, syo 
     18     */ 
     19    #region esittelyt 
     20    SoundEffect tahtiAani = LoadSoundEffect("maali"); 
     21    SoundEffect keraaAani = LoadSoundEffect("keraa"); 
     22    SoundEffect syoAani = LoadSoundEffect("syo"); 
     23 
    1224    Image hahmoKuva = LoadImage("hahmo"); 
    1325    Image hahmo2Kuva = LoadImage("hahmo2"); 
    1426    Image palloKuva = LoadImage("pallo"); 
    1527    Image tahtiKuva = LoadImage("tahti"); 
     28    Image kuutioKuva = LoadImage("kuutio"); 
     29    Image eriKuutioKuva = LoadImage("erikuutio"); 
     30    Image eriStopKuva = LoadImage("eristop"); 
     31 
    1632    double alkuLiike = 1; 
     33    int palloLaskuri = 1; 
     34    bool onKuutioita = false; 
     35 
     36    Timer kuutioAika = new Timer(); 
     37 
    1738    PhysicsObject hahmo; 
     39    PhysicsObject taulu; 
     40    PhysicsObject kuutio; 
     41 
    1842    IntMeter pisteLaskuri; 
     43 
     44    FollowerBrain kuutionAivot = new FollowerBrain(); 
     45 
     46    List<PhysicsObject> pallot = new List<PhysicsObject>(); 
     47    List<PhysicsObject> kaikki = new List<PhysicsObject>(); 
     48    List<Label> valikonKohdat; 
     49    #endregion 
    1950 
    2051    public override void Begin() 
     
    2253        IsFullScreen = true; 
    2354        Level.CreateBorders(1, true); 
     55        Level.Height -= 60; 
    2456        Camera.ZoomToLevel(); 
    2557        Level.BackgroundColor = Color.Black; 
    2658        MessageDisplay.TextColor = Color.White; 
     59        luoTaulu(); 
    2760        luoHahmo(); 
    28         LuoLaskuri(); 
    29         for (int i = 0; i < 1000; i++) 
    30         { 
    31             //luoPallo(); 
     61        luoLaskuri(); 
     62        for (int i = 0; i < 100; i++) 
     63        { 
     64            luoPallo(); 
    3265            luoTahti(); 
    3366        } 
     67        for (int k = 0; k < 1; k++) 
     68        { 
     69            luoErikoisuus("kuutio"); 
     70            luoErikoisuus("stop"); 
     71        } 
    3472        pisteLaskuri.Reset(); 
    35     } 
    36     void LuoLaskuri() 
    37     { 
    38  
     73        Valikko(); 
     74    } 
     75    void luoLaskuri() 
     76    { 
    3977        pisteLaskuri = new IntMeter(0); 
    4078        pisteLaskuri.MaxValue = 100; 
     
    4785        pisteNaytto.HorizontalAlignment = HorizontalAlignment.Left; 
    4886        pisteNaytto.Title = "Pisteet"; 
    49  
    5087        pisteNaytto.BindTo(pisteLaskuri); 
    5188        Add(pisteNaytto); 
    52  
    53         PhysicsObject tietoPohja; 
    54         tietoPohja = PhysicsObject.CreateStaticObject(100, 30); 
    55         tietoPohja.Restitution = 1; 
    56         tietoPohja.KineticFriction = 0; 
    57         tietoPohja.X = 0; 
    58         tietoPohja.Y = Level.Bottom + 15; 
    59         tietoPohja.Color = Color.Aqua; 
    60         Add(tietoPohja); 
    6189    } 
    6290    void tahdetKeratty(int arvo) 
    6391    { 
    64         MessageDisplay.Add("Voitit pelin!"); 
     92        Widget voitto = new Widget(100, 100, Shape.Circle); 
     93        Add (voitto); 
     94        Label voitit = new Label("Voitit!"); 
     95        Add(voitit); 
    6596    } 
    6697    void luoPallo() 
     
    6899        PhysicsObject pallo; 
    69100        pallo = new PhysicsObject(RandomGen.NextDouble(10, 100), RandomGen.NextDouble(10, 100), Shape.Circle, CollisionShapeQuality.Best); 
    70         pallo.X = RandomGen.NextDouble(Level.Left, Level.Right); 
    71         pallo.Y = RandomGen.NextDouble(Level.Bottom, Level.Top); 
     101        pallo.X = RandomGen.NextDouble(Level.Left + pallo.Width, Level.Right - pallo.Width); 
     102        pallo.Y = RandomGen.NextDouble(Level.Bottom + pallo.Height, Level.Top - pallo.Height); 
    72103        pallo.Restitution = 1; 
    73104        pallo.KineticFriction = 0; 
    74105        pallo.Color = Color.Red; 
    75106        pallo.Image = palloKuva; 
     107        pallo.Tag = "pallo" + palloLaskuri; 
    76108        Add(pallo); 
    77109        pallo.Hit((new Vector(RandomGen.NextDouble(-1, 1), RandomGen.NextDouble(-1, 1)).Normalize()) * RandomGen.NextDouble(0, alkuLiike * 1000)); 
     110        palloLaskuri++; 
     111        pallot.Add(pallo); 
     112        kaikki.Add(pallo); 
    78113    } 
    79114    void luoTahti() 
     
    81116        PhysicsObject tahti; 
    82117        tahti = new PhysicsObject(10, 10); 
    83         tahti.X = RandomGen.NextDouble(Level.Left, Level.Right); 
    84         tahti.Y = RandomGen.NextDouble(Level.Bottom, Level.Top); 
     118        tahti.X = RandomGen.NextDouble(Level.Left + tahti.Width, Level.Right - tahti.Width); 
     119        tahti.Y = RandomGen.NextDouble(Level.Bottom + tahti.Height, Level.Top - tahti.Height); 
    85120        tahti.Restitution = 1; 
    86121        tahti.KineticFriction = 0; 
     
    90125        tahti.Mass = 0.1; 
    91126        Add(tahti); 
     127        kaikki.Add(tahti); 
    92128    } 
    93129    void luoHahmo() 
    94130    { 
    95         hahmo = new PhysicsObject(50, 50, Shape.Circle); 
     131        hahmo = new PhysicsObject(50, 50, Shape.Circle, CollisionShapeQuality.Best); 
    96132        hahmo.X = 0; 
    97133        hahmo.Y = 0; 
     
    124160        Keyboard.Listen(Key.D1, ButtonState.Pressed, aseta, "Liiku vasemmalle", hahmo, vasemmalle); 
    125161        } 
     162    void luoErikoisuus(string tyyppi) 
     163    { 
     164        if (tyyppi == "kuutio") 
     165        { 
     166            PhysicsObject eriKuutio; 
     167            eriKuutio = new PhysicsObject(50, 50); 
     168            eriKuutio.X = RandomGen.NextDouble(Level.Left + eriKuutio.Width, Level.Right - eriKuutio.Width); 
     169            eriKuutio.Y = RandomGen.NextDouble(Level.Bottom + eriKuutio.Height, Level.Top - eriKuutio.Height); 
     170            eriKuutio.Restitution = 1; 
     171            eriKuutio.KineticFriction = 0; 
     172            eriKuutio.Color = Color.Cyan; 
     173            eriKuutio.Image = eriKuutioKuva; 
     174            eriKuutio.Tag = "erikuutio"; 
     175            eriKuutio.Mass = 0.1; 
     176            Add(eriKuutio); 
     177            kaikki.Add(eriKuutio); 
     178        } 
     179        else if (tyyppi == "stop") 
     180        { 
     181            PhysicsObject eriStop; 
     182            eriStop = new PhysicsObject(50, 50); 
     183            eriStop.X = RandomGen.NextDouble(Level.Left + eriStop.Width, Level.Right - eriStop.Width); 
     184            eriStop.Y = RandomGen.NextDouble(Level.Bottom + eriStop.Height, Level.Top - eriStop.Height); 
     185            eriStop.Restitution = 1; 
     186            eriStop.KineticFriction = 0; 
     187            eriStop.Color = Color.Red; 
     188            eriStop.Image = eriStopKuva; 
     189            eriStop.Tag = "eristop"; 
     190            eriStop.Mass = 0.1; 
     191            Add(eriStop); 
     192            kaikki.Add(eriStop); 
     193        } 
     194    } 
     195    void luoKuutio() 
     196    { 
     197        onKuutioita = true; 
     198        kuutio = new PhysicsObject(100, 100, Shape.Rectangle, CollisionShapeQuality.Best); 
     199        kuutio.X = RandomGen.NextDouble(Level.Left + kuutio.Width, Level.Right - kuutio.Width); 
     200        kuutio.Y = RandomGen.NextDouble(Level.Bottom + kuutio.Height, Level.Top - kuutio.Height); 
     201        kuutio.Restitution = 1; 
     202        kuutio.KineticFriction = 0; 
     203        kuutio.Color = Color.Cyan; 
     204        kuutio.Image = kuutioKuva; 
     205        kuutio.Mass *= 10; 
     206        kuutio.Brain = kuutionAivot; 
     207        kuutionAivot.Active = true; 
     208        kuutio.MaximumLifetime = new TimeSpan(0, 0, 30);//Huom. 
     209        kuutioAika.Interval = 30;                       //30 ja 30 samoiksi!!!!! 
     210        kuutionAivot.Speed *= 20; 
     211        uusiKohde(); 
     212 
     213        AddCollisionHandler(kuutio, syo); 
     214        Add(kuutio); 
     215    } 
     216    void poistaKuutio() 
     217    { 
     218         
     219    } 
    126220    void aseta (PhysicsObject hahmoAseta, Vector liike2) 
    127221    { 
     
    131225    { 
    132226        bool alhaalla = false; 
    133         if (Keyboard.GetKeyState(Key.Up) == ButtonState.Down || 
    134             Keyboard.GetKeyState(Key.Down) == ButtonState.Down || 
    135             Keyboard.GetKeyState(Key.Left) == ButtonState.Down || 
    136             Keyboard.GetKeyState(Key.Right) == ButtonState.Down) 
    137         { 
    138             alhaalla = true; 
    139         } 
    140         if ((kohde.Tag.ToString() == "tahti") && (alhaalla == true)) 
    141         { 
    142             maali.Play(); 
    143             MessageDisplay.Add("Keräsit tähden!"); 
    144             kohde.Destroy(); 
    145             pisteLaskuri.Value++; 
    146         } 
     227 
     228        switch (kohde.Tag.ToString()) 
     229        { 
     230            case "tahti": 
     231 
     232                if (Keyboard.GetKeyState(Key.Up) == ButtonState.Down || 
     233                    Keyboard.GetKeyState(Key.Down) == ButtonState.Down || 
     234                    Keyboard.GetKeyState(Key.Left) == ButtonState.Down || 
     235                    Keyboard.GetKeyState(Key.Right) == ButtonState.Down) 
     236                { 
     237                    alhaalla = true; 
     238                } 
     239                else 
     240                { 
     241                    alhaalla = false; 
     242                } 
     243 
     244                if (alhaalla == true) 
     245                { 
     246                    tahtiAani.Play(); 
     247                    kohde.Destroy(); 
     248                    pisteLaskuri.Value++; 
     249                } 
     250                break; 
     251 
     252            case "erikuutio": 
     253 
     254                if (onKuutioita == false) 
     255                { 
     256                    //keraaAani.Play(); 
     257                    kohde.Destroy(); 
     258                    luoKuutio(); 
     259                    return; 
     260                } 
     261                else 
     262                { 
     263                    MessageDisplay.Add("Odota ensin edellisen Rohmukuution poistumista"); 
     264                } 
     265                break; 
     266            case "eristop": 
     267                foreach (PhysicsObject kaikkiOb in kaikki) 
     268                { 
     269                    kaikkiOb.Stop(); 
     270                } 
     271                kohde.Destroy(); 
     272                break; 
     273            default: 
     274                break; 
     275        } 
     276    } 
     277    void luoTaulu () 
     278    { 
     279        taulu = PhysicsObject.CreateStaticObject(Level.Width, 30, Shape.Rectangle, CollisionShapeQuality.Best); 
     280        taulu.Restitution = 1; 
     281        taulu.KineticFriction = 0; 
     282        taulu.X = 0; 
     283        taulu.Y = Level.Bottom - 15; 
     284        taulu.Color = Color.DarkGray; 
     285        Add(taulu); 
     286    } 
     287    void syo(PhysicsObject kuutio, PhysicsObject ruoka) 
     288    { 
     289        if ((ruoka == kuutionAivot.Target)) 
     290        { 
     291            //syoAani.Play(); 
     292            ruoka.Destroy(); 
     293            uusiKohde(); 
     294        } 
     295    } 
     296    void uusiKohde() 
     297    { 
     298        if (pallot.Count == 0) 
     299        { 
     300            kuutio.Destroy(); 
     301            onKuutioita = false; 
     302            return; 
     303        } 
     304        kuutionAivot.Target = pallot[pallot.Count - 1]; 
     305        pallot.RemoveAt(pallot.Count - 1); 
     306    } 
     307    void Valikko() 
     308    { 
     309        /* 
     310        ClearAll(); 
     311        valikonKohdat = new List<Label>(); 
     312 
     313        Label kohta1 = new Label("Pelaa"); 
     314        kohta1.Position = new Vector(0, 40); 
     315        valikonKohdat.Add(kohta1); 
     316 
     317        Label kohta2 = new Label("Lopeta"); 
     318        kohta2.Position = new Vector(0, -40); 
     319        valikonKohdat.Add(kohta2); 
     320 
     321        foreach (Label valikonKohta in valikonKohdat) 
     322        { 
     323            Add(valikonKohta); 
     324        } 
     325 
     326        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null); 
     327        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null); 
     328 
     329        Mouse.IsCursorVisible = true; 
     330        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null); 
     331        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, ""); 
     332        */ 
    147333    } 
    148334} 
  • 2011/24/VeikkaH/Pallopeli/Pallopeli/PallopeliContent/PallopeliContent.contentproj

    r2023 r2054  
    7171    </Compile> 
    7272  </ItemGroup> 
     73  <ItemGroup> 
     74    <Compile Include="kuutio.png"> 
     75      <Name>kuutio</Name> 
     76      <Importer>TextureImporter</Importer> 
     77      <Processor>TextureProcessor</Processor> 
     78    </Compile> 
     79  </ItemGroup> 
     80  <ItemGroup> 
     81    <Compile Include="erikuutio.png"> 
     82      <Name>erikuutio</Name> 
     83      <Importer>TextureImporter</Importer> 
     84      <Processor>TextureProcessor</Processor> 
     85    </Compile> 
     86  </ItemGroup> 
     87  <ItemGroup> 
     88    <Compile Include="eristop.png"> 
     89      <Name>eristop</Name> 
     90      <Importer>TextureImporter</Importer> 
     91      <Processor>TextureProcessor</Processor> 
     92    </Compile> 
     93  </ItemGroup> 
    7394  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 
    7495  <!--  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.