1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

URGENTE- [VB] Como limpar Arrays

Discussão em 'Programação' iniciada por Dark_Fox, 28 de Março de 2008. (Respostas: 23; Visualizações: 6831)

  1. Dark_Fox

    Dark_Fox Power Member

    Perciso urgentemente de saber como limpar um Array, alguem sabe?? :eek:
     
  2. Armadillo

    Armadillo Folding Member

    redimensiona o vector (é á bruta :P)

    Código:
    redim vector(1)
    
    depois voltas a redimensionar para o valor original
     
  3. mOrSa

    mOrSa Power Member

    Será isto?
     
  4. Mavors

    Mavors Power Member

    Set Array = Nothing ?
     
  5. Armadillo

    Armadillo Folding Member

    questao essencial? qual a versao do vb?
     
  6. Dark_Fox

    Dark_Fox Power Member

    Mas como assim? soz a noobice :( (Visual Basic V6.0)

    Tá aqui o codigo:


    Private Sub Picture1_Click(Index As Integer)
    If lblrestantes.Caption = 0 Then
    MsgBox ("Ganhou")
    MsgBox ("Deseja tentar outra vez ?,vbYesNo, Confirmação")
    Else
    If lbltentativas = 0 Then
    If MsgBox("Perdeu, deseja tentar outra vez?", vbYesNo, "Confirmação") = vbYes Then

    aqui é que deve estar o codigo para limpar o array, de forma a reiniciar o jogo.

    Else
    End
    End If
    Else
    lbltentativas = lbltentativas - 1
    End If
    For i = 0 To 6
    If Index = Chave(i) Then
    Picture1(Index).Picture = LoadPicture("mina.jpg")
    lblrestantes.Caption = Val(lblrestantes.Caption) - 1
    End If
    Next
    If Picture1(i).Picture = LoadPicture("mina.jpg") Then
    ' lblrestantes.Caption = Val(lblrestantes.Caption) - 1
    End If
    End If
    End Sub




    Download do jogo que estou a criar (para tentarem perceber melhor a minha duvida): http://rapidshare.com/files/103022867/Jogo_VB_by_Dark_Fox.zip.html
     
    Última edição: 28 de Março de 2008
  7. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Uma coisa assim deve resultar:
    Código:
    For n = LBound(array) To UBound(array)
       array(n) = ""
    Next n
    
    Em arrays multidimensionais é ligeiramente mais complicado, mas não sei se será o caso.
     
  8. Armadillo

    Armadillo Folding Member

    é mais simples e menos custoso a nivel de ciclos fazer dois redim's

    Código:
    redim vector(1)
    redim vector (OTeuValor)
    
     
  9. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Eu sei, mas se tiveres dimensionado a variável com um valor fixo, i.e. "Dim array(2)", não podes fazer um ReDim depois.
    Para poderes fazer isso, tens de a inicializar com um "Dim array()" e um "ReDim array(2)" para mais tarde poderes fazer o que fizeste :)
     
  10. Armadillo

    Armadillo Folding Member

    sim

    Código:
    Option Explicit
    
    Private Sub Form_Load()
    Dim vector()
    Dim i As Integer
    ReDim vector(5)
    For i = 0 To 5
     vector(i) = i
    Next
    ReDim vector(1)
    
    
    ReDim vector(5)
    For i = 0 To 5
     vector(i) = i
    Next
    
    End Sub
    
    
    
    cumprimentos
     
  11. Dark_Fox

    Dark_Fox Power Member

    Não faz nada...é assim o jogo é o DRAGA MINAS... e como devem saber tem os quadrados e temos de descobrir onde tao as bombas....os quadrados estão todos em array e a bomba (imagem) é posta no array aleatoriamente (randomize)(a imagem é carregada a partir da pasta do jogo)...e eu quero que quando se akabem as tentativas para descobrir onde tao as bombas, aquilo REINICIA-SE, mas não sei como voltar ao inicio (bombas escondidas)(relembro que as bombas são colocadas aleatoriamente)


    Desculpem la a noobiçe, mas ninguem nasce ensinado..

    Perciso até 2ªF, é decisivo para passar ou xumbar o modulo :S


    Obrigado!
     
  12. balute

    balute Power Member

    Ou seja, tens um array de controls?

    Tentaste adaptar a solução que está no último post do Armadillo? Ou seja, fazer um ciclo para alterar as imagens de todos os quadrados para a imagem adequada.
     
  13. Dark_Fox

    Dark_Fox Power Member

    yh..tentei mas não deu em nada...mas eu como sou um grande noob na coisa pus assim:


    Private Sub Picture1_Click(Index As Integer)
    If lblrestantes.Caption = 0 Then
    MsgBox ("Ganhou")
    MsgBox ("Deseja tentar outra vez ?,vbYesNo, Confirmação")
    Else
    If lbltentativas = 0 Then
    If MsgBox("Perdeu, deseja tentar outra vez?", vbYesNo, "Confirmação") = vbYes Then

    ReDim vector(5)
    For i = 0 To 5
    vector(i) = i
    Next
    ReDim vector(1)


    ReDim vector(5)
    For i = 0 To 5
    vector(i) = i
    Next


    Else
    End
    End If
    Else
    lbltentativas = lbltentativas - 1
    End If
    For i = 0 To 6
    If Index = Chave(i) Then
    Picture1(Index).Picture = LoadPicture("mina.jpg")
    lblrestantes.Caption = Val(lblrestantes.Caption) - 1
    End If
    Next
    If Picture1(i).Picture = LoadPicture("mina.jpg") Then
    ' lblrestantes.Caption = Val(lblrestantes.Caption) - 1
    End If
    End If
    End Sub



    (com as variaveis criadas claro)

    Cumps
     
  14. balute

    balute Power Member

    O que pretendes não é limpar o array, mas sim alterar uma propriedade de cada elemento do array. Limpar o array é eliminar todos os quadrados.

    Para alterar a picture de cada elemento do array de pictureboxes, faz assim:
    Código:
    For i = LBound(Picture1) To UBound(Picture1)
      Picture1(i).Picture = LoadPicture("[B]<nome>[/B].jpg")
    EndIf
    Mesmo assim, pela forma que usaste o código, não tens desculpa :P
     
  15. Dark_Fox

    Dark_Fox Power Member

    Da erro no Lbound: Expected array :S
     
  16. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Código:
    For i = Picture1.LBound To Picture1.UBound
      Picture1(i).Picture = LoadPicture("[B]<nome>[/B].jpg")
    EndIf
    Fixed.
     
  17. Dark_Fox

    Dark_Fox Power Member

    Mais um erro: End if without block if


    Xeira-me ke é coisa muito simples, mas como vos disse sou noob em programação :P
     
  18. balute

    balute Power Member

    Apaga o último End If desse Sub
     
  19. Dark_Fox

    Dark_Fox Power Member

    Continua a não dar..

    Código:


    Private Sub Picture1_Click(Index As Integer)
    If lblrestantes.Caption = 0 Then
    MsgBox ("Ganhou")
    MsgBox ("Deseja tentar outra vez ?,vbYesNo, Confirmação")
    Else
    If lbltentativas = 0 Then
    If MsgBox("Perdeu, deseja tentar outra vez?", vbYesNo, "Confirmação") = vbYes Then
    For i = Picture1.LBound To Picture1.UBound
    Picture1(i).Picture = LoadPicture("mina.jpg")
    End If
    Else
    End
    End If
    Else
    lbltentativas = lbltentativas - 1
    End If
    For i = 0 To 6
    If Index = Chave(i) Then
    Picture1(Index).Picture = LoadPicture("mina.jpg")
    lblrestantes.Caption = Val(lblrestantes.Caption) - 1
    End If
    Next
    If Picture1(i).Picture = LoadPicture("mina.jpg") Then
    ' lblrestantes.Caption = Val(lblrestantes.Caption) - 1
    End If
    End Sub
     
  20. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Código:
    Private Sub Picture1_Click(Index As Integer)
      If lblrestantes.Caption = 0 Then
        MsgBox ("Ganhou")
        MsgBox ("Deseja tentar outra vez ?,vbYesNo, Confirmação")
      Else
        If lbltentativas = 0 Then
          If MsgBox("Perdeu, deseja tentar outra vez?", vbYesNo, "Confirmação") = vbYes Then
            For i = Picture1.LBound To Picture1.UBound
              Picture1(i).Picture = LoadPicture("mina.jpg")
    [B]        Next i[/B]
          Else
            End
          End If
        Else
          lbltentativas = lbltentativas - 1
        End If
        For i = 0 To 6
          If Index = Chave(i) Then
            Picture1(Index).Picture = LoadPicture("mina.jpg")
            lblrestantes.Caption = Val(lblrestantes.Caption) - 1
          End If
        Next
        If Picture1(i).Picture = LoadPicture("mina.jpg") Then
          ' lblrestantes.Caption = Val(lblrestantes.Caption) - 1
        End If
      End If
    End Sub
    Usa as tags [code][/code].
    edit - a falta de indentação fez com que houvessem algumas falhas na estrutura do código. É melhor começares a pensar nisso, porque havia um For sem Next, e If's sem End Ifs. Consegue ser uma dor de cabeça saber os locais onde colocar isso.
     
    Última edição: 28 de Março de 2008

Partilhar esta Página