Jump to content

  • Log In with Google      Sign In   
  • Create Account

Pygame level changing help


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
No replies to this topic

#1 Gerjj   Members   -  Reputation: 100

Like
0Likes
Like

Posted 05 February 2012 - 05:26 PM

Straight to the point: I need to send a value from a function in a class to the main function, and can't figure it out without confusing myself.

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.

Thanks! Posted Image

Sponsor:



Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS