Python Forum
breakout clone pygame - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: Game Development (https://python-forum.io/forum-11.html)
+--- Thread: breakout clone pygame (/thread-36299.html)



breakout clone pygame - flash77 - Feb-06-2022

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)


RE: breakout clone pygame - metulburr - Feb-06-2022

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.


RE: breakout clone pygame - flash77 - Feb-06-2022

Hello metulburr,
thanks a lot for your answer!
I moved the return statement outside the if-condition - now the error is fixed.