two multidimensional lists for dimensional bidimensional array python-2.7 multidimensional-array pygame typeerror tile

python 2.7 - lists - Python, matrices multidimensionales



python for two dimensional array (1)

Your gameMap es en realidad una lista de cadenas, no una lista de listas. Está obteniendo ese error porque está tratando de asignar una letra en la cadena. Si quieres que sea una lista de listas, deberás hacer algo como esto:

def createRoom(): return [list(row.rstrip(''/n'')) for row in open(''Room 1.txt'')]

Así que hago programación de computadora como materia escolar y me he propuesto crear un juego de rastreo de mazmorras. Esto fue principalmente para presentarme el uso de matrices multidimensionales y la lectura de archivos. Pude leer con éxito desde un archivo de texto y crear el mapa, pero tuve problemas para mover el reproductor. Me sale el error:

TypeError: ''str'' object does not support item assignment

Esto es cuando estaba tratando de mover al jugador, lo que me hace pensar que he declarado incorrectamente el conjunto. Ayuda por favor! Aquí está el código:

import pygame, sys from pygame.locals import * def getResources(): floorImage = pygame.image.load("/Volumes/Data/Users/name/Desktop/Python/Scripts/Pygame/RPG GAME FOLDER/floor.png") wallImage = pygame.image.load("/Volumes/Data/Users/name/Desktop/Python/Scripts/Pygame/RPG GAME FOLDER/wall.png") return (floorImage, wallImage) def createRoom(): f = open("Room 1.txt", "r") gameMap = [] for x in f: row = "" for character in x: row = row + character if "/n" in row: row = row[:len(row) - 1] gameMap.append(row) return (gameMap) def drawRoom(gameMap, floorImage, wallImage): for i in range(0, len(gameMap)): for x in range(0, len(gameMap[i])): xC = x * 30 y = i * 30 if gameMap[i][x] == "*": screen.blit(wallImage, (xC, y)) elif gameMap[i][x] == ".": screen.blit(floorImage, (xC, y)) elif gameMap[i][x] == "+": gameMap[i][x] = "." gameMap [i-1][x] = "+" pygame.init() FPS = 50 screen = pygame.display.set_mode((600, 600), 0, 32) pygame.display.set_caption("RPG Game - name") clock = pygame.time.Clock() # Colours black = (0, 0, 0) white = (255, 255, 255) # Player Variables playerMotion = { "right": False } # Initial Functions floorImage, wallImage = getResources() gameMap = createRoom() while True: clock.tick(FPS) screen.fill(black) drawRoom(gameMap, floorImage, wallImage) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_a: playerMotion["right"] = True pygame.display.update()

PD Obtengo el error cuando trato de mover el signo "+" que representa al personaje alrededor de un mapa

elif gameMap[i][x] == "+": gameMap[i][x] = "." gameMap [i-1][x] = "+"