Anyway, I found the main problem was the pygame.display.flip() command, I didn't realise that it matters where you put the command and that it should be done AFTER draw commands, I moved it around and it works (although the screen does still hang). I've looked at yours and think I'll study that for a bit and hopefully learn a thing or two.
It's a bit non-intuitive, but it's actually a really good thing that they're doing there in the long run. By default, Pygame will
double buffer all drawing for you, meaning that all draw screens are to a second 'off screen' version of your game. What flip does is exchanges the onscreen one and the offscreen one. The advantage is that even if you have *a lot* of drawing commands, you still won't see the in between steps where the image is only partially drawn.
Carrying on with Python, I've noticed a few external programs necessary to really get the best out of Python. Tkinter and Pygame seem to be among the most popular, are there any others that I should be aware of/download? And are there ways of doing what is possible in pygame/tkinter in Python alone?
Just about every language has external libraries necessary to make games. Mostly because games require a lot of features (mostly graphics, but also sound/keyboard input/etc) that aren't necessary for non-games. It's a good experience to have because it shows how to install packages in the language, but I agree that it can be annoying ( Pygame is particularly bad, it took me about 15 minutes to get it set up on my machine to debug your code earlier
).
You could try using the
curses library. That's built in for Python 2.7+ (I think) and will let you build ASCII games. It's a different programming style and the API isn't necessarily the easiest to get used to, but there are a few good curses tutorials out there. Since what you were already working is basically a curses game anyways, it might not be too big a switch.
Sorry about all the questions, if you couldn't tell I'm fairly new to coding
No worries from me! I teach CS IRL (and quite often the 101 course), so I'm more to used to question. It's always refreshing to see someone independently choose to learn to code.
About all I'd worry is if people get annoyed at the thread filling up with this one subtopic, but if that's a problem, I'm sure someone will speak up.