2014-02-13 4 views
1

저는 파이 게임 (Pygame) 스크립팅 세계에 비교적 익숙하며 게임 작성에 도움이 필요했습니다. 시작 지점에서 도착 지점으로 이동하는 플레이어와의 미로가 될 것입니다.화면 이동하기

필자는 숫자 키를 누를 때 문자 (.png 파일)가 이동하는 창을 만들어 기본 사항부터 시작하기로 결정했습니다.

내 .png이 화면에 도달하면 문제가 발생합니다. 화면에서 어떻게 벗어나지 않도록 할 수 있습니까? (추신 : 나는 가능한 한 수업을 사용하지 않아도되는 해결책을 원한다. 나는 그 사람들을 절대 싫어한다. 나는 전혀 그다지 싫어하지 않는다.

내가 작성한 코드는 다음과 같다. 지금까지 :

수입 librairies/importating 라이브러리

import pygame 
from pygame.locals import * 


pygame.init() 

pygame.time.Clock().tick(30) 

F1=pygame.display.set_mode((640, 480), RESIZABLE) # création fenêtre/creating main window 

bg=pygame.image.load("background.jpg").convert() # chargement et conversion de l'image/loading and converting picture 
F1.blit(bg, (0,0)) #collage de l'image de fond/sticking background 
pygame.display.flip() # raffraichissement écran/refreshing screen 

perso=pygame.image.load("perso.png").convert_alpha() 
F1.blit(perso, (0,0)) 
pygame.display.flip() 

F1_rect=F1.get_rect() 
position=perso.get_rect() 
F1.blit(perso, position) 

pygame.display.set_caption("Deadalus V 0.0.0.1") 

continuer = 1 # création d'une boucle infinie/creating main loop 

pygame.key.set_repeat(1,1) 
while continuer: 
     for event in pygame.event.get(): 
      if event.type == QUIT: 
       continuer = 0 
      if event.type == KEYDOWN: 
       if event.key == K_KP2: 
        position = position.move(0,3) 
       if event.key == K_KP5: 
        position = position.move(0,-3) 
       if event.key == K_KP1: 
        position = position.move(-3,0) 
       if event.key == K_KP3: 
        position = position.move(3,0) 
     F1.blit(bg, (0,0)) 
     F1.blit(perso, position) 

     pygame.display.flip() 
+0

플레이어의 위치 표현과 경기 영역의 경계를 확인하는 조건이 필요합니다. 저는 조만간 추상화에 도움이되는 수업이 필요하다고 생각합니다. (아마도 *, 아마도 당신은 기능적 프로그래밍 전문가입니다.) 수업은 배우기에 편리 할 것입니다. 결국에는 수업에 익숙해 져야합니다. – BlackVegetable

+0

답변 해 주셔서 감사합니다. 수업을 어떻게 사용하는지에 대한 완전한 튜토리얼을 어디서 찾을 수 있는지 알고 있습니까? – MaxFR68

+0

이것은 꽤 많이 표준 자습서입니다. Google 검색을 통해 더 많은 정보를 얻을 수 있습니다. http://docs.python.org/2/tutorial/classes.html – BlackVegetable

답변

0

그냥 clamp

position.clamp_ip(F1_rect) 

당신의 위치 사각형 F1_rect 내부에 allways 될 것입니다 그 방법을 사용합니다.

+0

그것은 작동합니다! 고마워요! (내가 다른 질문으로 돌아갈 것이라고 생각하지만) – MaxFR68