Python Forum

Full Version: breakout clone pygame
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hello,
I'm trying to program a breakout clone.

With lives = ball.move(lives) I'm trying to send "lives" to the move method of Ball.

But an error occurs:

Traceback (most recent call last):
File "D:/Daten/Breakout-neu/main.py", line 89, in <module>
main()
File "D:/Daten/Breakout-neu/main.py", line 45, in main
lives = ball.move(lives)
File "D:\Daten\Breakout-neu\ball.py", line 43, in move
lives -= 1
TypeError: unsupported operand type(s) for -=: 'NoneType' and 'int'

What I'm doing wrong?
-----------------------------------------------
Moreover:
Do I have to add a bounce method to Ball?
I tried:

if ball.collpaddle(paddlegroup):
ball.dy *= -1
-----------------------------------------
I'm politely asking for help...
Please be so kind an help me...

(main and Ball is attached as text files)
Please post code in code tags instead of uploading an attachment. It makes it a pain to view in a phone

Your traceback shows that lives is not an int as expected.Your move method returns an int only if thr if condition is met, so I suspect one time it is not met, and returning None. Functions return None if nothing else is returned.

Also in pygame you can clamp a rect to the screen
rect nullifying any code to restrict thr object from going out of screen with a one liner.
Hello metulburr,
thanks a lot for your answer!
I moved the return statement outside the if-condition - now the error is fixed.