【发布时间】:2012-08-06 04:17:43
【问题描述】:
感谢您抽出宝贵时间阅读本文。我正在尝试使用 pygame 创建一个非常基本的瓷砖游戏系统。我不是最擅长 pygame,所以我可能遗漏了一些相当明显的东西。到目前为止,我将所有内容都放在一个文件中。我现在所拥有的似乎真的很草率,可能有一种更有效的方法,但现在我只是使用二维数组,其数字等于特定类型的瓷砖(草、水等)。为此,我正在使用 numpy,因为这是有人向我推荐的。虽然我不知道我是否喜欢这种方法,因为如果将来我有一些不仅仅是图形的图块,并且有更具体的属性怎么办?例如宝箱或陷阱?您将如何构建它?
但无论如何,我的问题是现在屏幕只是黑色的,并且没有绘制草砖。
代码如下:
import numpy
import pygame
import sys
from pygame.locals import *
pygame.init()
fpsClock = pygame.time.Clock()
windowWi = 800
windowHi = 608
mapWi = 50 # *16 = 800, etc
mapHi = 38
# ----- all of the images ------------------------------
grass1 = pygame.image.load('pictures\(Grass\grass1.png')
#-------------------------------------------------------
screen = pygame.display.set_mode((windowWi, windowHi))
pygame.display.set_caption("Tile Testing!")
gameRunning = True
groundArray = numpy.ones((mapWi,mapHi))
def drawMapArray(maparray):
for x in range(mapWi,1):
for y in range(mapHi,1):
#Determines tile type.
if maparray[y,x] == 1:
screen.blit(grass1, (x*16, y*16))
else:
print "Nothing is here!"
while gameRunning:
drawMapArray(groundArray)
for event in pygame.event.get():
if event.type == "QUIT":
pygame.quit()
sys.exit()
#Updates display and then sets FPS to 30 FPS.
pygame.display.update()
fpsClock.tick(30)
请随时引导我朝着更好的结构方向前进,因为我是游戏设计的新手,希望得到任何反馈!
谢谢, 瑞恩
编辑: 我已经尝试过了,这在逻辑上是有道理的,但是我得到了一个超出范围的索引错误。
def drawMapArray(maparray):
for x in range(0,mapWi,1):
for y in range(0,mapHi,1):
#Determines tile type.
if maparray[y,x] == 1:
screen.blit(grass1, (x*16, y*16))
else:
print "Nothing is here!"
【问题讨论】:
-
你的意思是在文件名
pictures\(Grass\grass1.png中有一个“(”吗? -
我认为您的
range()调用可能是错误的方法,请尝试for x in range(1, mapWi):。 -
文件就是这样命名的哈哈,这些只是我用于测试目的的一些开源 16 位平铺图像。我会尽快更改它,因为它看起来很混乱。
-
但是每当我似乎更改 range() 调用时,我都会得到索引超出范围的错误。
-
我的意思是人们可能会,而不是请可能当然:-)