2015-10-11 4 views
0

Так Im делая тетрис, и я не знаю, как рисовать блоки (L, I, Z и т.д.) У меня есть один блок как Texture2D и каждый класс для блоков выглядят следующим образом:как рисовать блоки для тетриса

namespace Tetris 
{ 
    public class ZBlock 
    { 
     Color Color; 
     const int x = 4; 
     const int y = 4; 
     bool[,] vorm; 

     public bool[,] zblock() 
     { 
      vorm = new bool[x, y]; 
      for(int i=0; i< x; i++) 
       for (int j=0; j<y; j++) 
       { 
        vorm[i, j] = false; 
        vorm[0, 0] = true; 
        vorm[1, 0] = true; 
        vorm[1, 1] = true; 
        vorm[2, 1] = true; 
       } 

      Color = Color.Purple; 
      return vorm; 
     } 
    } 

и это класс блок:

namespace Tetris 
{ 
    public class Block 
    { 
     Texture2D block; 
     Vector2 BlockPosition = new Vector2(30, 30); 
     float FallTimer; 
     Random Random = new Random(); 

     ZBlock zBlock = new ZBlock(); 
     TBlock tBlock = new TBlock(); 
     SBlock sBlock = new SBlock(); 
     OBlock oBlock = new OBlock(); 
     JBlock jBlock = new JBlock(); 
     LBlock lBlock = new LBlock(); 
     IBlock iblock = new IBlock(); 
     public bool[,] blockvorm() 
     { 
      bool[,] vorm; 
      vorm = new bool[4, 4]; 
      vorm[3, 3] = false; 
      int r = Random.Next(7); 
      if (r == 0) 
      { 
       ZBlock.zblock(); 
      } 
      else if (r == 1) 
      { 
       TBlock.tblock(); 
      } 
      else if (r == 2) 
      { 
       SBlock.sblock(); 
      } 
      else if (r == 3) 
      { 
       OBlock.oblock(); 
      } 
      else if (r == 4) 
      { 
       JBlock.jblock(); 
      } 
      else if (r == 5) 
      { 
       LBlock.lblock(); 
      } 
      else if (r == 6) 
      { 
       IBlock.iblock(); 
      } 

      return vorm; 
     } 

     public TBlock TBlock 
     { 
      get { return tBlock; } 
     } 
     public ZBlock ZBlock 
     { 
      get { return zBlock; } 
     } 
     public SBlock SBlock 
     { 
      get { return sBlock; } 
     } 
     public OBlock OBlock 
     { 
      get { return oBlock; } 
     } 
     public JBlock JBlock 
     { 
      get { return jBlock; } 
     } 
     public LBlock LBlock 
     { 
      get { return lBlock; } 
     } 
     public IBlock IBlock 
     { 
      get { return iblock; } 
     } 

     public void Draw(GameTime gameTime, SpriteBatch spriteBatch, ContentManager Content) 
     { 
      block = Content.Load<Texture2D>("Block"); 
      int[,] Grid = Tetris.GameWorld.TetrisGrid; 
      spriteBatch.Begin(); 
      spriteBatch.Draw(?????????????); 
      spriteBatch.End(); 
     } 

Так что проблема: я не знаю, как сделать эти блоки (я знаю, как сделать один блок, но я хочу полные из них). Я подумал, может быть, ZBlock.vorm или ZBLock.zblock, но оба дают ошибки.

Кто-нибудь знает, как нарисовать блоки?

+0

Вы используете xna? – Cjen1

+0

Да, я использую XNA –

+0

Я действительно борюсь с классами и подклассами –

ответ

0

Хорошо, так что вот частичный ответ. То, что вы хотите сделать, в основном просто нарисовать каждый блок с определенным смещением от следующего блока, равным: blockWidth/2 в пикселях. Это означает, что блоки будут правильно ориентированы без перекрытия.

Вот что вы должны подать заявление ничьей:

public void Draw(int theXPosition, int theYPosition, Color theColor, SpriteBatch theSpriteBatch, Texture2D theBlockTexture) 
{ 
    int aTextureStartX = Color * Convert.ToInt32(mBlockSize); 
    for (int aBlock = 0; aBlock < mNumberOfBlocks; aBlock++) 
    { 
      int aXPosition = (int)(theXPosition + (CurrentShape[Rotation, aBlock, 0] * mBlockSize)); 
      int aYPosition = (int)(theYPosition + (CurrentShape[Rotation, aBlock, 1] * mBlockSize)); 
      theSpriteBatch.Draw(theBlockTexture, new Rectangle(aXPosition, aYPosition, mBlockSize, mBlockSize), new Rectangle(aTextureStartX, 0, mBlockSize, mBlockSize), 
    } 
} 

Это из блога: http://www.xnadevelopment.com/tutorials/fallingblocksyoumovetomakelines/fallingblocksyoumovetomakelines.shtml

Исходный код находится в верхней части страницы.

 Смежные вопросы

  • Нет связанных вопросов^_^