Pygame迷宫游戏

时间:2015-01-08 02:37:32

标签: python pygame maze

好的,所以在我的学校,我们需要做一个高级项目,我决定尝试接受编程。首先,我决定开始参加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(使用新的安装程序),它工作正常。感谢每一位帮助:)

2 个答案:

答案 0 :(得分:0)

从您模糊的问题看来,您没有从程序中获得足够的反馈来本地化和修复错误,这可能是您可能想要解决的实际问题。

通过使用可以让您逐行运行代码并检查每个变量的状态的工具,您可以从中受益匪浅,因此您可以轻松找出程序何时以及为何不按预期运行。我建议使用不同调试方法的this discussion on StackOverflow(以及其中的参考资料)。

除了使用代码调试器之外,最好在程序执行期间以所需的特异性级别开始使用记录器来打印调试信息。您可以从上面的链接获得有关记录器的更多信息,或者您可以直接进行谷歌搜索 - 我相信一旦您知道要查找的内容,您就会发现大量的教程。

答案 1 :(得分:0)

更新: 我解决了这个问题。事实证明我的代码一直都很好。问题实际上是我的python库。我安装了一切,工作正常。