2015-01-08 14 views
3

좋아, 내 학교에서 우리는 시니어 프로젝트를해야하고, 나는 프로그램을 배우려고 노력했다. 시작하려면 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() 

나는 이것이 아마 정말 원유 코드 알고 있지만 난 그냥 시작 해요 명심하고, 어떤 도움이 입력에 감사드립니다 것을 :

UPDATE : 내가, 내 사촌 코드를 전송하고 그는 이것을 다음과 같이 변경했습니다 :

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() 

사실 내 파이썬 문제는 내 파이썬 폴더에 없습니다. 파이썬 (새로운 인스톨러로)을 다시 설치했는데 제대로 작동합니다. 도움을 주신 모든 분들께 감사드립니다.

+2

그래서 실제 문제는 무엇입니까? – Raptor

+0

[여기 당신이 이해하는 데 도움이되는 비디오] (http://youtu.be/Nq0pB8M6XNY) –

+0

는 (리눅스 머신에서) 코드를 시도했는데 사용했던 예제 이미지에서 작동합니다. 나는 get_pos()와 이미지의 색깔에 문제가 있다는 것을 기대한다. 색상 값을 print'ing하여 확인 했습니까? – zormit

답변

0

업데이트 : 문제가 해결되었습니다. 내 코드가 전체적으로 잘 작동하는 것으로 나타났습니다. 문제는 실제로 내 파이썬 라이브러리와 함께했다. 나는 모든 것을 다시 설치하고 잘 작동했다.

0

귀하의 모호한 질문에 따르면 프로그램에서 버그를 지역화하고 수정하는 데 충분한 피드백을받지 못하는 것 같습니다. 이것이 실제 문제가 될 수 있습니다.

코드를 한 줄씩 실행하고 각 변수의 상태를 검사 할 수있는 도구를 사용하면 많은 이점을 얻을 수 있으므로 프로그램이 예상 한대로 동작하지 않는시기와 이유를 쉽게 알아낼 수 있습니다. 나는 다른 디버깅 접근 방식을 사용하여 this discussion on StackOverflow을 권장한다.

코드 디버거를 사용하는 것 외에도 원하는 수준의 특수성으로 프로그램을 실행하는 동안 디버거 정보를 인쇄하기 위해 로거를 사용하는 것이 좋습니다. 위의 링크에서 로거에 대한 자세한 정보를 얻을 수 있습니다. 아니면 그냥 Google로 검색 할 수 있습니다. 검색 할 항목을 알게되면 여기에서 많은 수의 자습서를 찾을 수있을 것입니다.

+0

좋아, 내가 너무 애매한 것 같아 문제는 첫 번째 루프 후에 검은 색 점에 마우스를 올려 놓으면 프로그램이 내가 원하는 것처럼 미로를 뽑아 버리는 것이다. 그 후에 벽에 손을 대면 화면 상에 게임을 보여 주려고했으나 그렇지 않습니다. 모든 코드는 내 마우스가 색상을 터치하는 것을 기반으로합니다. 예를 들어 녹색을 터치하면 다음 미로로 이동해야합니다. 내가 검은 색을 만질 때 그것은 화면 위로 게임을 끌어 올 것입니다. 그러나 처음으로 커서를 검은 색으로 눌러 올바른 위치에 커서를 올려 놓으면지도를 위로 당긴 후 아무 것도 감지하지 못합니다. 그게 내 문제 야. –

+0

[정확한 (정확히)] (http://youtu.be/Nq0pB8M6XNY) –

+0

안녕하세요. Chris, 나는 당신을 불쾌하게 할 뜻이 없었습니다. 내 컴퓨터에 파이 게임을 설치할 이유가 없으므로 나중에 다른 컴퓨터에서 시도해 보겠습니다. –