I have some sample code of working with sprites and walls here: http://programarcadegames.com/index.php?chapter=example_code&lang=en
Paul Vincent Craven On Sun, Nov 25, 2012 at 7:20 AM, myles broomes <[email protected]>wrote: > I'm coding a pac man clone but I cant place the walls correctly. Heres > my code: > #Pac-man > #A clone of the classic game, Pac-man > > import pygame,sys > from pygame.locals import * > pygame.init() > WINWIDTH=640 #width of the window in pixels > WINHEIGHT=480 #height of the window in pixels > FPS=30 #frames per second > # r g b > YELLOW=(255,255, 0) > BLACK= ( 0, 0, 0) > WHITE= (255,255,255) > BLUE= ( 0, 0,255) > RED= (255, 0, 0) > #the layout of walls on the level > levelLayout=""" > ________ > | __ | > | |__| | > |________| > """ > def get_text(underline,text,size,pos,color): > """Returns a rect object and a surface object to be displayed on the > screen. """ > BASICFONT=pygame.font.Font('freesansbold.ttf',size) > BASICFONT.set_underline(underline) > surfObj=BASICFONT.render(text,True,color) > rectObj=surfObj.get_rect() > rectObj.center=(pos) > return surfObj,rectObj > def run_game(): > """Iterates through the game loop until the player is game over. """ > #default variables for the pac-man object that the player controls > pacPosX=int(WINWIDTH/2) > pacPosY=int(WINHEIGHT/2) > #tracks if the player is game over or not > game_over=False > #tracks which direction the player wants to move in, stationary by > default > direction=None > #tracks which part of the level layout is being iterated over > indexX=0 > indexY=0 > lineList=[] > while not game_over: > DISPLAYSURF.fill(BLACK) > for wall in levelLayout: #iterates through the level layout and > places walls accordingly > if wall=="|": > lineList.append([(indexX,indexY),(indexX,indexY+21)]) > elif wall=="_": > lineList.append([(indexX,indexY),(indexX+80,indexY)]) > indexX+=80 > if indexX==WINWIDTH: > indexX=0 > indexY+=160 > indexX=0 #reset the X index > indexY=0 #reset the Y index > print(lineList) > for drawWall in range(len(lineList)): #draws the walls onto the > screen > > pygame.draw.line(DISPLAYSURF,BLUE,lineList[drawWall][0],lineList[drawWall][1]) > #draws pac man > pygame.draw.circle(DISPLAYSURF,YELLOW,(pacPosX,pacPosY),10) > > for event in pygame.event.get(): > if event.type==QUIT: > pygame.quit() > sys.exit() > elif event.type==KEYUP: #find out which direction the player > wants pac man to move in > if event.key==K_LEFT: > direction='left' > elif event.key==K_RIGHT: > direction='right' > elif event.key==K_UP: > direction='up' > elif event.key==K_DOWN: > direction='down' > if direction: #if the player wants to move pac man, move him in > the desired direction > if direction=='left': > pacPosX-=6 > elif direction=='right': > pacPosX+=6 > elif direction=='up': > pacPosY-=6 > elif direction=='down': > pacPosY+=6 > #wrap pac man to the opposite end of the screen if he goes off > if pacPosX<0: > pacPosX=WINWIDTH > elif pacPosX>WINWIDTH: > pacPosX=0 > elif pacPosY<0: > pacPosY=WINHEIGHT > elif pacPosY>WINHEIGHT: > pacPosY=0 > pygame.display.update() > FPSCLOCK.tick(FPS) > def main(): > global DISPLAYSURF,FPSCLOCK > > DISPLAYSURF=pygame.display.set_mode((WINWIDTH,WINHEIGHT)) > pygame.display.set_caption('Pac-Man') > FPSCLOCK=pygame.time.Clock() > while True: > run_game() > main() > > For some reason, the walls end up all over the place and I'm not too sure > why. Any help is much appreciated. > > Myles Broomes > >
