Pygame Zero
CC Attribution - NonCommercial - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this
Pope, Daniel
Daniel Pope - Pygame Zero Pygame Zero is a new game engine for education, built on top of Pygame. It makes writing your first games extremely simple, while saving beginners from certain potential pitfalls. Daniel will introduce Pygame Zero, walk through creating a simple game, and discuss the background for Python in education and the design philosophy behind Pygame Zero. - Pygame Zero is a new game engine for education, built on top of Pygame. It makes writing your first games extremely simple, while saving beginners from certain potential pitfalls. This talk will introduce Pygame Zero, walk through creating a simple game, and discuss the background for Python in education and the design philosophy behind Pygame Zero. Pygame is a powerful set of libraries for graphics, sound, input and more. But it is just a library: each program needs to import and set up the libraries, implement a game loop and load resources among numerous other concerns. While seasoned Pythonistas have no trouble with this, teachers told us that they found it difficult to teach with Pygame. There is simply too much boilerplate involved, and getting students to reproduce the boilerplate perfectly before useful lessons can begin takes too much time out of a 40-minute lesson. Pygame Zero is simple enough that a lesson can be broken down into bitesize steps where meaningful progress can be made with just a couple of lines of code at a time.
 Okay, okay, let's start. Good afternoon. Welcome and thank you for coming. I'm pleased to introduce the engineer, Daniel Pope, who talks about PairGain, Shiro. Hi, I'm Dan. I am a reliability engineer by day, but for many years my hobby has been programming games. I remember my first computer was an Atari ST and I had ST basic and stuff. I immediately put that to one side because it came with loads of games. So my interest in programming came from my love of games and I continued to program games in my spare time, particularly during two weeks of the year, which are Pi week. Pi week is a week-long games programming contest where you are challenged to write a game from scratch in Python on a topic that is given to you at the moment the contest starts. So you have exactly one week to write a game and then you have to upload it. And I've taken part in Pi week about ten times, but I've won it twice. So that kind of background was particularly of interest to Nicholas when he set up the Python UK education track and he kept saying, well, Dan, you have to kind of get involved with this because teachers, we love this kind of stuff. So about four years ago, the first five years ago, the first Python UK education track rolled around and we were challenged, we were put into groups, and challenged to groups where teachers met developers and challenged to come up with some course material that the teachers could teach. And so from my Pi game, or Pi week and Pi game background, I dashed off the simplest possible Pi game program, about 20 lines in it, and one of the teachers said, nope, that's too difficult, that can't work in a classroom because the amount of code that he would have to teach for a student to get something productive by the end of the lesson was too much. So the best programmers in the class, the people who got it would race away and be bored and the people who didn't get it would not have got it by the end of the lesson. So that problem sat around with me in my brain for three or four years. And then in 2014, I think the October 2014 Pi week, I sat down to write a game and the theme was one room. I thought I'm going to write this in a kind of way that I would write it if I was creating a framework for complete beginners to Pi game. And then last year, I turned that into a library which is Pi game zero. So this is a library that takes all of the boilerplate out of Pi game. Pi game is a library for access to graphics and sound and input. But wrapping that with a kind of thin Python layer that lets you training wheels for Pi game, as it were. So you can get up speed faster. The teachers can teach a couple of lines at a time and make sure the class is caught up. But then it is just Pi game underneath. So you can throw away the training wheels at some point and migrate to Pi game proper if you want. So I'm going to show Pi game zero today. I've written a blank file that's called demo.pi. The secret of Pi game zero is that it doesn't run with the standard Python interpreter. You run it with PGZ run. A blank file is a valid program. It creates a blank window. But you can quit it, which is great because you can't do that with a blank Pi game. So that proves you've got things installed. Then you can say, Def draw screen.fill. So two lines of code. And I've got a blue screen. So let's write a little game. I'm going to... Excuse me. Okay. It's... So that's a couple more lines. But that is using Pi game zero magic. Sorry. This mouth refers to an image. So if I do... I've got a directory called images. And that's where my image files are. So I don't need to do any faffing to load those path manipulation. They are just as available as strings. You can also... You can access them as objects in order to get the width and the height if you want. But the actor there has a width and height. It's a Pi game rectangle. I'm going to have another thing. It's going to be very topical. So I've got a pin show. These were drawn in inkscape, by the way. And then exported as pings. And Pi game zero can load pings or JPEGs. So whatever file format you should just be able to save something off the Internet maybe and use it immediately in the game. And then I draw a function called update. I've got a falling pin show. So a couple more lines. So two lines at a time. That's what we're aiming for. So if I say if keyboard.left. I should have chosen a word that's easier to spell. There you go. And then I said these actors are just rets. So I could do if... So I think that program is easy enough to grasp. I think by moving all of the complexity out of the Pi game program that you would write into Pi game zero, we've created something that is much simpler to get started on. Just at that level where you're transitioning from something like scratch. So kids will do scratch up to the age of 10, 9, like some subtle nods. And then in the UK curriculum they have to transition to a textual programming language. But scratch has the ability to create characters and move them around out of the box. So that stuff is very accessible. For Python programming, I think we're in a situation where the out of the box experience is worse. I think if your basic programs are what is your name, hello name, that's a big gap from where you just were in scratch to where you are in Python. So Pi game zero fills that niche for getting up to speed, getting something graphical on the screen to keep kids engaged as their programming career continues. This was written in Python three. I think that's important as well. So the background for Pi game and Python three is sort of a bit incomplete. Teachers told me that they wanted just Python three stuff. They wanted to be able to teach one language. And so the Python two, three split was a big problem. When this was written, and I think this is still the case, there is no official release of Pi game for Python three. So part of this was actually finding ways to install Pi game and Python three. And that is all in the documentation. So there are ways of doing it. It works. But Pi game is catching up, actually. So there are now binary wheels on Pi PI. But I think off of the pre-release tag, so you have to say pip minus minus pre or something. But you can install Pi game. And what else? Okay. So I was going to show you some of the other things that Pi games zero can do. So draw an update or your basic bread and butter for creating games for animation. So draw will be called whenever Pi game zero wants to update. Draw the screen, refresh the screen. Update is called 60 times a second anyway. So if you don't define update, you can create games that are click driven. I'll show you the click API. So all I needed to do was create a function called on mouse down. And Pi game zero will call that function. If I wanted to know what button I, what button was clicked, I could go button. I can do anything with the button. So you see I've got Pi game zero is adapting to the call back that I define. And I was demoing this to, I was sharing this around the internet with some of the teachers who have been involved in the Pi con UK education track. And Dave had said it doesn't work. It's just not working. He had written that. And I was dismayed that the very first experience he had with this tool was something that just didn't work and didn't give me any feedback on why. So if you misspell a function, it's got a spell checker and will tell you that you might have misspelled things. I think that's the kind of philosophy of Pi game zero is that we've done a lot of work actually in catching errors, re-raising them with better messages because that kind of feedback about if something breaks and it doesn't give you any information as to why, that is an obstacle to continuing your learning. So every time we could take something that the underlying Pi game was doing and make it more explicit, we've done that. I think I will stop there and invite questions because the questions have been very good in the previous times I've taken this talk. And I'd rather sort of, I want to know what you want out of this tool. So any questions? Yeah. So I just wanted to ask if there is like an included way for easy publishing of your game, especially for kids. Yeah, so because they won't go into different installation stuff. No. But Pi game zero was created with an understanding of the kind of portability problems that show up on when you distribute games. So having done Pi week a lot of times, every time you use open gel, it will work perfectly on all of the machines you develop on and then somebody will run it and there's a driver problem. So Pi game is ideal for the distribution of games because it just works. If it's there, it just works. It's CPU rendering, which is slow, but it's incredibly reliable. Also, Pi game zero will catch problems with file names, for example. So if I rename... Then it will give me an error that my game could possibly not be exchanged with somebody with a different file system that was case-intensive. So that kind of problem is to the best of my ability dealt with by Pi game zero. The actual packaging of games and distributing them I think is a future problem, but something I think we would like to solve. Why three? Yes, so packaging. Yes, and distribution. Yes, I think that comes later. I think that's something that we should build. The Pi game zero distribution is just like a directory really. So if you have Pi game zero installed, zipping up a directory and just sharing the images directory and the sounds directory and the script, generally it's assumed there is one script. This is for programs that are simple enough to be in one module. Then that can be run on any computer with Pi game zero. There is another project. I've got internet. I can show you. I've been working on something called the edgy bundle, which is an attempt to provide a redistributable bundle for Python for education that has Pi game zero, Pi game, Pi QT, Nicholas's new editor available. So I think by pursuing all of these avenues, we can make games easier for, and Python easier for kids to use at school when at home. What about networking? Because in games, it's also interesting if your colleague from school can play your latest game. Yes. So Nicholas is putting his hand up. So there's network zero for that. We're going to answer more for you. So inspired by Dan's awesome work with Pi game zero. As I mentioned in my keynote, other people have been doing something zero libraries. Following the same philosophy that Dan has, and Tim Golden, who's Python core developer based in London, has created network zero. He tried out at the London Python code, and we had a lot of fun breaking it. Tim has also been trying it out with teachers as well, and getting their feedback. Just to echo what Dan was saying, getting teachers involved in this is essential because they're the experts in dealing with children. As developers, we can think what kids might want to do, but it's teachers who actually deal with them every day. But there's network zero. I can't see why network zero couldn't work with Pi game zero. Ben Nuttall of the Raspberry Pi foundation created GPIO zero, and also the hashtag zero all the things. So what you need to do is create a Pi game zero project that uses GPIO zero on a Pi zero, Raspberry Pi zero with network zero as well. Then you've zeroed all the things, and you can legitimately use that hashtag. Hey, so we talked yesterday evening, and I just want to repeat this suggestion. You can actually bundle this thing with Pi to X to have a single executable file that doesn't need installation. I think that would be a good thing to have, but I have not written that yet. Yeah, of course, but I'm just saying that maybe that's a good thing to look into. And also you could run the zip files directly, right? Yes, like zip app, yeah. Thank you. Sorry, that wasn't really a question. Yeah, so I guess as you suggest, features, I should mention that this is on Bitbucket zero, and so pull requests are accepted, and this is a community project, and it sort of relies on the feedback. I'm not a teacher. I am going on feedback from teachers, but I need the feedback of people who have tried teaching kids with this to improve it. And any time that you see an error message that is opaque or something doesn't work and doesn't give a trace back or doesn't give any indication as to why it's not working, that could be considered a bug. So please report it if nothing else. Okay, another question. So since arriving in Bilbao, where am I looking? Sorry. Hello. Ah, right, right at the back, okay, right underneath the light. Since arriving at Bilbao, I've discovered that my Spanish is exactly zero, and a lot of Spanish people's English is also zero. What options are there for internationalising so that an 11-year-old Spanish kid, for example, doesn't have to learn English to do on mouse down, et cetera? Yeah, I think it's probably difficult to conceive of a way that you could internationalise this without making incompatibility problems. I think also that English is the language of programming, and the Python libraries and the keywords are English. On the other hand, I think it's very reasonable that the documentation should be translated. So if anybody would like to contribute a translation for the documentation or contribute any kind of tutorial or blog post, that would be appreciated. Okay, the last question. Thanks very much. This looks like it would be quite a nice way of building not just games, but generic interfaces for interaction with all kinds of things. How suited is it to play the role of a kind of generic graphical interface builder? You can write full graphical interfaces in PyGame, and people have done it, but I think at that point you're probably best if you want to attack that kind of problem using PyGame itself. There are libraries that do the GUI widgets for embedding in a PyGame game that mimic the platform widgets, but I think it's not... That kind of programming becomes more complicated than PyGame zero is targeting. So I think if you want to do that... I certainly could see that if PyGame zero was to include some GUI tools to share games, for example, to bundle them up to enter some details and an icon or something, then that could be done with a GUI that was written in PyGame, but may not use PyGame zero to do it. Okay. Thank you, Daniel, for your interest, companies. Thank you very much. Thank you.
 Okay, okay, let's start. Good afternoon. Welcome and thank you for coming. I'm pleased to  introduce the engineer, Daniel Pope, who talks about PairGain, Shiro.  Hi, I'm Dan. I am a reliability engineer by day, but for many years my hobby has been  programming games. I remember my first computer was an Atari ST and I had ST basic and stuff.  I immediately put that to one side because it came with loads of games. So my interest  in programming came from my love of games and I continued to program games in my spare  time, particularly during two weeks of the year, which are Pi week. Pi week is a week-long  games programming contest where you are challenged to write a game from scratch in Python on  a topic that is given to you at the moment the contest starts. So you have exactly one  week to write a game and then you have to upload it. And I've taken part in Pi week  about ten times, but I've won it twice. So that kind of background was particularly of  interest to Nicholas when he set up the Python UK education track and he kept saying, well,  Dan, you have to kind of get involved with this because teachers, we love this kind of  stuff. So about four years ago, the first five years ago, the first Python UK education  track rolled around and we were challenged, we were put into groups, and challenged to  groups where teachers met developers and challenged to come up with some course material that  the teachers could teach. And so from my Pi game, or Pi week and Pi game background, I  dashed off the simplest possible Pi game program, about 20 lines in it, and one of  the teachers said, nope, that's too difficult, that can't work in a classroom because the  amount of code that he would have to teach for a student to get something productive  by the end of the lesson was too much. So the best programmers in the class, the people  who got it would race away and be bored and the people who didn't get it would not have  got it by the end of the lesson. So that problem sat around with me in my brain for three or  four years. And then in 2014, I think the October 2014 Pi week, I sat down to write a game and  the theme was one room. I thought I'm going to write this in a kind of way that I would  write it if I was creating a framework for complete beginners to Pi game. And then last  year, I turned that into a library which is Pi game zero. So this is a library that takes  all of the boilerplate out of Pi game. Pi game is a library for access to graphics and  sound and input. But wrapping that with a kind of thin Python layer that lets you training  wheels for Pi game, as it were. So you can get up speed faster. The teachers can teach  a couple of lines at a time and make sure the class is caught up. But then it is just  Pi game underneath. So you can throw away the training wheels at some point and migrate  to Pi game proper if you want. So I'm going to show Pi game zero today. I've written a  blank file that's called demo.pi. The secret of Pi game zero is that it doesn't run with  the standard Python interpreter. You run it with PGZ run. A blank file is a valid program.  It creates a blank window. But you can quit it, which is great because you can't do that  with a blank Pi game. So that proves you've got things installed. Then you can say, Def  draw screen.fill. So two lines of code. And I've got a blue screen. So let's write a little  game. I'm going to... Excuse me. Okay. It's...  So that's a couple more lines. But that is using Pi game zero magic. Sorry. This mouth  refers to an image. So if I do... I've got a directory called images. And that's where  my image files are. So I don't need to do any faffing to load those path manipulation.  They are just as available as strings. You can also... You can access them as objects  in order to get the width and the height if you want. But the actor there has a width  and height. It's a Pi game rectangle. I'm going to have another thing. It's going to  be very topical. So I've got a pin show. These were drawn in inkscape, by the way. And then  exported as pings. And Pi game zero can load pings or JPEGs. So whatever file format you  should just be able to save something off the Internet maybe and use it immediately in  the game. And then I draw a function called update. I've got a falling pin show. So a  couple more lines. So two lines at a time. That's what we're aiming for. So if I say  if keyboard.left. I should have chosen a word that's easier to spell. There you go. And  then I said these actors are just rets. So I could do if...  So I think that program is easy enough to grasp. I think by moving all of the complexity  out of the Pi game program that you would write into Pi game zero, we've created something  that is much simpler to get started on. Just at that level where you're transitioning from  something like scratch. So kids will do scratch up to the age of 10, 9, like some subtle nods.  And then in the UK curriculum they have to transition to a textual programming language.  But scratch has the ability to create characters and move them around out of the box. So that  stuff is very accessible. For Python programming, I think we're in a situation where the out  of the box experience is worse. I think if your basic programs are what is your name,  hello name, that's a big gap from where you just were in scratch to where you are in Python.  So Pi game zero fills that niche for getting up to speed, getting something graphical on  the screen to keep kids engaged as their programming career continues.  This was written in Python three. I think that's important as well. So the background  for Pi game and Python three is sort of a bit incomplete. Teachers told me that they  wanted just Python three stuff. They wanted to be able to teach one language. And so the  Python two, three split was a big problem. When this was written, and I think this is  still the case, there is no official release of Pi game for Python three. So part of this  was actually finding ways to install Pi game and Python three. And that is all in the documentation.  So there are ways of doing it. It works. But Pi game is catching up, actually. So there  are now binary wheels on Pi PI. But I think off of the pre-release tag, so you have to  say pip minus minus pre or something. But you can install Pi game. And what else? Okay.  So I was going to show you some of the other things that Pi games zero can do. So draw an  update or your basic bread and butter for creating games for animation. So draw will  be called whenever Pi game zero wants to update. Draw the screen, refresh the screen. Update  is called 60 times a second anyway. So if you don't define update, you can create games  that are click driven. I'll show you the click API. So all I needed to do was create a function  called on mouse down. And Pi game zero will call that function. If I wanted to know what  button I, what button was clicked, I could go button. I can do anything with the button.  So you see I've got Pi game zero is adapting to the call back that I define. And I was  demoing this to, I was sharing this around the internet with some of the teachers who  have been involved in the Pi con UK education track. And Dave had said it doesn't work.  It's just not working. He had written that. And I was dismayed that the very first experience  he had with this tool was something that just didn't work and didn't give me any feedback  on why. So if you misspell a function, it's got a spell checker and will tell you that  you might have misspelled things. I think that's the kind of philosophy of Pi game zero is that  we've done a lot of work actually in catching errors, re-raising them with better messages  because that kind of feedback about if something breaks and it doesn't give you any information  as to why, that is an obstacle to continuing your learning. So every time we could take  something that the underlying Pi game was doing and make it more explicit, we've done  that. I think I will stop there and invite questions because the questions have been  very good in the previous times I've taken this talk. And I'd rather sort of, I want  to know what you want out of this tool. So any questions?  Yeah. So I just wanted to ask if there is like an included  way for easy publishing of your game, especially for kids. Yeah, so because they won't go into  different installation stuff. No. But Pi game zero was created with an understanding  of the kind of portability problems that show up on when you distribute games. So having  done Pi week a lot of times, every time you use open gel, it will work perfectly on all  of the machines you develop on and then somebody will run it and there's a driver problem.  So Pi game is ideal for the distribution of games because it just works. If it's there,  it just works. It's CPU rendering, which is slow, but it's incredibly reliable. Also,  Pi game zero will catch problems with file names, for example. So if I rename...  Then it will give me an error that my game could possibly not be exchanged with somebody  with a different file system that was case-intensive. So that kind of problem is to the best of  my ability dealt with by Pi game zero. The actual packaging of games and distributing  them I think is a future problem, but something I think we would like to solve. Why three?  Yes, so packaging. Yes, and distribution. Yes, I think that comes later. I think that's  something that we should build. The Pi game zero distribution is just like a directory  really. So if you have Pi game zero installed, zipping up a directory and just sharing the  images directory and the sounds directory and the script, generally it's assumed there  is one script. This is for programs that are simple enough to be in one module. Then that  can be run on any computer with Pi game zero. There is another project. I've got internet.  I can show you. I've been working on something called the edgy bundle, which is an attempt  to provide a redistributable bundle for Python for education that has Pi game zero, Pi game,  Pi QT, Nicholas's new editor available. So I think by pursuing all of these avenues,  we can make games easier for, and Python easier for kids to use at school when at home.  What about networking? Because in games, it's also interesting if your colleague from school  can play your latest game. Yes. So Nicholas is putting his hand up.  So there's network zero for that. We're going to answer more for you. So inspired by Dan's  awesome work with Pi game zero. As I mentioned in my keynote, other people have been doing  something zero libraries. Following the same philosophy that Dan has, and Tim Golden, who's  Python core developer based in London, has created network zero. He tried out at the  London Python code, and we had a lot of fun breaking it. Tim has also been trying it out  with teachers as well, and getting their feedback. Just to echo what Dan was saying, getting  teachers involved in this is essential because they're the experts in dealing with children.  As developers, we can think what kids might want to do, but it's teachers who actually  deal with them every day. But there's network zero. I can't see why network zero couldn't  work with Pi game zero. Ben Nuttall of the Raspberry Pi foundation  created GPIO zero, and also the hashtag zero all the things. So what you need to do is  create a Pi game zero project that uses GPIO zero on a Pi zero, Raspberry Pi zero with  network zero as well. Then you've zeroed all the things, and you can legitimately use that  hashtag. Hey, so we talked yesterday evening, and I just want to repeat this suggestion.  You can actually bundle this thing with Pi to X to have a single executable file that  doesn't need installation. I think that would be a good thing to have,  but I have not written that yet. Yeah, of course, but I'm just saying that maybe that's  a good thing to look into. And also you could run the zip files directly, right?  Yes, like zip app, yeah. Thank you. Sorry, that wasn't really a question.  Yeah, so I guess as you suggest, features, I should mention that this is on Bitbucket  zero, and so pull requests are accepted, and this is a community project, and it sort of  relies on the feedback. I'm not a teacher. I am going on feedback from teachers, but  I need the feedback of people who have tried teaching kids with this to improve it. And  any time that you see an error message that is opaque or something doesn't work and doesn't  give a trace back or doesn't give any indication as to why it's not working, that could be  considered a bug. So please report it if nothing else.  Okay, another question. So since arriving in Bilbao, where am I  looking? Sorry. Hello.  Ah, right, right at the back, okay, right underneath the light.  Since arriving at Bilbao, I've discovered that my Spanish is exactly zero, and a lot  of Spanish people's English is also zero. What options are there for internationalising  so that an 11-year-old Spanish kid, for example, doesn't have to learn English to do on mouse  down, et cetera? Yeah, I think it's probably difficult to conceive  of a way that you could internationalise this without making incompatibility problems. I  think also that English is the language of programming, and the Python libraries and  the keywords are English. On the other hand, I think it's very reasonable  that the documentation should be translated. So if anybody would like to contribute a translation  for the documentation or contribute any kind of tutorial or blog post, that would be appreciated.  Okay, the last question. Thanks very much. This looks like it would  be quite a nice way of building not just games, but generic interfaces for interaction  with all kinds of things. How suited is it to play the role of a kind of generic graphical  interface builder? You can write full graphical interfaces  in PyGame, and people have done it, but I think at that point you're probably best if  you want to attack that kind of problem using PyGame itself. There are libraries that do  the GUI widgets for embedding in a PyGame game that mimic the platform widgets, but  I think it's not... That kind of programming becomes more complicated than PyGame zero  is targeting. So I think if you want to do that... I certainly could see that if PyGame  zero was to include some GUI tools to share games, for example, to bundle them up to enter  some details and an icon or something, then that could be done with a GUI that was written  in PyGame, but may not use PyGame zero to do it.  Okay. Thank you, Daniel, for your interest, companies. Thank you very much.  Thank you.
Daniel_Pope_-_Pygame_Zero_0_1727.png Daniel_Pope_-_Pygame_Zero_1728_3119.png Daniel_Pope_-_Pygame_Zero_3120_3275.png Daniel_Pope_-_Pygame_Zero_3276_5675.png Daniel_Pope_-_Pygame_Zero_5676_6911.png Daniel_Pope_-_Pygame_Zero_6912_7163.png Daniel_Pope_-_Pygame_Zero_7164_7403.png Daniel_Pope_-_Pygame_Zero_7404_8531.png Daniel_Pope_-_Pygame_Zero_8532_9287.png Daniel_Pope_-_Pygame_Zero_9288_9563.png Daniel_Pope_-_Pygame_Zero_9564_10043.png Daniel_Pope_-_Pygame_Zero_10044_10091.png Daniel_Pope_-_Pygame_Zero_10092_10223.png Daniel_Pope_-_Pygame_Zero_10224_12875.png Daniel_Pope_-_Pygame_Zero_12876_16655.png Daniel_Pope_-_Pygame_Zero_16656_19319.png Daniel_Pope_-_Pygame_Zero_19320_22355.png Daniel_Pope_-_Pygame_Zero_22356_23423.png Daniel_Pope_-_Pygame_Zero_23424_25151.png Daniel_Pope_-_Pygame_Zero_25152_25343.png Daniel_Pope_-_Pygame_Zero_25344_25883.png Daniel_Pope_-_Pygame_Zero_25884_27515.png Daniel_Pope_-_Pygame_Zero_27516_31079.png Daniel_Pope_-_Pygame_Zero_31080_32087.png Daniel_Pope_-_Pygame_Zero_32088_33827.png Daniel_Pope_-_Pygame_Zero_33828_34907.png Daniel_Pope_-_Pygame_Zero_34908_35339.png Daniel_Pope_-_Pygame_Zero_35340_35950.png