2 Replies - 5735 Views - Last Post: 17 May 2008 - 10:33 AM Rate Topic: -----

#1 Astano  Icon User is offline

  • New D.I.C Head

Reputation: 2
  • View blog
  • Posts: 27
  • Joined: 09-July 07

Convert a string to a class name

Posted 14 May 2008 - 05:33 AM

I am beginning to learn python and am creating a text based rpg. I am having a problem with a bit of the code. I have code that writes details to a save file including player stats etc.

This also saves the players current location which is a reference to an instance of a class. Not sure if this is needed, but this is the code for the location file:

class Locations:
	def __init__ (self, x, y, north, south, east, west):
		self.x = x
		self.y = y
		self.n = north
		self.s = south
		self.e = east
		self.w = west
		
#Initialise the locations
a1_1 = Locations(1,1,0,0,1,0)
a1_3 = Locations(1,3,0,0,1,0)
a2_1 = Locations(2,1,0,1,1,1)
a2_2 = Locations(2,2,1,1,0,0)
a2_3 = Locations(2,3,1,0,1,1)
a3_1 = Locations(3,1,0,0,0,1)
a3_3 = Locations(3,3,0,0,0,1)



#Set the directional variables to point to the location a player
#would be in if they moved in that direction
a1_1.e = a2_1
a1_3.e = a2_3
a2_1.s = a2_2
a2_1.e = a3_1
a2_1.w = a1_1
a2_2.n = a2_1
a2_2.s = a2_3
a2_3.n = a2_2
a2_3.e = a3_3
a2_3.w = a1_3
a3_1.w = a2_1
a3_3.w = a2_3



The method I use to save and then to load is below:

				save = raw_input("Do you want to save?")
				if save == "y":
						SaveString = str(Player1.n) + "\n" + str(Player1.l) + "\n" + str(Player1.hp) + "\n" + \
										 str(Player1.a) + "\n" + str(Player1.d) + "\n" + str(Player1.xp) + "\n" + \
										 str(Player1.maxhp) + "\n" + str(Player1.heal) + "\n" + \
										 str(Player1.dmin) + "\n" + str(Player1.dmax) + "\n" + str(Player1.g)
						SaveGame = open("save.txt",'w')
						SaveGame.write(SaveString)
						SaveGame.close()


#Initialise the player with default stats
Player1 = Player('Default',1,30,30,10,2,2,0,1,3,100)

#The bit that loads a previously saved game - at the moment there can only be one saved game at a time
LoadGame = raw_input("Do you want to continue on a previously saved adventure?")

if LoadGame == "y":

		z = open('save.txt','r')
		x = z.readline()		
		Player1.n = x[:-1]
		Player1.l = int(z.readline())
		Player1.hp = int(z.readline())
		Player1.maxhp = int(z.readline())
		Player1.heal = int(z.readline())
		Player1.a = int(z.readline())
		Player1.d = int(z.readline())
		Player1.xp = int(z.readline())
		Player1.dmin = int(z.readline())
		Player1.dmax = int(z.readline())
		Player1.g = int(z.readline())
		CurrentPosition


		print "\nWelcome back " + Player1.n + ", good to see you again."



There is nothing currently to save the location as my problem is that when I load the info back into the variables it is loaded as a string and that won't point to the class instance I need it to.

I hope that makes sense?

What I need to be able to do is convert the string into something that points to the correct instance of the class Locations.

Can anyone help?

(Just incase it is needed I have zipped up the complete set of files I use to run the game.)

Attached File(s)



Is This A Good Question/Topic? 0
  • +

Replies To: Convert a string to a class name

#2 .Maleficus.  Icon User is offline

  • D.I.C Head

Reputation: 2
  • View blog
  • Posts: 129
  • Joined: 07-March 08

Re: Convert a string to a class name

Posted 16 May 2008 - 03:35 AM

http://python.active...ule-pickle.html

More specifically, http://python.active...ickle-inst.html.
Was This Post Helpful? 0
  • +
  • -

#3 Astano  Icon User is offline

  • New D.I.C Head

Reputation: 2
  • View blog
  • Posts: 27
  • Joined: 09-July 07

Re: Convert a string to a class name

Posted 17 May 2008 - 10:33 AM

Thank you very much! That's an enormous help :)

This post has been edited by Astano: 17 May 2008 - 10:33 AM

Was This Post Helpful? 0
  • +
  • -

Page 1 of 1