Hi! I’m having trouble with a simple project.
The aim is to move an image to a designated box. Once the image is in the box, it snaps into place. By clicking a reset button, the image will return to its starting spot and is able to be dragged + snapped into the destination again.
Below is my code. Apologies if it’s confusing, I’ve tried my best to include explanations.
My code:
overBox = False
locked = False
xOffset = 0.0
yOffset = 0.0
entered = False
reset = False
def setup():
size(640, 360)
global bx, by, box1
bx = width / 2
by = height / 2
box1 = loadImage("drag.png")
def draw():
global bx, by, overBox
background(0)
rect(20, 20, 200, 200) #the destination
image(box1, bx, by) #the box to be dragged to the destination
rect(400, 20, 100, 100) #the reset button
if bx < mouseX < bx + 100 and by < mouseY < by + 100: #if mouse is over the box
overBox = True
if not locked:
pass
else:
overBox = False
if entered: #if the the box is inside the destination, snap it in place
bx = 40
by = 40
if reset: #if the refresh button is clicked, reset the box to its original place
bx = width / 2
by = height / 2
def mousePressed():
global locked, xOffset, yOffset, reset
if overBox:
locked = True
else:
locked = False
xOffset = mouseX - bx
yOffset = mouseY - by
if mouseX > 400 and mouseX < 500 and mouseY > 20 and mouseY < 120: #mouse presses the reset button
reset = True
def mouseDragged():
global bx, by
if locked:
bx = mouseX - xOffset
by = mouseY - yOffset
def mouseReleased():
global locked, entered
locked = False
if bx + 100 < 220 and by + 100 < 220: #if the box is released in the destination
entered = True
Right now, the code manages to return the box to its starting spot but my attempts to repeat the dragging+snapping code have failed.
I have tried doing something like this:
#setup stuff
def draw():
background(0)
resetFunction()
def resetFunction():
global bx, by, overBox
#code to make box drag and snap
if reset:
bx = width / 2
by = height / 2
resetFunction()
But I get a NullPointerException error message. I’ve also tried using a while loop but it also didn’t work.
Thank you in advance!