2016-04-12 17 views
0

im şu anda küçük bir oyun geliştirmek ve sadece duvarlar olarak bazı bloklar var, ben gerçekten otomatik döşeme uygulamak istiyorum. Ama bunu nasıl yapmalı? Bunun için herhangi bir öğretici buldum, sadece bir oyuncu için, ama bu java üzerinde çalışmıyorum:/Java/Libgdx otomatik karo

Zaten bir bloğun komşusunu bulmaya çalıştım, onun tarzını değiştirdim, ama aynı zamanda Köşedeki komşuları mı arıyorsun? Bu doğru mu ?

Böyle bir tamircinin nasıl uygulanacağı konusunda bir fikri olan var mı? :)

------------- DÜZENLEME --------------

Yani, hasta wiki baktı ve bazı öğreticiler Ze Rubeus, bu çözülecek düşündük ama sol bir sorun gidecekseniz:

Wall problem

çalışıyor, bir blok başka dokunuyor, ama yakında dört blok blok var gibi o alışkanlık artık işe. Normalde, bir blok bir sağ komşu tarafından çevrelenmiş, sağdaki ve bir altta, sağ ve sol alt köşesi de vardır, başka bir resim çizmesi gerekir, soldaki ve sağdaki kısımda görebilirsiniz. yol, değer 2 bir duvardır.

//------------------------------------------------------------------ 
        //--------------------Checking for all sides------------------------ 
        //------------------------------------------------------------------ 

        // got an under neighbour 
        directions[2] = copyOfMap[((int) y)-1][(int) x] == 2; 

        // got an upper neighbour 
        directions[0] = copyOfMap[((int) y)+1][(int) x] == 2; 

        // got an left neighbour 
        directions[1] = copyOfMap[((int) y)][(int) x-1] == 2; 

        // got an right neighbour 
        directions[3] = copyOfMap[((int) y)][(int) x+1] == 2; 

        //------------------------------------------------------------------ 
        //--------------------Checking for corners-------------------------- 
        //------------------------------------------------------------------ 


        corners[0] = copyOfMap[y-1][x+1] == 2 ; 

        corners[2] = copyOfMap[y-1][x-1] == 2; 

        corners[3] = copyOfMap[y+1][x-1] == 2; 

        corners[1] = copyOfMap[y+1][x+1] == 2; 





        // Right 
        if(directions[3]){ 

         if(directions[2]){ 

          if(directions[1] && corners[1] && corners[3]){ 

           region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
           region.setRegion(32, 0, 32, 32); 

           wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 


          } 
          else{ 
           region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
           region.setRegion(0, 0, 32, 32); 

           wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 
          } 

         } 
         else if(directions[0]){ 

          region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
          region.setRegion(0, 64, 32, 32); 

          wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 

         } 
         else{ 

          region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
          region.setRegion(32, 0, 32, 32); 

          wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 

         } 
        } 





        // Left 
        else if(directions[1]){ 

         if(directions[2]){ 

          if(directions[3] && corners[1] && corners[3]){ 

           region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
           region.setRegion(32, 0, 32, 32); 

           wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 


          } 
          else{ 
           region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
           region.setRegion(128, 0, 32, 32); 

           wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 
          } 

         } 
         else if(directions[0]){ 

          region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
          region.setRegion(128, 32, 32, 32); 

          wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 

         } 
         else{ 
          region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
          region.setRegion(32, 0, 32, 32); 

          wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 
         } 

        } 





        // Up 
        else if(directions[0]){ 

         if(corners[2]){ 

          region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
          region.setRegion(0, 32, 32, 32); 

          wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 

         } 
         else if(corners[3]){ 

          region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
          region.setRegion(0, 32, 32, 32); 

          wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 

         } 
         else{ 
          region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
          region.setRegion(0, 32, 32, 32); 

          wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 
         } 

        } 





        // Down 
        else if(directions[2]){ 


         region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
         region.setRegion(0, 32, 32, 32); 

         wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 


        }      

açıkça yazdım, bu yüzden sadece wallLayer.add ve doku şeyler görmezden :) bakabilecegini eğer iyi olurdu: Burada ben bunu yaptık.

yerine bu tarz şeyleri yapmak için Owen bir algoritma uygulamak zorunda, sizin için fayans üretmek otomatik bir özellik yok harika bir gün ^^

+0

Bu, bunu yapan ve Java'da yazılmış olan Minicraft adlı bir oyun sıkışması oyunu var. Fikir almak için kaynak kodunu araştırabilirsin. – Tenfour04

+0

Cevabınız için teşekkürler :) Zaten yaptınız, ama Notch bunu biraz karmaşık hale getirdi – genaray

+0

Herhangi biri bir fikriniz var mı? – genaray

cevap

1

Libgdx var.

Ben de burada LIBGDX için uygulayabileceğiniz bir Procedurally Oluşturulan Zindan Mağarası Sistemini Oluşturmak için nasıl bir programmatically generates tilemap sağlayan exemple ve here bir ızgara Tutoriel, sen resmi WIKI içinde this bölümünü okuyun düşündürmektedir.

+0

Hızlı cevabınız için teşekkürler :) Cevabımı güncelledim, koduma bakabilirseniz çok mutlu olurum ^^ - – genaray

İlgili konular