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] = "+"