Latest Awards
Complete 10 python programs which focus on loops.

morgan

Score over 100 points in total

vincebanter10

Complete any 5 python programs

vincebanter10

Complete 3 python list based tasks

vincebanter10

Complete 5 python list based tasks

vincebanter10

Complete 10 python list based tasks

dman12

Score over 1000 points in total

april-logan

Complete any pygame task

april-logan

Complete any 3 pygame tasks

april-logan

You have to complete 5 pygame tasks

april-logan

Score over 500 points in total

sam-edmund

Complete any pygame task

sam-edmund

Complete any 3 pygame tasks

sam-edmund

You have to complete 5 pygame tasks

sam-edmund

Complete any pygame task

12wrigleyf

Complete any 3 pygame tasks

12wrigleyf

You have to complete 5 pygame tasks

12wrigleyf

Score over 500 points in total

jhoughton12

Complete any 10 python prograns

jhoughton12

Complete 10 python programs which focus on loops.

jhoughton12

Python Score
tasks = 0
achivements = 0
freestyle = 0
Total = 0
Top 5 Scores
114gilo 3420
2alexdawkins 2455
3joss-nolan-2 2450
4byrnebrian 2000
512wattsl 1670
Click to view all scores
Who else completed this task?
No one has completed this task yet. Be the first!

Rectangles and obstacles

In this tutorial you will see how to do collision detection using rectangles. When testing if two things have collided you need to consider how accurate you want to be. In this set of examples we are doing collision detection with rectangles which means, as we have a ball, it may not always look smooth.


Some sample code to try –

from pygame import *

init()

width = 640
height = 480

screen = display.set_mode((width, height)) # tuple
display.set_caption('Graphics')

animationTimer = time.Clock()
ball = Rect(100,200,40,40)
obstacle = Rect(270,190,100,100)
dx = 1 # how fast/direction in x 
dy = 4 # how fast/direction in y
endProgram = False

# game loops
# check input
# Update positions / game logic
# draw frame

while not endProgram:
	# Check input
	for e in event.get():
		if e.type == QUIT:
			endProgram = True
	# update position
	ball.move_ip(dx,dy)
	# border check
	if ball.y < 0 or ball.y > height - 40 :
		dy *= -1
	if ball.x < 0 or ball.x > width - 40:
		dx *= -1
	# check collision with obstacle
	if ball.colliderect(obstacle):
		if ball.centerx <= obstacle.x or ball.centerx>=obstacle.x +100:
			dx = dx * - 1 
		if ball.centery <= obstacle.y or ball.centery>=obstacle.y +100:
			dy = dy * - 1 
	# draw stuff
	screen.fill((100,100,200))
	# circle
	draw.ellipse(screen, (0,255,0), ball) 
	# draw obstacle
	draw.rect(screen, (200,200,200), obstacle)
	# limit to 30 frames per second 
	animationTimer.tick(100)
	# update the screen!
	display.update()

 

Helpful links

http://tech.pro/tutorial/1007/collision-detection-with-pygame

http://thepythongamebook.com/en:pygame:step018 – Using masks to perform collision detection (advanced)

Leave a Reply

You must be logged in to post a comment.