The game I'm making is a very simple platformer made using Pygame. Basically, you jump around on blocks, and get to an end block that will either end the level or change the level. The way my game creates the levels is by taking the letter P in a text document, and converting each of those into a block platform. The letter E is created into the end block.
(For a quick visual example of the game, youtube)
for row in level: for col in row: if col == "P": p = Platform(x, y) platforms.append(p) entities.add(p) if col == "E": e = ExitBlock(x, y) platforms.append(e) entities.add(e) x += 32 y += 32 x = 0
The above code is what takes the letters and converts them into block using a couple of functions. the 'level' on the first line is a list that is pulled from a text file using the read function. This way, the level can simply be changed by changing the file that is being read from:
levelID = 1 if levelID == 1: file = "levels\level1.txt" if levelID == 2: file = "levels\level2.txt" if levelID == 3: file = "levels\editable.txt" f = open(file,"r") data = f.readlines() f.close() level = (data)
My problem is, I want the LevelID to be incremented by 1 whenever the player gets to the end block. However, then collision between the player and the end block are down in a collision function in the Player class:
for p in platforms: if sprite.collide_rect(self, p): if isinstance(p, ExitBlock): pass
I've currently set it to pass, as this just enables me to run the code.
How could I create a way that will enable the collision between the player and the end block increment the LevelID?
Am I going about this a way that overcomplicates things?
I hope this post makes sense, and that I've provided the right information.
I've posted the full code here if you want to have a look.