Changeset 5403


Ignore:
Timestamp:
2014-07-04 10:17:34 (5 years ago)
Author:
jumaalku
Message:
 
Location:
2014/27/JuhanaK/Avaruuspeli
Files:
1 deleted
8 edited

Legend:

Unmodified
Added
Removed
  • 2014/27/JuhanaK/Avaruuspeli/Avaruuspeli/Avaruuspeli/Avaruuspeli.cs

    r5380 r5403  
    6060} 
    6161 
     62class Tykki : GameObject 
     63{ 
     64    public int taso = 1; 
     65    public AssaultRifle ase; 
     66    public Tykki(double leveys, double korkeus) 
     67        : base(leveys, korkeus) 
     68    { 
     69 
     70 
     71    } 
     72 
     73} 
     74 
    6275public class Avaruuspeli : PhysicsGame 
    6376{ 
     
    90103    Image monsteri = LoadImage("Monsteri"); 
    91104    Image flamerkuva= LoadImage("Flamer"); 
     105    Image Estekuva = LoadImage("Este"); 
     106    Image Automaattikuva = LoadImage("Automaattitykki"); 
    92107 
    93108    Image Robo = LoadImage("Robot"); 
     
    100115    Inventory inventory; 
    101116 
     117    List<PushButton> painonapit = new List<PushButton>(); 
     118    Label menuHelperNaytto; 
     119    private GameObject seurattava; 
     120    bool ollaanRakentamassa = false; 
     121 
     122    PushButton menuNappi; 
     123 
    102124    public override void Begin() 
    103125    { 
     126        IsMouseVisible = true; 
    104127        MediaPlayer.Play("musiikki"); 
    105128        MediaPlayer.IsRepeating = true; 
     
    114137        alkuValikko.AddItemHandler(2, Exit); 
    115138    } 
     139 
     140    void HiirenLiikutus(AnalogState tila) 
     141    { 
     142        if (ollaanRakentamassa) 
     143        { 
     144            seurattava.Position = Mouse.PositionOnWorld; 
     145        } 
     146    } 
     147 
     148    void HiirenKlikkaus() 
     149    { 
     150        if (ollaanRakentamassa) 
     151        { 
     152            AssaultRifle ase = new AssaultRifle(30, 30); 
     153            ase.IsVisible = false; 
     154            ase.FireRate = 2; 
     155            ase.ProjectileCollision = AmmusOsui; 
     156            //seurattava.Add(ase); 
     157            seurattava.IsVisible = false; 
     158            PhysicsObject tykki = PhysicsObject.CreateStaticObject(100, 100); 
     159            tykki.Image = seurattava.Image; 
     160            tykki.Position = seurattava.Position; 
     161            Add(tykki); 
     162            tykki.Add(ase); 
     163            (seurattava as Tykki).ase = ase; 
     164            Timer ajastin = new Timer(); 
     165            ajastin.Interval = 0.01; 
     166            ajastin.Timeout += delegate 
     167            { 
     168                List<GameObject> vihut = GetObjectsWithTag("vihollinen"); 
     169                //var vihut = vihulista; 
     170                if (vihut == null || vihut.Count == 0) return; 
     171 
     172                double etäisyys = Vector.Distance(ase.AbsolutePosition, vihut[0].Position); 
     173                if (etäisyys > 300) return; 
     174 
     175                //vihut.Sort((a, b) => Vector.Distance(a.Position, ase.AbsolutePosition) > Vector.Distance(b.Position, ase.AbsolutePosition) ? 1 : -1); 
     176                vihut.Sort((a, b) => JarjestaVihut(ase, a, b)); 
     177                ase.Angle = (vihut[0].Position - ase.AbsolutePosition).Angle; 
     178                PhysicsObject ammus = ase.Shoot(); 
     179 
     180                if (ammus != null) 
     181                { 
     182                    ammus.Size *= 0.5; 
     183                    //ammus.Image = cannonballKuva; 
     184                    ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0); 
     185                    //Tykki.Play(); 
     186                } 
     187            }; 
     188            ajastin.Start(); 
     189 
     190            ollaanRakentamassa = false; 
     191            seurattava = null; 
     192        } 
     193        /* 
     194        else 
     195        { 
     196            List<Tykki> tornit = GetObjectsWithTag("torni").Cast<Tykki>().ToList(); 
     197            foreach (Tykki torni in tornit) 
     198            { 
     199                int hinta = 40 + 20 * torni.taso; 
     200                if (Mouse.IsCursorOn(torni) && torni.taso < Tornikuvat.Length) 
     201                { 
     202                    if (rahalaskuri.Value >= hinta) 
     203                    { 
     204 
     205 
     206                        torni.taso += 1; 
     207                        torni.ase.FireRate = 1 + torni.taso; 
     208                        rahalaskuri.Value -= hinta; 
     209                        torni.Image = Tornikuvat[torni.taso - 1]; 
     210                    } 
     211                    else 
     212                    { 
     213                        MessageDisplay.Add("Ei tarpeeksi rahaa. Päivitys maksaa " + hinta); 
     214 
     215                    } 
     216                } 
     217 
     218            } 
     219        } 
     220         */ 
     221    } 
     222 
     223    void AnnaRakennus(double leveys, double korkeus, int hinta, Image kuva) 
     224    { 
     225        if (ollaanRakentamassa) return; 
     226        if (hinta > pisteLaskuri.Value) { MessageDisplay.Add("Ei tarpeeksi pisteitä!"); return; } 
     227        pisteLaskuri.Value -= hinta; 
     228 
     229        Tykki talo = new Tykki(leveys, korkeus); 
     230        talo.Color = Color.Black; 
     231        talo.Image = kuva; 
     232        talo.Position = Mouse.PositionOnScreen; 
     233        talo.Tag = "torni"; 
     234        ollaanRakentamassa = true; 
     235        seurattava = talo; 
     236        Add(talo, 3); 
     237 
     238    } 
     239  //  void LuoRakennus(double leveys, double korkeus, int hinta, Image kuva) 
     240    { 
     241   //     if (ollaanRakentamassa) return; 
     242    //    if (hinta > pisteLaskuri.Value) { MessageDisplay.Add("Ei tarpeeksi pisteitä!"); return; } 
     243    //    pisteLaskuri.Value -= hinta; 
     244 
     245     //   Tykki talo = new Tykki(leveys, korkeus); 
     246    //    talo.Color = Color.Black; 
     247     //   talo.Image = kuva; 
     248      //  talo.Position = Mouse.PositionOnScreen; 
     249     //   talo.Tag = "Tykki"; 
     250      //  ollaanRakentamassa = true; 
     251     //   seurattava = talo; 
     252       // Add(talo, 3); 
     253 
     254    } 
     255    int JarjestaVihut(AssaultRifle ase, GameObject a, GameObject b) 
     256    { 
     257        if (a == null || b == null) return 0; 
     258        return Vector.Distance(a.Position, ase.AbsolutePosition) > Vector.Distance(b.Position, ase.AbsolutePosition) ? 1 : -1; 
     259    } 
     260 
     261    void LuoTorniNappula(Vector paikka, double leveys, double korkeus, Image rakennusKuva, int hinta, int rakennusKoko) 
     262    { 
     263        menuNappi = new PushButton(leveys * 2, korkeus * 2, flamerkuva); 
     264        menuNappi.Position = new Vector(0, (Screen.Bottom + 30)); 
     265        menuNappi.Clicked += new Action(() => AnnaRakennus(rakennusKoko, rakennusKoko * 2, hinta, rakennusKuva)); 
     266        Add(menuNappi); 
     267        Mouse.ListenMovement(1.0, delegate 
     268} 
     269            if (Mouse.IsCursorOn(menuNappi)) 
     270            { 
     271                menuHelperNaytto.IsVisible = true; 
     272                menuHelperNaytto.Text = "Torni, " + hinta + " kultaa"; 
     273                menuHelperNaytto.Position = Mouse.PositionOnScreen + new Vector(menuHelperNaytto.Width / 2 + 10, 0); 
     274            } 
     275 
     276        }, null 
     277            ); 
     278    } 
     279 
    116280    void pelaajienvalinta() 
    117281    { 
     
    142306        LuoAaltoPalkki(); 
    143307        AaltoLoppui(); 
     308 
     309        LuoMenu(); 
     310        LuoTorniNappula(Vector.Zero, 50, 50, flamerkuva, 10, 50); 
     311        LuoTykkiNappula(Vector.Zero, 50, 50, Automaattikuva, 10, 50); 
    144312         
    145  
    146  
    147          
    148  
    149  
    150  
    151313        Camera.Follow(pelaaja1); 
    152314        Camera.ZoomFactor = 1.2; 
    153315        Camera.StayInLevel = true; 
     316 
     317        Mouse.ListenMovement(1.0, HiirenLiikutus, null); 
     318 
     319        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, HiirenKlikkaus, null); 
     320        Mouse.ListenMovement(1.0, delegate 
     321        { 
     322            if (!Mouse.IsCursorOn(menuNappi)) 
     323                menuHelperNaytto.IsVisible = false; 
     324 
     325        //    List<Torni> tornit = GetObjectsWithTag("torni").Cast<Torni>().ToList(); 
     326        //    foreach (Torni torni in tornit) 
     327        //    { 
     328        //        if (Mouse.IsCursorOn(torni)) 
     329        //        { 
     330        //            menuHelperNaytto.IsVisible = true; 
     331        //            menuHelperNaytto.Text = "Torni, " + torni.taso; 
     332        //            menuHelperNaytto.Position = Mouse.PositionOnScreen + new Vector(menuHelperNaytto.Width / 2 + 10, 0); 
     333        //        } 
     334        //    } 
     335        }, null); 
     336    } 
     337 
     338    void LuoMenu() 
     339    { 
     340        menuHelperNaytto = new Label(""); 
     341        menuHelperNaytto.XMargin = 7.0; 
     342        menuHelperNaytto.YMargin = 7.0; 
     343        menuHelperNaytto.Color = new Color(0, 0, 0, 100); 
     344        menuHelperNaytto.TextColor = Color.White; 
     345        menuHelperNaytto.IsVisible = false; 
     346        Add(menuHelperNaytto); 
    154347    } 
    155348 
     
    201394        pelaaja1.AnimWalk.FPS = 5; 
    202395 
    203         inventory = new Inventory(); 
    204         Add(inventory); 
     396        //inventory = new Inventory(); 
     397        //inventory.Y = Screen.Bottom+50; 
     398        //Add(inventory); 
     399 
     400        //inventory.AddItem(null, ); 
     401        //inventory.AddItem(null, flamerkuva); 
    205402 
    206403        pelaaja1.Weapon = new AssaultRifle(30, 10); 
     
    267464        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1); 
    268465 
     466        if (pelaaja2 != null) 
     467        { 
     468            Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus); 
     469            Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, nopeus); 
     470 
     471            Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus); 
     472            Keyboard.Listen(Key.LeftShift, ButtonState.Down, AmmuAseella, "Ammu", pelaaja2); 
     473        } 
     474 
    269475        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä"); 
    270476 
     
    291497    void Tormaaviholliseen(PhysicsObject hahmo, PhysicsObject vihollinen) 
    292498    { 
    293         elamaLaskuri.Value--; 
     499        if (hahmo == pelaaja1) 
     500        { 
     501            elamaLaskuri.Value--; 
     502        } 
     503        else 
     504        { 
     505            elamaLaskuri2.Value--; 
     506        } 
     507 
    294508        osumisaani.Play(); 
    295509    } 
     
    401615        elamaLaskuri2 = new DoubleMeter(20); 
    402616        elamaLaskuri2.MaxValue = 20; 
    403         elamaLaskuri2.LowerLimit += ElamaLoppui; 
     617        elamaLaskuri2.LowerLimit += ElamaLoppui2; 
    404618 
    405619        ProgressBar elamaPalkki = new ProgressBar(150, 20); 
     
    417631    } 
    418632 
     633    void ElamaLoppui2() 
     634    { 
     635        MessageDisplay.Add("Elämät loppuivat."); 
     636        pelaaja2.Destroy(); 
     637    } 
    419638 
    420639    IntMeter pisteLaskuri; 
     
    422641    void LuoPistelaskuri() 
    423642    { 
    424         pisteLaskuri = new IntMeter(0); 
     643        pisteLaskuri = new IntMeter(100); 
    425644 
    426645        Label pisteNaytto = new Label(); 
  • 2014/27/JuhanaK/Avaruuspeli/Avaruuspeli/Avaruuspeli/obj/x86/Debug/ContentPipeline-{5282F811-AB87-41EF-A580-9908C47A987D}.xml

    r5380 r5403  
    181181      <Options>None</Options> 
    182182      <Output>C:\MyTemp\JuhanaK\Avaruuspeli\Avaruuspeli\Avaruuspeli\bin\x86\Debug\Content\Flamer.xnb</Output> 
    183       <Time>2014-07-03T14:25:45.2429124+03:00</Time> 
     183      <Time>2014-07-04T10:01:31.0571207+03:00</Time> 
    184184    </Item> 
    185185    <Item> 
Note: See TracChangeset for help on using the changeset viewer.