• Welcome to Valhalla Legends Archive.
 

Project keeps freezing with after this code..

Started by Reaper~, January 27, 2005, 04:49 PM

Previous topic - Next topic

Reaper~

I'm trying to get it so that when the user presses the over button (in this case the button is Enter, or Return) a shape will move over and everytime you press it, the shape moves, then the program freezes up. Can someone explain this to me and help me out?

Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
Do
Shape1.Move 550
Loop
End If
End Sub


or I tried this code:


Private Sub Form_KeyPress(KeyAscii As Integer)
Dim i As Long
If KeyAscii = vbKeyReturn Then
For i = 1 To 99999
Shape1.Move 550
Next
End If
End Sub


And it just moves once and then you can press it over and over and it will do nothing.. but it doesn't freeze with this one...

Another freezing one is:


Private Sub Form_KeyPress(KeyAscii as Integer)
Do While KeyAscii = vbKeyReturn
Shape1.Move 550
Loop
End Sub
Take my advice, I'm not using it.

GoSu_KaOs

If you want it to move only when you press Enter:


Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
Shape1.Left = Shape1.Left - 550
End If
End Sub


Moves Left:
Shape1.Left = Shape1.Left - 550


Moves Right:
Shape1.Left = Shape1.Left +550

If you want to click enter once and it moves automaticly, you gotta use at Timer.

Reaper~

Take my advice, I'm not using it.

UserLoser.

Add a message loop (DoEvents) at the end of both of your loops.


While (something)
    'do stuff
    DoEvents
Wend

Reaper~

#4
I got another question, if I try replacing vbKeyReturn with vbKeyRight the right button doesn't do anything... is vbKeyRight not the right arrow?
Take my advice, I'm not using it.

GoSu_KaOs

#5
Not sure about this. Try askin on http://www.visualbasicforum.com/

EDIT: Forget that, Open Vb, pres F2. A window opens, type in keycode in the search feild and press the search button. You should see all the vbKey..... codes there.

BTW:

Up: vbKeyUp
Down: vbKeyDown
Left: vbKeyLButton
Right: vbKeyRButton

Newby

Quote from: Reaper~ on January 27, 2005, 05:20 PM
I got another question, if I try replacing vbKeyReturn with vbKeyRight the right button doesn't do anything... is vbKeyRight not the right arrow?
You need to use Option Explicit, you'd find out that doesn't exist!
- Newby

Quote[17:32:45] * xar sets mode: -oooooooooo algorithm ban chris cipher newby stdio TehUser tnarongi|away vursed warz
[17:32:54] * xar sets mode: +o newby
[17:32:58] <xar> new rule
[17:33:02] <xar> me and newby rule all

Quote<TehUser> Man, I can't get Xorg to work properly.  This sucks.
<torque> you should probably kill yourself
<TehUser> I think I will.  Thanks, torque.

Reaper~

Yeah you can see all the keycodes by right-clicking in the coding and going to "List Properties/Methods" and as for:

Quote
Up: vbKeyUp
Down: vbKeyDown
Left: vbKeyLButton
Right: vbKeyRButton

That still doesn't work and using Option Explicit doesn't do anything, no errors come up and it's still under the list I don't get what you mean Newby?
Take my advice, I'm not using it.

Newby

Eww. Nevermind.

I thought vbKeyRight didn't exist at all.

My bad, ignore what I said.

But use Option Explicit wherever possible!
- Newby

Quote[17:32:45] * xar sets mode: -oooooooooo algorithm ban chris cipher newby stdio TehUser tnarongi|away vursed warz
[17:32:54] * xar sets mode: +o newby
[17:32:58] <xar> new rule
[17:33:02] <xar> me and newby rule all

Quote<TehUser> Man, I can't get Xorg to work properly.  This sucks.
<torque> you should probably kill yourself
<TehUser> I think I will.  Thanks, torque.

Reaper~

Oh Ok, but do you have an idea of how to get the right key to work?
Take my advice, I'm not using it.

Newby

A way to figure out which key it is. (psuedo)

Breakpoint "OnKeyDown" or something similar (Debug.Print on key down)

Push the right key, check which key number was passed in, and stick that where you are using vbKeyRight or whatever.
- Newby

Quote[17:32:45] * xar sets mode: -oooooooooo algorithm ban chris cipher newby stdio TehUser tnarongi|away vursed warz
[17:32:54] * xar sets mode: +o newby
[17:32:58] <xar> new rule
[17:33:02] <xar> me and newby rule all

Quote<TehUser> Man, I can't get Xorg to work properly.  This sucks.
<torque> you should probably kill yourself
<TehUser> I think I will.  Thanks, torque.

Reaper~

I went to
http://www.gh-gold.co.uk/keycodes.php
and it says the value is 0x25
Is that what you were talking about? If so, it doesn't work it still
Take my advice, I'm not using it.

Newby

It's vbKeyRight.

I don't know why it doesn't work. I'm busy at the moment, I'll try and figure it out after homework.
- Newby

Quote[17:32:45] * xar sets mode: -oooooooooo algorithm ban chris cipher newby stdio TehUser tnarongi|away vursed warz
[17:32:54] * xar sets mode: +o newby
[17:32:58] <xar> new rule
[17:33:02] <xar> me and newby rule all

Quote<TehUser> Man, I can't get Xorg to work properly.  This sucks.
<torque> you should probably kill yourself
<TehUser> I think I will.  Thanks, torque.

Reaper~

Lol (0x27)  :-[ I'm sorry I just looked too fast I guess, but still doesn't solve the problem, whenever you get the chance if you'd take a look it'd be much appreciated.
Take my advice, I'm not using it.

Dyndrilliac

#14
This works 100%. Make a Form and a Shape control. Name the Shape control "Shape" and the Form "frmMain". Then copy/paste the following code into the Form's code.Option Explicit

Dim Paused As Boolean

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Select Case (KeyCode)
        Case vbKeyRight
            If Paused = True Then
                Exit Sub
            End If
            Shape.Left = Shape.Left + 20
            frmMain.Refresh
        Case vbKeyLeft
            If Paused = True Then
                Exit Sub
            End If
            Shape.Left = Shape.Left - 20
            frmMain.Refresh
        Case vbKeyUp
            If Paused = True Then
                Exit Sub
            End If
            Shape.Top = Shape.Top - 20
            frmMain.Refresh
        Case vbKeyDown
            If Paused = True Then
                Exit Sub
            End If
            Shape.Top = Shape.Top + 20
            frmMain.Refresh
        Case vbKeyPause
            frmMain.Cls
            If Paused = True Then
                Print "Game Is Not Paused."
                Paused = False
            Else
                Print "Game Is Paused."
                Paused = True
            End If
    End Select
End Sub

Private Sub Form_Load()
    Paused = False
    frmMain.Caption = "Shape Game"
    frmMain.BackColor = vbBlack
    frmMain.ScaleMode = 3
    frmMain.Width = 8895
    frmMain.ScaleWidth = 587
    frmMain.ScaleHeight = 292
    frmMain.Height = 4920
    frmMain.ForeColor = vbRed
    frmMain.FontSize = 12
    frmMain.Font = "MS Sans Serif"
    Shape.BackColor = vbGreen
    Shape.BorderColor = vbYellow
    Shape.BackStyle = 1
    Shape.BorderStyle = 3
    Shape.Height = 33
    Shape.Width = 33
    Shape.Shape = 1
    Shape.Left = 272
    Shape.Top = 112
End Sub
Quote from: Edsger W. DijkstraIt is practically impossible to teach good programming to students that have had a prior exposure to BASIC; as potential programmers they are mentally mutilated beyond hope of regeneration.