tags:

views:

84

answers:

2

I was trying this script from a pdf file.I got stuck where the target image should change to exploding image if clicked but the target image does not change from the standing image.Please Help!

Option Explicit

Dim fiPlayersScore As Integer
Dim fiNumberofMisses As Integer
Dim fbTargetHit As Boolean
Private Sub Form_Load()
Randomize
imgTarget.Enabled = False
imgTarget.Visible = False
cmdStop.Enabled = False
lblGameOver.Visible = False
lblGameOver.Enabled = False
End Sub
Private Sub cmdStart_Click()
Dim lsUserResponse As String
Dim lbResponse As Boolean

lsUserResponse = InputBox("Enter a level from 1 to 3." & _
(Chr(13)) & "" & (Chr(13)) & "1 being  the Easiest and 3 being the " & _
"Hardest.", "Level Select", "1")
lbResponse = False
If lsUserResponse = "1" Then
Timer1.Interval = 1500
lbResponse = True
ElseIf lsUserResponse = "2" Then
Timer1.Interval = 1000
lbResponse = True
ElseIf lsUserResponse = "3" Then
Timer1.Interval = 750
lbResponse = True
Else
MsgBox ("Game Not Started.")
lbResponse = False
End If
If lbResponse = True Then
cmdStart.Enabled = False
imgTarget.Picture = imgStanding.Picture 

frmMain.MousePointer = 5
fbTargetHit = False
Load_Sounds
cmdStop.Enabled = True
fiPlayersScore = 0
fiNumberofMisses = 0
lblScore.Caption = fiPlayersScore
lblMisses.Caption = fiNumberofMisses
Timer1.Enabled = True
lblGameOver.Visible = False
lblGameOver.Enabled = False
End If
End Sub

Private Sub cmdStop_Click()
Unload_Sounds
frmMain.MousePointer = vbNormal
Timer1.Enabled = False
imgTarget.Enabled = False
imgTarget.Visible = False
cmdStart.Enabled = True
cmdStop.Enabled = False
cmdStart.SetFocus
lblGameOver.Visible = True
lblGameOver.Enabled = True
End Sub

Private Sub Form_Click()
MMControl1.Command = "Play"
MMControl1.Command = "Prev"
fiNumberofMisses = fiNumberofMisses + 1
lblMisses.Caption = fiNumberofMisses
If CheckForLoose = True Then
cmdStop_Click
lblMisses.Caption = fiNumberofMisses
Exit Sub
End If
End Sub

Private Sub imgTarget_Click()
MMControl2.Command = "Play"
MMControl2.Command = "Prev"
Timer1.Enabled = False
imgTarget.Picture = imgExplode.Picture '**I AM STUCK HERE**
pauseProgram

fiPlayersScore = fiPlayersScore + 1
Timer1.Enabled = True
If CheckForWin = True Then
cmdStop_Click
lblScore.Caption = fiPlayersScore
Exit Sub
End If
lblScore.Caption = fiPlayersScore
fbTargetHit = True
imgStanding.Enabled = False
imgTarget.Visible = False
imgTarget.Enabled = False
Timer1.Enabled = True
End Sub
Public Sub Load_Sounds()
'Set initial property values for blaster sound
MMControl1.Notify = False
MMControl1.Wait = True
MMControl1.Shareable = False
MMControl1.DeviceType = "WaveAudio"
MMControl1.FileName = _
"C:\Temp\Sounds\Blaster_1.wav"
'Open the media device
 MMControl1.Command = "Open"

 Private Sub Timer1_Timer()
 Dim liRandomLeft As Integer
 Dim liRandomTop As Integer
 imgTarget.Visible = True
 If fbTargetHit = True Then
 fbTargetHit = False
 imgTarget.Picture = imgStanding.Picture
 End If
 liRandomLeft = (6120 * Rnd)
 liRandomTop = (4680 * Rnd)
 imgTarget.Left = liRandomLeft
 imgTarget.Top = liRandomTop
 imgTarget.Enabled = True
 imgTarget.Visible = True
 End Sub

 Public Function CheckForWin() As Boolean
 CheckForWin = False
 If fiPlayersScore = 5 Then
 CheckForWin = True
 lblGameOver.Caption = "You Win.Game Over"
 End If
 End Function
 Public Function CheckForLoose() As Boolean
 CheckForLoose = False
 If fiNumberofMisses = 5 Then
 CheckForLoose = True
 lblGameOver.Caption = "You Loose.Game Over"
 End If
 End Function

Private Sub Form_QueryUnload(Cancel As Integer, _
UnloadMode As Integer)
Unload_Sounds
End Sub
Public Sub Unload_Sounds()
MMControl1.Command = "Close"
MMControl2.Command = "Close"
End Sub
Public Sub pauseProgram()
Dim currentTime
Dim newTime
currentTime = Second(Time)
newTime = Second(Time)
Do Until Abs(newTime - currentTime) >= 1
newTime = Second(Time)
Loop
End Sub
A: 

EDIT:

imgTarget.Picture = imgExplode.Picture
imgTarget.Refresh 
renick
that is for multiple images and auto loading with timer
Dario Dias
Why not just load a new image from the image list on your click event.
renick
I can not find the image list control
Dario Dias
To add the ImageList control to your VB project, click Project|Components, and check the box next to Microsoft Windows Common Controls
renick
thanks after search on google I got how to add the imagelist control.on running the script error message is m_index variable not defined.So I added in the start Private m_Index As Integer Private m_NumImages As Integerand in the Private Sub imgTarget_Click() m_Index = ((m_Index + 1) Mod m_NumImages) + 1 imgTarget.Picture = ImageList1.ListImages(m_Index).Picturebut the result is the same as before
Dario Dias
try imgTarget.refresh immediately after imgTarget.Picture=...
renick
Thanks RenicK.It worked.Actually imagelist was not required.Just adding imgTarget.refresh immediately after imgTarget.Picture=imgExplode.Picture did the job.Unfortunately I cannot add a tick mark to your valuable help as you have answered in comment.Please post in answer question so I can tick your answer.
Dario Dias
A: 

Note:

Set imgTarget.Picture = imgExplode.Picture
imgTarget.Refresh

will be faster than

imgTarget.Picture = imgExplode.Picture
imgTarget.Refresh

if imgExplode is going to be around during the lifetime of imgTarget (the first command copies the image, the Set command references the image).

Kris Erickson
Sorry Kris, slightly late in answering the question
Dario Dias
I wasn't answering the question, I was adding additional information...
Kris Erickson