2014-10-27 4 views
0

Новое попадание в python/pygame. Попытка сделать счетчик смерти для моего потока подергивания.Проблема с Python, попытка отличного простого счетчика смерти

Я собираюсь в конечном итоге использовать графический интерфейс, но на данный момент я просто хочу, чтобы он работал в фоновом режиме, а при нажатии клавиши «1 ключ» добавляет +1 к числу в файле. 2 перезагружается, что число 0.

Получение ошибки на линии 19.

File "C:/Python27/Deathcounter.py", line 19, in <module> 
    if event.key == pygame.K_1: 
AttributeError: event member not defined 

Кроме того, я уверен, что я усложненный этот процесс, как я всегда do.I

# Death Counter 
import pygame, sys 
import pygame.locals 

# Variables 
deathcount = float(0) 

pygame.init() 
BLACK = (0,0,0) 
WIDTH = 320 
HEIGHT = 260 
windowSurface = pygame.display.set_mode((WIDTH, HEIGHT), 0, 32) 

windowSurface.fill(BLACK) 

while True: 
    events = pygame.event.get() 
    for event in events: 
     if event.key == pygame.K_1: 
      with open("deathcounter.txt", "rt") as in_file: 
       deathcount = in_file.read() 
       deathcount = deathcount + 1 
      with open("deathcounter.txt", "wt") as out_file: 
       out_file.write(deathcount) 
     if event.key == pygame.K_2: 
      deathcount = 0 
      with open("deathcounter.txt", "wt") as out_file: 
       out_file.write(deathcount) 

pass 
if event.type == QUIT: 
    pygame.quit() 
    sys.exit() 

Спасибо за совет/помощь.

+0

Что такое pygame.K_1? Это метод внутри класса pygame? Вы можете получить доступ только к K_1, если он объявлен внутри модуля/класса, имя которого является pygame. –

+0

ОК, я неправильно понял учебник. Предполагалось, что K_1 представляет 1 Ключ на клавиатуре, как в K = Keyboard. 1 = 1 ключ – PBRGamer

ответ

0

Не все события имеют ключевой атрибут, поэтому вы получили эту ошибку.

И в первый раз, когда вы открываете свой файл для чтения, этого не существует, поэтому он вызывает исключение.

# Death Counter 
import pygame 
import sys 
import pygame.locals 

# Variables 
deathcount = float(0) 

pygame.init() 
BLACK = (0, 0, 0) 
WIDTH = 320 
HEIGHT = 260 
windowSurface = pygame.display.set_mode((WIDTH, HEIGHT), 0, 32) 

windowSurface.fill(BLACK) 

while True: 
    events = pygame.event.get() 
    for event in events: 
     if hasattr(event, 'key'): 
      if event.key == pygame.K_1: 
       try: 
        with open("deathcounter.txt", "r") as in_file: 
         deathcount = int(in_file.read()) 
         deathcount = deathcount + 1 
       except (IOError, ValueError), err: 
        print err 
        deathcount = 0 
       with open("deathcounter.txt", "w") as out_file: 
        out_file.write(str(deathcount)) 
      if event.key == pygame.K_2: 
       deathcount = 0 
       with open("deathcounter.txt", "w") as out_file: 
        out_file.write(str(deathcount)) 

pass 
if event.type == pygame.event.QUIT: 
    pygame.quit() 
    sys.exit() 

Для информации, используя PyGame поймать ключ в фоновом режиме ISN т хорошие ФВ использовать, как будет требовать, чтобы Pygame окна имеет активную направленность. Поэтому, если вы используете окна, я предлагаю вам взглянуть на этот пример, который использует PyHook: https://www.daniweb.com/software-development/python/threads/229564/python-keylogger, еще на linux, посмотрите на библиотеку x11 для python

Смежные вопросы