Issues with python/libtcod

2012-11-07 Thread Graham Fielding




Hey, all. I'm trying to program a roguelike, using the wonderful tutorials 
written by João F. Henriques (a.k.a. Jotaf), but I've stumbled onto a bit of a 
problem setting up the game's inventory system, and I was hoping someone could 
help me out. Here's a code snippet, including the affected line. #def 
menu(header, options, width):
#if len(options) > 26: raise ValueError('Cannot have a menu with more than 
26 options.')
 
#calculate total height for the header (after auto-wrap) and one line per 
option
#header_height = libtcod.console_height_left_rect(con, 0, 0, width, 
SCREEN_HEIGHT, header)
#height = len(options) + header_height
In a nutshell: def menu() is an all-encompassing 'menu processor' function -- 
it contains a standardized menu layout that can be called, from anywhere in the 
stack, to create a generic menu. When I launch the game to check things out, 
everything runs smoothly until I try to open the inventory window -- at which 
point, IDLE  tosses up an AttributeError:
File "C:/Python Project/Roguelike.py", line 602, in 
player_action = handle_keys()
  File "C:/Python Project/Roguelike.py", line 531, in handle_keys
chosen_item = inventory_menu('Press the key next to an item to use it, or 
any other to cancel.\n')
  File "C:/Python Project/Roguelike.py", line 487, in inventory_menu
index = menu(header, options, INVENTORY_WIDTH)
  File "C:/Python Project/Roguelike.py", line 447, in menu
header_height = libtcod.console_height_left_rect(con, 0, 0, width, 
SCREEN_HEIGHT, header)
AttributeError: 'module' object has no attribute 'console_height_left_rect' 
I've tried moving the entire def menu() function to various sections of the 
stack, I've changed its arguments manually, and I've even removed the affected 
line entirely to see if that would help; nothing seems to work, and it's only 
when def menu() is called that this happens. Anyone got any ideas what could be 
going flooey?-- 
http://mail.python.org/mailman/listinfo/python-list


Writing game-state data...

2012-11-08 Thread Graham Fielding




Hey, folks, me again! I've been puzzling over this for a while now: I'm trying 
to write data to a file to save the state of my game using the following 
function: def save_game():
#open a new empty shelve (possibly overwriting an old one) to write the 
game data
file_object = open('savegame.sav', 'wb')
file['map'] = map
file['objects'] = objects
file['player_index'] = objects.index(player)  #index of player in objects 
list
file['inventory'] = inventory
file['game_msgs'] = game_msgs
file['game_state'] = game_state
file['stairs_index'] = objects.index(stairs)
file['dungeon_level'] = dungeon_level
file.close() However, while 'savegame.sav' is created in the directory I 
specify, the function dies on file['map'] = map.  This is the end of the stack 
trace: 
  File "C:\Python Project\Roguelike.py", line 966, in save_game
file['map'] = map
TypeError: 'type' object does not support item assignment Now, the map is 
randomly generated -- could that be an issue? Should I just scrap the current 
system and use pickle?-- 
http://mail.python.org/mailman/listinfo/python-list


RE: Writing game-state data...

2012-11-09 Thread Graham Fielding


 > To: [email protected]
> From: [email protected]
> Subject: Re: Writing game-state data...
> Date: Fri, 9 Nov 2012 07:37:56 +
> 
> On 09/11/2012 07:20, Graham Fielding wrote:
> >
> > Hey, folks, me again! I've been puzzling over this for a while now: I'm 
> > trying to write data to a file to save the state of my game using the 
> > following function: def save_game():
> >  #open a new empty shelve (possibly overwriting an old one) to write 
> > the game data
> >  file_object = open('savegame.sav', 'wb')
> >  file['map'] = map
> >  file['objects'] = objects
> >  file['player_index'] = objects.index(player)  #index of player in 
> > objects list
> >  file['inventory'] = inventory
> >  file['game_msgs'] = game_msgs
> >  file['game_state'] = game_state
> >  file['stairs_index'] = objects.index(stairs)
> >  file['dungeon_level'] = dungeon_level
> >  file.close() However, while 'savegame.sav' is created in the directory 
> > I specify, the function dies on file['map'] = map.  This is the end of the 
> > stack trace:
> >File "C:\Python Project\Roguelike.py", line 966, in save_game
> >  file['map'] = map
> > TypeError: 'type' object does not support item assignment Now, the map is 
> > randomly generated -- could that be an issue? Should I just scrap the 
> > current system and use pickle?  
> >
> 
> Please always give the complete stack trace, it's provided for a 
> purpose.  Here I'll grope around in the dark and guess that you need 
> file_object = shelve.open(...
> 
> -- 
> Cheers.
> 
> Mark Lawrence.
> 
> -- 
> http://mail.python.org/mailman/listinfo/python-list Here's the full stack 
> trace:   File "C:\Python Project\Roguelike.py", line 1048, in 
main_menu()
  File "C:\Python Project\Roguelike.py", line 1030, in main_menu
play_game()
  File "C:\Python Project\Roguelike.py", line 1007, in play_game
player_action = handle_keys()
  File "C:\Python Project\Roguelike.py", line 717, in handle_keys
quit_menu() #exit game
  File "C:\Python Project\Roguelike.py", line 698, in quit_menu
save_game()
  File "C:\Python Project\Roguelike.py", line 909, in save_game
file['map'] = map
TypeError: 'type' object does not support item assignment
>>>  What I'm trying to do is figure out a way to get the game to save its 
>>> state; I compiled it to an EXE using py2exe, but after that, the game 
>>> refuses to hold onto its data. Thanks for all the help! 
  -- 
http://mail.python.org/mailman/listinfo/python-list


Getting a seeded value from a list

2012-11-18 Thread Graham Fielding




Hello!  Clueless noob again! :) This time around, I'm trying to figure out the 
random.seed() function -- specifically, I'd like to retrieve the seeded values 
from a list (which I've called levelSeed), and use them in a random-dungeon 
generator.  The numbers are generating and storing properly, but I can't find 
any examples online that aren't specific to a particular purpose (such as 
mathematics, arrays, and the like). Would I use 'getstate' when the dungeon is 
generated, or is there another method that would be better suited to the task?  
 -- 
http://mail.python.org/mailman/listinfo/python-list


RE: Getting a seeded value from a list

2012-11-24 Thread Graham Fielding

Just a quick update: after enlisting some help from a friend, we managed to get 
things working :)  Thanks for all the help. In the area of items and monsters, 
they're both chosen from lists, based on some simple selection criteria (number 
per room, total per level, chance of appearance).  Now, the major task is to 
reconfigure the distribution system to let items and monsters stay in place 
between levels.
 > Date: Sat, 24 Nov 2012 09:32:46 +1100
> Subject: Re: Getting a seeded value from a list
> From: [email protected]
> To: [email protected]
> 
> On Sat, Nov 24, 2012 at 3:27 AM, Prasad, Ramit
>  wrote:
> > Steven D'Aprano wrote:
> >>
> >> On Wed, 21 Nov 2012 14:41:24 +1100, Chris Angelico wrote:
> >>
> >> > However, this still means that the player will see the exact same level
> >> > regenerated every time, absolutely fresh. As previously stated in this
> >> > thread, that's not usually a good thing for encounters, treasure, etc.
> >> > Once some nasty critter has been killed, he should STAY killed! :)
> >>
> >> Why? That isn't true in real life, why should it be true for games?
> >>
> >
> > It is not true in all games. I have seen games where treasures
> > regenerate in the same location except for key items. Same goes
> > for enemies (where only "bosses" do not regenerate). It really
> > just depends on the type of game you are playing--designing
> > in this case.
> 
> Perhaps they regenerate, but do they regenerate from the exact same
> random seed? For instance, in Murkon's Refuge, the maps are
> handcrafted and thus constant every time you enter a particular level
> - but go downstairs and upstairs, and the monsters and treasure
> regenerate, different from last time.
> 
> Of course, if the idea is that you're rewinding time, then it makes
> good sense for you to see the exact same pattern of enemies.
> 
> ChrisA
> -- 
> http://mail.python.org/mailman/listinfo/python-list
  -- 
http://mail.python.org/mailman/listinfo/python-list


RE: Is it bad style to override the built-in function `type`?

2012-11-24 Thread Graham Fielding

(This comes from my experience writing interactive fiction with the TADS 
workbench; YMMV) As a rule, it's generally unwise to modify built-in variables 
without thoroughly documenting your changes.  Your modifications might not hold 
up if the built-in definitions are revised (which would break your program) and 
you could introduce later version/compatibility issues with other things that 
use/need the 'standard' definitions. That said, if done cautiously, modifying 
the built-ins can have a net benefit; just be careful to indicate what you've 
changed so you can debug it properly, and -- if possible -- distribute yoru 
modified code along with a copy of the original, so that if issues arise, your 
users can restore the stable code without digging around in the guts of the 
software.
> > 
> > [...]
> > 
> > | I know it's a common beginner's mistake to incautiously override
> > 
> > | built-in functions. However, we put in a lot of research and have come to
> > 
> > | the conclusion that, if Python had not already defined it, `type` would
> > 
> > | be the best name. We are now trying to evaluate how bad the disadvantages
> > 
> > | you mention are in comparison to the advantage to having a name that is
> > 
> > | more intuitive to use in the problem domain.
> > 
> > | 
> > 
> > | Can you somehow relate to my explanations, or are your experiences
> > 
> > | with overwriting built-in variables so bad that you would advise to
> > 
> > | never ever do it?
> > 
> > 
> > 
> > My own experience says that it is a thing best avoiding without a truly
> > 
> > amazing reason not to.
> > 
> > 
> > 
> > I urge you not to: type(foo) is a very basic Python idiom and you're
> > 
> > breaking it. One day it _will_ bite you or your users. You will
> > 
> > understand, but I would give goods odds that some of your users will not
> > 
> > the day they go to examine the type of an object for perfectly normal
> > 
> > pythonic reasons.
> > 
> > 
> > 
> > Example: I have a module that stores "objects" and they have as a
> > 
> > primary key a "name" and a "type" - not Python types, just strings.
> > 
> > Accordingly I have a similar situation to yours: the desire to use the
> > 
> > word "type". Fortunately for me, as an attribute in (usually small) code
> > 
> > chunks I can usually go:
> > 
> > 
> > 
> >   t = foo.type
> > 
> >   ... work with t here ...
> > 
> > 
> > 
> > Where I must pass one as a parameter I use the common convention of
> > 
> > naming the parameter "type_" at the receiving end.
> > 
> > 
> > 
> > For the calling end, as in your case, you want to use:
> > 
> > 
> > 
> >   type(blah)
> > 
> > 
> > 
> > Is it at all possible to make all uses of your "type" function method
> > 
> > calls? Eg:
> > 
> > 
> > 
> >   something.type("text to type")
> > 
> > 
> > 
> > It avoids the overloading while keeping your desired name.
> > 
> > -- 
> > 
> > Cameron Simpson 
> > 
> > 
> > 
> > Wouldn't it be great if all emergency stopping situations occurred on your
> > 
> > favourite bit of road..you'd probably know about it before it happened
> > 
> > and would be able to take other evasive action.
> > 
> > - Neville Brabet
> 
> -- 
> http://mail.python.org/mailman/listinfo/python-list
  -- 
http://mail.python.org/mailman/listinfo/python-list


Issue with seeded map generation

2012-12-08 Thread Graham Fielding




Hey, all! I've managed to get my project to a semi-playable state (everything 
functions, if not precisely the way I'd like it to).  One small issue is that 
when the player movs from one level to the next, the items and monsters in the 
previous level all 'reset' and return to the positions they had when the level 
was seeded. I've puzzled over (and attempted) quite a few workarounds, and had 
no success.  I don't want to pickle the entire level (that would be overkill 
for what I need), but I want to update the item/monster locations so the player 
can drop an item and come back to it later. Should I add something to the 
'drop_item' function, or call soemthing in make_map?
  -- 
http://mail.python.org/mailman/listinfo/python-list


RE: What are the minimum requirements to get a job in?

2012-12-13 Thread Graham Fielding


 
> Date: Thu, 13 Dec 2012 18:49:32 -0800
> Subject: What are the minimum requirements to get a job in?
> From: [email protected]
> To: [email protected]
> 
> My aim is to get a job into google or cisco or facebok.
> I have basic knowledge in python,c,java and good in javascript,html,css, 
> database concepts.
> If i learn django and python. Shall I get my dream job?
> 
> Please suggest me
> -- 
> http://mail.python.org/mailman/listinfo/python-list
You'd need a fair bit of industry cred to get picked up at a place like Google, 
I'd imagine.  By all means, keep pursuing your dream, but temper your 
expectations.   -- 
http://mail.python.org/mailman/listinfo/python-list


RE: AttributeError: ' ' object has no attribute ' '

2013-02-23 Thread Graham Fielding

 > Date: Sat, 23 Feb 2013 10:22:54 -0800
> Subject: AttributeError:  '  ' object has no attribute '  '
> From: [email protected]
> To: [email protected]
> 
> I am using Ubuntu 12.10, and Python 2.7.3, GNU Radio Companion v3.6.3.  I get 
> the this error in terminal: 
> 
>  in __init__
> self.wxgui_waterfallsink2_0.set_callback(wxgui_waterfallsink2_0_callback)
>   File "/usr/local/lib/python2.7/dist-packages/gnuradio/gr/hier_block2.py", 
> line 54, in __getattr__
> return getattr(self._hb, name)
> AttributeError: 'gr_hier_block2_sptr' object has no attribute 'set_callback'
> 
> I have been getting this error in multiple programs.  So what is stopping the 
> program here?  There is no Attribute .set_callback obviously. But where is 
> this attribute missing from exactly and how do i put it where it should be?  
> -- 
> http://mail.python.org/mailman/listinfo/python-list
That error means that 'gr_hier_block2_sptr' doesn't have enough information to 
proceed. If you look at the top of the defintion (for example, 'def 
gr_hier_block2_sptr, [attribute], [another attribute]'), that's where you 
should find .set_callback.  If it's not there, you'l just need to add it to the 
end; if it is there, then the attribute is probably given a different name 
somewhere else  (so you'll just need to find out its new name and update the 
existing entry). -- 
http://mail.python.org/mailman/listinfo/python-list