What if you put extra efforts on video game assignments----2
A downloadable game
Falling Object Game V1
Project Description
A simple falling ball catching game, without using OOB. Use mouse to control the catcher. When current score is higher, the speed of falling balls is higher and become more difficult to reach higher score.
Assignment Rubrics
- 2 points - the falling object must move programmatically (ie. not controlled by the player)
- 2 points - the catching object must move based on player input (mouse, keyboard, etc.)
- 4 points - collision detection between the two objects (distance or rectangular, depending on visuals)
- 2 points - the falling object respawns to a random location when caught or falls off the screen
- Extra Credit (1 point) - display a score
- Extra Credit (1 point) - display the high score (involves a fail state)
- Extra Credit (2 points) - add acceleration or more interesting velocities to either object
My Code
#Falling Object Game V1(PesudoVer)
gravConst = 0.03
gravInitConst = gravConst #make this equal to gravConst
gravDifficuty = 0.003
score = 0
highScore = 0
resetGame = True
winGame = False
mousePos = PVector(0, 0)
ballPos = PVector(0, 0)
ballSpd = 3
ballInitSpd = ballSpd #make this equal to ballSpd
ballRad = 12 #It's not Rad! It's Diameter!!!
catcherRect = [0, 0, 100, 30, 0, 0, 10, 10] # xpos, ypos, width, height, corner-rounding stuff, cheating by change the width to 2000
catcherHeight = 700
tolerance = 30 #Give player some tolerance on Y axis, also reducing tunneling effect, set to 9999 if you are really stronk (or cheating)
def calculate():
global resetGame, winGame, ballSpd, mousePos
checkBtmCollision()
checkWinCollision()
if winGame or resetGame:
print("Should have reset Game NOW!")
else:
ballSpd += gravConst
tempVolVect = PVector(0, ballSpd)
#print(ballPos.x, ballPos.y)
ballPos.add(tempVolVect)
mousePos = PVector(mouseX, mouseY)
def checkBtmCollision():
global resetGame
#print("CheckBTMCollision called")
if (ballPos.y + ballRad) > 800:
print(ballPos.x)
resetGame = True
def checkWinCollision():
global resetGame, winGame
#print("CheckWinCollision called")
#calculate Y-axis collision first, should between a range of tolerance
upperBound = catcherHeight - (catcherRect[3] / 2)
lowerBound = upperBound + tolerance
ballLowerBound = ballPos.y + ballRad
#print(lowerBound, upperBound, ballLowerBound)
#then calculate X-axis collision
leftBound = (mousePos.x - (catcherRect[2] / 2)) - (ballRad * (2 / 3))
rightBound = (mousePos.x + (catcherRect[2] / 2)) + (ballRad * (2 / 3))
if ((ballLowerBound < lowerBound) and (ballLowerBound > upperBound)):
print("X checked!")
if((leftBound < ballPos.x) and (rightBound > ballPos.x)):
print("Y Checked!")
resetGame = True
winGame = True
print("check Win Collision worked")
def showBall():
global ballPos, ballSpd
stroke(50,255,50)
fill(255)
circle(ballPos.x, ballPos.y, ballRad * 2)
def showCatcher():
global catcherRect
stroke(50,255,50)
fill(255)
rectMode(CENTER)
rect(mousePos.x, catcherHeight, catcherRect[2], catcherRect[3], catcherRect[4], catcherRect[5], catcherRect[6], catcherRect[7])
def showScoreBoard():
textSize(30)
fill(122, 255, 211)
scoreText = ("Your Score is: %i" % (score))
#print(scoreText)
highestScoreText = ("Highest Score: %i" % (highScore))
#print(highestScoreText)
text(scoreText, 0, 30)
fill(238, 255, 112)
text(highestScoreText, 0, 60)
def setup():
size(600, 800)
stroke(50,255,50)
frameRate(60) #framebased physics, yay
def draw():
global score, highScore, resetGame, winGame, ballPos, ballSpd, gravConst
background(0)
if resetGame:
ballPos = PVector(random(20,580), 0)
resetGame = False
if winGame:
score += 1
winGame = False
gravConst += gravDifficuty #Gotta go fast! <Intense Music Playing>
else:
#TODO highScore stuff
if score > highScore:
highScore = score
score = 0
gravConst = gravInitConst #reset difficulity
ballSpd = ballInitSpd #reset ball speed
#print(gravConst)
calculate()
showBall()
showCatcher()
showScoreBoard()
Screenshot

| Status | Released |
| Author | bohdns |
| Genre | Platformer |
| Tags | Retro |
Download
Download
application.windows64.zip 42 MB
Install instructions
- Java 8 required.
- Or use processing IDE (python mode) to run it

Leave a comment
Log in with itch.io to leave a comment.