2011-06-13 6 views
1

는 여기에 지금까지있어 무엇 :파이 게임에서 단일 키에 대해 다양한 KMOD 상태를 어떻게 가질 수 있습니까?

for event in pygame.event.get(): 
    if event.type == KEYDOWN: 
     if event.key == K_LEFT: 
      mods = pygame.key.get_mods() 
      if mods and KMOD_SHIFT: 
       movei = -5 
      if mods and KMOD_CTRL: 
       movei = -20 
      else: 
       movei = -10 

문제는 단지 하나 또는 다른 (KMOD_SHIFT 또는 KMDO_CTRL) 모든 시간이 아닌 선택적을 선택하는 것입니다. 그래서 어떤 수정자를 눌러도 상관 없습니다 (shift, alt, ctrl 등). 효과는 여전히 동일합니다.

내가 할 효과는 화면상의 캐릭터가 각각 크립프 (creep), 달리기 (run) 또는 걷기 (walk) 할 수 있다는 것입니다.

미리 감사드립니다. 당신이 정말로 비트 단위 운영자 & 필요 동안

답변

1

당신은 논리적and 연산자를 사용하고 있습니다. 대신

if mods and KMOD_SHIFT: 

당신은 한 첫 번째는 (0, 같지 않은이 경우) true 값을 가지고로 두 번째 피연산자의 값을 반환합니다

if mods & KMOD_SHIFT: 

논리 and

를 원한다. & 연산자는 비트 단위 AND 연산을 수행하므로 KMOD 상수의 비트 중 일부가 mods 변수에있는 경우에만 0이 아닌 값 (논리적으로 true로 해석 됨)을 반환합니다.

관련 문제