ARRAY COM VARIAS LINHAS

KWIIBY 28/10/2011 18:49:43
#388050
Olá, eu estou planejando um jogo 2D em VB e para o mapa dele eu quero que carregue uma array com o seguinte formato:
map = {
0, 0, 0, 0, 1, 1, 0
1, 0, 0, 1, 0, 1, 0
0, 0, 1, 0, 2, 0, 0
0, 0, 1, 0, 1, 0, 0
}

cada vez que o jogador no caso da array que é identificado pelo número 2 se movimentar ele irá se movimentar na array ou não, sendo que 0 significa que pode passar e 1 que não pode, ou seja ele será bloqueado e continuará na mesma posição.
tem como fazer isso? que base eu poderia tomar?
GANDA.NICK 29/10/2011 10:56:43
#388076
Olá, coloca 1 picture box bem grande no ser form

Já tinha aqui feito algo parecido, só fiz umas alterações

Segue o CODE:


Option Explicit
Const iLimiteX = 20, iLimiteY = 20
Dim Map(1 To iLimiteX, 1 To iLimiteY), iJogX, iJogY As Integer

Private Sub FazerMapa()
Dim x, y As Integer
Randomize
[ô]Aproximadamente 2/3 de 0[ô]s e 1/3 de 1[ô]s
For y = 1 To iLimiteY
For x = 1 To iLimiteX
Map(x, y) = Int(Rnd * 3)
If Map(x, y) = 2 Then Map(x, y) = 0
Next [ô]x
Next [ô]y
Map(iLimiteX / 2, iLimiteY / 2) = 2 [ô]o 2 aparece no meio
End Sub


Private Sub Mover(ByVal Tecla As Integer)
[ô]*** 37 - Seta da Esquerda
[ô]*** 38 - Seta para Cima
[ô]*** 39 - Seta da Direita
[ô]*** 40 - Seta para Baixo
Select Case Tecla
Case 37:
If iJogX > 1 Then
If Map(iJogX - 1, iJogY) <> 1 Then
Map(iJogX - 1, iJogY) = 2
Map(iJogX, iJogY) = 0
iJogX = iJogX - 1
End If
End If
Case 38:
If iJogY > 1 Then
If Map(iJogX, iJogY - 1) <> 1 Then
Map(iJogX, iJogY - 1) = 2
Map(iJogX, iJogY) = 0
iJogY = iJogY - 1
End If
End If
Case 39:
If iJogX < iLimiteX Then
If Map(iJogX + 1, iJogY) <> 1 Then
Map(iJogX + 1, iJogY) = 2
Map(iJogX, iJogY) = 0
iJogX = iJogX + 1
End If
End If
Case 40:
If iJogY < iLimiteY Then
If Map(iJogX, iJogY + 1) <> 1 Then
Map(iJogX, iJogY + 1) = 2
Map(iJogX, iJogY) = 0
iJogY = iJogY + 1
End If
End If
End Select
Call ActualizarPos
End Sub

Private Sub ActualizarPos()
Dim x, y As Integer
Dim sLinha As String
sLinha = [Ô][Ô]
Picture1.Cls
For y = 1 To iLimiteY
For x = 1 To iLimiteX
sLinha = sLinha & Map(x, y) & [Ô] [Ô]
If Map(x, y) = 2 Then
iJogX = x
iJogY = y
End If
Next [ô]i2
Picture1.Print sLinha
sLinha = [Ô][Ô]
Next [ô]i
End Sub

Private Sub Form_KeyDown(keycode As Integer, Shift As Integer)
Call Mover(keycode)
End Sub

Private Sub Form_Load()
KeyPreview = True
Picture1.AutoRedraw = True
Picture1.FontName = [Ô]Lucida Console[Ô]
Call FazerMapa
Call ActualizarPos
End Sub



Seu [Ô]2[Ô] ira aparecer no meio do mapa.

Me fala do resto do jogo.

Espero que isto o ajude.
Tópico encerrado , respostas não são mais permitidas