Overall I quite enjoyed working on this project and I feel that I learned a lot while making it. I had to learn how to use the pygame module from scratch and got to explore all of its intricacies and uses. I enjoyed working with the module and whilst it isn’t suited for larger scale game development it is quite useful for smaller fun projects like this one.
The project also gave me a small teaser into what object oriented programming looks like in python with what classes are, how to use them and the idea of inheritance which will be quite useful if I were to go into programming as a full time job.
I am quite satisfied with how my project turned out. It accomplishes all the goals I set out for it and functions very smoothly. This project has taught me a lot in terms of developing a program on my own, where to go for help if I’m ever stuck on something, how to read code written by others and how to effectively comment your code, all useful skills in a job in programming. Given more time I would’ve tried to fully solve the issue of the ball clipping into the paddle rather than just making it harder to encounter. I’d also probably write the program in a language more suited towards game development such as C#. Overall I stuck pretty closely to what I had planned out in the beginning. However I didn’t end up using the pyinstaller module to package all my code into an executable as I felt that it wasn’t needed for the project and wouldn’t benefit it in any way.
Throughout the project I came across many difficulties. I had issues with how the collision logic with the paddles worked, initially the ball was able to clip inside the paddle and would get stuck there. In order to solve this problem I went through different examples of Pong games made using pygame and looked at how this was solved. After analyzing a few examples I settled on one solution I understood fairly well and did the job very well.
The data collected from the program could be useful in creating a more advanced AI system which actually thinks and attempts to predict where the ball will make contact with the wall rather than just analyzing the position of the ball vs the position of the paddle.