Pygame 迷宫游戏
Pygame Maze Game
好的,所以在我的学校,我们需要做一个高级项目,我决定尝试学习编程。首先,我决定开始学习 VEX 课程,这教会了我一些基本的 "C" 语言。我想为我的实际项目制作一款游戏,所以我决定制作一款愚蠢的迷宫游戏,你必须避免用鼠标触摸墙壁。当我将鼠标悬停在就绪按钮上时,我已经达到了加载实际地图的程度,但实际游戏不会在那里结束。到目前为止,这是我的代码,我很困惑,因为在加载迷宫后,当我触摸墙壁或触摸终点时,程序不会执行它应该做的事情。
import pygame
from pygame import *
pygame.init()
done = False
getready = image.load('ready.png')
backdrop = image.load('map.png')
goon = image.load('continue.png')
maze2 = image.load('map2.png')
loose = image.load('loose.png')
screen = display.set_mode((700, 500))
display.set_caption('Maze Game')
event.set_grab(1)
while done == False:
screen.blit(getready, (0, 0))
display.update()
for e in event.get():
if e.type == KEYUP:
if e.key == K_ESCAPE:
done = True
if screen.get_at((mouse.get_pos())) == (0, 0, 0):
while done == False:
screen.blit(backdrop, (0, 0))
display.update()
if screen.get_at((mouse.get_pos())) == (0, 0, 0):
print("You touched the wall!")
done = True
elif screen.get_at((mouse.get_pos())) == (0, 255, 0):
screen.blit(goon, (0, 0))
display.update()
if e in event.get():
if e.type == KEYUP:
if e.key == K_y:
screen.blit(maze2, (0, 0))
display.update()
if e in event.get():
if e.type == KEYUP:
if e.key == K_y:
done = True
if screen.get_at((mouse.get_pos())) == (0, 0, 0):
screen.blit(victory, (0, 0))
display.update()
time.sleep(3)
for e in event.get():
if e.type == KEYUP:
if e.key == K_ESCAPE:
done = True
pygame.quit()
我知道这可能是非常粗糙的代码,但请记住,我才刚刚开始,欢迎任何有用的输入:)
更新:
我把代码发给表哥,他改成这样:
import pygame
from pygame import *
pygame.init()
done = False
done2 = False
ref = image.load('ready.png')
loose = image.load('loose.png')
cntnu = image.load('continue.png')
goon = 0
screen = display.set_mode((700, 500))
display.set_caption('Maze Game')
event.set_grab(1)
while done == False:
screen.blit(ref, (0, 0))
display.update()
done2 = False
for e in event.get():
if e.type == KEYUP:
if e.key == K_ESCAPE:
done = True
if screen.get_at((mouse.get_pos())) == (0, 0, 0):
ref = image.load('map.png')
done2 = True
if screen.get_at((mouse.get_pos())) == (1, 0, 0):
screen.blit(loose, (0, 0))
display.update()
done2 = True
time.wait(2000)
done = True
if screen.get_at((mouse.get_pos())) == (0, 255, 0):
screen.blit(cntnu, (0, 0))
display.update()
time.wait(3000)
pygame.quit()
实际上问题不在我的代码中,而在我的 python 文件夹中。我重新安装了 python(使用新的安装程序)并且工作正常。感谢大家的帮助:)
从你模糊的问题看来,你没有从你的程序中获得足够的反馈来定位和修复错误,这可能是你可能想要解决的实际问题。
使用可以让您逐行 运行 代码并检查每个变量的状态的工具,您可以从中获益良多,这样您就可以轻松地找出程序何时以及为什么不表现得像你期望的。我会推荐 this discussion on Whosebug(以及其中的参考资料)不同的调试方法。
除了使用代码调试器之外,开始使用记录器在程序执行期间以所需的特定级别打印调试信息可能是个好主意。您可以从上面的 link 中获得有关记录器的更多信息,或者您可以 google 获取它——我相信一旦您知道要寻找什么,您会在那里找到大量教程。
更新:
我解决了这个问题。事实证明,我的代码一直都运行良好。问题实际上出在我的 python 库上。我重新安装了所有东西,一切正常。
好的,所以在我的学校,我们需要做一个高级项目,我决定尝试学习编程。首先,我决定开始学习 VEX 课程,这教会了我一些基本的 "C" 语言。我想为我的实际项目制作一款游戏,所以我决定制作一款愚蠢的迷宫游戏,你必须避免用鼠标触摸墙壁。当我将鼠标悬停在就绪按钮上时,我已经达到了加载实际地图的程度,但实际游戏不会在那里结束。到目前为止,这是我的代码,我很困惑,因为在加载迷宫后,当我触摸墙壁或触摸终点时,程序不会执行它应该做的事情。
import pygame
from pygame import *
pygame.init()
done = False
getready = image.load('ready.png')
backdrop = image.load('map.png')
goon = image.load('continue.png')
maze2 = image.load('map2.png')
loose = image.load('loose.png')
screen = display.set_mode((700, 500))
display.set_caption('Maze Game')
event.set_grab(1)
while done == False:
screen.blit(getready, (0, 0))
display.update()
for e in event.get():
if e.type == KEYUP:
if e.key == K_ESCAPE:
done = True
if screen.get_at((mouse.get_pos())) == (0, 0, 0):
while done == False:
screen.blit(backdrop, (0, 0))
display.update()
if screen.get_at((mouse.get_pos())) == (0, 0, 0):
print("You touched the wall!")
done = True
elif screen.get_at((mouse.get_pos())) == (0, 255, 0):
screen.blit(goon, (0, 0))
display.update()
if e in event.get():
if e.type == KEYUP:
if e.key == K_y:
screen.blit(maze2, (0, 0))
display.update()
if e in event.get():
if e.type == KEYUP:
if e.key == K_y:
done = True
if screen.get_at((mouse.get_pos())) == (0, 0, 0):
screen.blit(victory, (0, 0))
display.update()
time.sleep(3)
for e in event.get():
if e.type == KEYUP:
if e.key == K_ESCAPE:
done = True
pygame.quit()
我知道这可能是非常粗糙的代码,但请记住,我才刚刚开始,欢迎任何有用的输入:)
更新: 我把代码发给表哥,他改成这样:
import pygame
from pygame import *
pygame.init()
done = False
done2 = False
ref = image.load('ready.png')
loose = image.load('loose.png')
cntnu = image.load('continue.png')
goon = 0
screen = display.set_mode((700, 500))
display.set_caption('Maze Game')
event.set_grab(1)
while done == False:
screen.blit(ref, (0, 0))
display.update()
done2 = False
for e in event.get():
if e.type == KEYUP:
if e.key == K_ESCAPE:
done = True
if screen.get_at((mouse.get_pos())) == (0, 0, 0):
ref = image.load('map.png')
done2 = True
if screen.get_at((mouse.get_pos())) == (1, 0, 0):
screen.blit(loose, (0, 0))
display.update()
done2 = True
time.wait(2000)
done = True
if screen.get_at((mouse.get_pos())) == (0, 255, 0):
screen.blit(cntnu, (0, 0))
display.update()
time.wait(3000)
pygame.quit()
实际上问题不在我的代码中,而在我的 python 文件夹中。我重新安装了 python(使用新的安装程序)并且工作正常。感谢大家的帮助:)
从你模糊的问题看来,你没有从你的程序中获得足够的反馈来定位和修复错误,这可能是你可能想要解决的实际问题。
使用可以让您逐行 运行 代码并检查每个变量的状态的工具,您可以从中获益良多,这样您就可以轻松地找出程序何时以及为什么不表现得像你期望的。我会推荐 this discussion on Whosebug(以及其中的参考资料)不同的调试方法。
除了使用代码调试器之外,开始使用记录器在程序执行期间以所需的特定级别打印调试信息可能是个好主意。您可以从上面的 link 中获得有关记录器的更多信息,或者您可以 google 获取它——我相信一旦您知道要寻找什么,您会在那里找到大量教程。
更新: 我解决了这个问题。事实证明,我的代码一直都运行良好。问题实际上出在我的 python 库上。我重新安装了所有东西,一切正常。