View Full Version : [VB6] Jogo - Problema


Pss
10-11-2007, 23:42
Boas,

Tou a fazer um jogo que consiste em martelar as imagens que aparecem.
Existe uma imagem sempre visivel e outra que so é visivel quando for escolhida aleatoriamente que quando se carrega em cima dela antes de desaparecer ganhamos um ponto.
O problema e que essa imagem nao aparece... Aqui em baixo deixo o codigo que eu meti. Quem conseguir resolver o problema diga por favor


Dim myvalue As Integer
Dim placar As Integer
Dim tempodojogo As Integer

Private Sub picture2_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
placar = placar + 1
Text1.Text = placar
End Sub

Private Sub Form_Load()
Randomize
placar = 0
tempodojogo = 0
End Sub

Private Sub Text1_Change()
placar = placar
End Sub

Private Sub Timer1_Timer()
For i = 0 To 9
Picture2(i).Enabled = False
Next i
myvalue = Int(10 * Rnd)
Picture2(myvalue).Enabled = True
tempodojogo = tempodojogo + 1
If tempodojogo > 30 Then
MsgBox ("total = " + Str$(placar) + " acertos")
End
End If
End Sub

PJTuga
10-11-2007, 23:49
Picture2(myvalue).Enabled = True

Não querias escrever antes:
Picture2(myvalue).Visible = True

Pss
11-11-2007, 00:01
Não querias escrever antes:
Picture2(myvalue).Visible = True

Obrigado... Já aparecem.

E agora como faço para desaparecerem e voltarem a escolher aleatoriamente?

PJTuga
11-11-2007, 12:15
?

Private Sub Timer1_Timer()
For i = 0 To 9
Picture2(i).Visible = False \\todas as imagensb ficam invisiveis
Next i
myvalue = Int(10 * Rnd)
Picture2(myvalue).Visible = True \\a imagem que foi "sorteada" aparece
tempodojogo = tempodojogo + 1
If tempodojogo > 30 Then
MsgBox ("total = " + Str$(placar) + " acertos")
End
End If
End Sub



Private Sub picture2_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
placar = placar + 1
Text1.Text = placar
picture2(Index).visible=False \\a imagem em que clicas-te fica invisivel
End Sub

Pss
11-11-2007, 14:04
Private Sub Timer1_Timer()
For i = 0 To 9
Picture2(i).Visible = False \\todas as imagensb ficam invisiveis
Next i
myvalue = Int(10 * Rnd)
Picture2(myvalue).Visible = True \\a imagem que foi "sorteada" aparece
tempodojogo = tempodojogo + 1
If tempodojogo > 30 Then
MsgBox ("total = " + Str$(placar) + " acertos")
End
End If
End Sub



Private Sub picture2_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
placar = placar + 1
Text1.Text = placar
picture2(Index).visible=False \\a imagem em que clicas-te fica invisivel
End Sub

Obrigado... Só mais uma pergunta... Como faço agora para quando me apareçe a imagem e eu carrego nela apareçe outra imagem durante por exemplo meio segundo e depois desaparece outra vez?

Exemplo: apareçe a toupeira eu carrego nela e depois aparece a mesma com ferimentos, durante meio segundo e desapareçe outra vez.

Pss
11-11-2007, 16:01
Essa imagem é a "picture3"

PJTuga
11-11-2007, 16:20
Essa imagem é a "picture3"
Dim x as Integer




Private Sub Timer2_Timer()
picture3(x).visibled=False
timer2.enabled=False
End Sub


Private Sub picture2_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
placar = placar + 1
Text1.Text = placar
picture2(Index).visible=False \\a imagem em que clicas-te fica invisivel
picture3(Index).visible=True
x=Index
timer2.enabled=true
End Sub

Pss
11-11-2007, 17:32
Dim x as Integer




Private Sub Timer2_Timer()
picture3(x).visibled=False
timer2.enabled=False
End Sub


Private Sub picture2_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
placar = placar + 1
Text1.Text = placar
picture2(Index).visible=False \\a imagem em que clicas-te fica invisivel
picture3(Index).visible=True
x=Index
timer2.enabled=true
End Sub

Já tinha exprimentado isso mas tem 2 problemas:

1º a imagem escondida aparece depois eu clico nela e a imagem dos ferimentos aparece noutro lado. Por exemplo: sao 10 caixas é "sorteada" uma caixa para a toupeira aparecer ,por exemplo a caixa nº 5, e depois quando ela aparece e eu clico nessa caixa a imagem dela com os ferimentos aparece por exemplo na caixa nº 7.

2º a imagem dos ferimentos aparece mas não desaparece

Pss
11-11-2007, 18:36
Como resolvo?

PJTuga
11-11-2007, 18:41
Eu só vou poder voltar a ajudar amanhã. A minha placa de rede pifou e é complicado postar com o n80. Espero que resolvas antes o problema. Senão amanhã estou de volta com uma solução,

Sharkarp
11-11-2007, 19:12
Para apagar os ferimentos podes criar um array boolean de 10 posições, e cada vez que acertas, a posição fica "true" e ligas o timer2 para apagar.

Private Sub Timer2_Timer()
For i = 0 To 9
if array[i] then picture3(x).visibled=False
Next i
timer2.enabled=False
End Sub

e por true no array


Private Sub picture2_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
placar = placar + 1
Text1.Text = placar
picture2(Index).visible=False \\a imagem em que clicas-te fica invisivel
picture3(Index).visible=True
x=Index
array(Index) = True
timer2.enabled=true
End Sub

Isto foi pensado assim por alto, já não pego em VB há bastante tempo.

Pss
11-11-2007, 19:12
Já consegui resolver o problema do sítio onde elas aparecem só falta descobrir como faço para desaparecerem...


Private Sub Timer2_Timer()
Picture3(x).Visible = False
Timer2.Enabled = False
End Sub

Private Sub Picture2_MouseDown(Index As Integer, Button As Integer, Shift As Integer, x As Single, Y As Single)
placar = placar + 1
Text1.Text = placar
Picture2(Index).Visible = False ' a imagem em que clicas-te fica invisivel
If (myvalue) = 0 Then
Picture3(0).Visible = True
End If
If (myvalue) = 1 Then
Picture3(1).Visible = True
End If
If (myvalue) = 2 Then
Picture3(2).Visible = True
End If
If (myvalue) = 3 Then
Picture3(3).Visible = True
End If
If (myvalue) = 4 Then
Picture3(4).Visible = True
End If
If (myvalue) = 5 Then
Picture3(5).Visible = True
End If
If (myvalue) = 6 Then
Picture3(6).Visible = True
End If
If (myvalue) = 7 Then
Picture3(7).Visible = True
End If
If (myvalue) = 8 Then
Picture3(8).Visible = True
End If
If (myvalue) = 9 Then
Picture3(9).Visible = True
End If
x = Index
Timer2.Enabled = True
End Sub


Como não encontrei uma função simplificada recorri a esta que vai sempre certinha...:D

Pss
11-11-2007, 19:24
Obrigado a todos... Já consegui criar o jogo. Quando tiver os níveis feitos e tudo isso meto aqui :D

O que faltava para tirar a imagem era:


Private Sub Picture2_MouseDown(Index As Integer, Button As Integer, Shift As Integer, x As Single, Y As Single)
placar = placar + 1
Text1.Text = placar
Picture2(Index).Visible = False ' a imagem em que clicas-te fica invisivel
If (myvalue) = 0 Then
Picture3(0).Visible = True
End If
If (myvalue) = 1 Then
Picture3(1).Visible = True
End If
If (myvalue) = 2 Then
Picture3(2).Visible = True
End If
If (myvalue) = 3 Then
Picture3(3).Visible = True
End If
If (myvalue) = 4 Then
Picture3(4).Visible = True
End If
If (myvalue) = 5 Then
Picture3(5).Visible = True
End If
If (myvalue) = 6 Then
Picture3(6).Visible = True
End If
If (myvalue) = 7 Then
Picture3(7).Visible = True
End If
If (myvalue) = 8 Then
Picture3(8).Visible = True
End If
If (myvalue) = 9 Then
Picture3(9).Visible = True
End If
Timer2.Enabled = True
End Sub

Private Sub Timer2_Timer()
Picture3(myvalue).Visible = False
End Sub