Сообщение об ошибке
имя 'K_w' не определено
blockquote>, потому что вы забыли пространство имен модуля.
Имя константы
pygame.K_w
, а неK_w
. Константы помещаются в пространство имен модуля pygame.Либо используйте полное имя константы :
w = control().button(pygame.K_w)
, либо импортируйте константы pygame. См. pygame.locals
. ]from pygame.locals import * # [...] w = control().button(K_w)
Кроме того, переменные
w
никогда не определяются, потому чтоcontrol()
генерирует объект, ноbutton()
не возвращает никакого значения. Кнопка метода должна вернутьself
:class control(): def button(self, button): self.button = button return self
Но я рекомендую реализовать конструктор в классе
control
, а не в методеbutton
(Конечно, вы можете сделать и то и другое):class control(): def __init__(self, button=0): self.button = button ctrl = control() w = control(K_w) s = control(K_s) UP = control(K_UP) DOWN = control(K_DOWN)
Метод
key
должен вернуть новое значение параметраaxis
:class control(): # [...] def key(self, axis, speed): if event.type == pygame.KEYDOWN: if event.key == self.button: axis = speed return axis y1, y2 = 0, 0 while True: for event in pygame.event.get(): ctrl.exit() y1 = w.key(y1, -5) y1 = s.key(y1, +5) y2 = UP.key(y2, -5) Y2 = DOWN.key(y2, +5)
Вот полный, полный пример с чуть более подробным и понятным кодом, чем в связанном вопросе, и он должен дать лучший ответ. Совершенно своевременно, поскольку я недавно закончил перенос кода, размещенного ранее, для использования надлежащих элементов ProgId
, так что это свежо в моей памяти;)
Что касается «что здесь», вы можете в значительной степени использовать как хочешь :)
<Icon Id="filetype.ico" SourceFile="filetype.ico" />
<Component Id="MyApp.exe" Directory="APPLICATIONFOLDER" Guid="*">
<File Id="MyApp.exe" Name="MyApp.exe" KeyPath="yes"/>
<Shortcut Id="startmenuShortcut" Directory="ProgramMenuFolder" Name="MyApp" Icon="$(var.product).ico" IconIndex="0" WorkingDirectory="APPLICATIONFOLDER" Advertise="yes" />
<!-- Capabilities keys for Vista/7 "Set Program Access and Defaults" -->
<RegistryValue Root="HKLM" Key="SOFTWARE\MyApp\Capabilities" Name="ApplicationDescription" Value="!(loc.ApplicationDescription)" Type="string" />
<RegistryValue Root="HKLM" Key="SOFTWARE\MyApp\Capabilities" Name="ApplicationIcon" Value="[APPLICATIONFOLDER]MyApp.exe,0" Type="string" />
<RegistryValue Root="HKLM" Key="SOFTWARE\MyApp\Capabilities" Name="ApplicationName" Value="!(loc.ApplicationName)" Type="string" />
<RegistryValue Root="HKLM" Key="SOFTWARE\MyApp\Capabilities\DefaultIcon" Value="[APPLICATIONFOLDER]MyApp.exe,1" Type="string" />
<RegistryValue Root="HKLM" Key="SOFTWARE\MyApp\Capabilities\FileAssociations" Name=".xyz" Value="MyApp.Document" Type="string" />
<RegistryValue Root="HKLM" Key="SOFTWARE\MyApp\Capabilities\MIMEAssociations" Name="application/xyz" Value="MyApp.Document" Type="string" />
<RegistryValue Root="HKLM" Key="SOFTWARE\MyApp\Capabilities\shell\Open\command" Value=""[APPLICATIONFOLDER]MyApp.exe" "%1"" Type="string" />
<RegistryValue Root="HKLM" Key="SOFTWARE\RegisteredApplications" Name="MyApp" Value="SOFTWARE\MyApp\Capabilities" Type="string" />
<!-- App Paths to support Start,Run -> "myapp" -->
<RegistryValue Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\MyApp.exe" Value="[!MyApp.exe]" Type="string" />
<RegistryValue Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\MyApp.exe" Name="Path" Value="[APPLICATIONFOLDER]" Type="string" />
<!-- Extend to the "open with" list + Win7 jump menu pinning -->
<RegistryValue Root="HKLM" Key="SOFTWARE\Classes\Applications\MyApp.exe\SupportedTypes" Name=".xyz" Value="" Type="string" />
<RegistryValue Root="HKLM" Key="SOFTWARE\Classes\Applications\MyApp.exe\shell\open" Name="FriendlyAppName" Value="!(loc.ApplicationName)" Type="string" />
<!-- MyApp.Document ProgID -->
<RegistryValue Root="HKLM" Key="SOFTWARE\Classes\MyApp.Document" Name="FriendlyTypeName" Value="!(loc.DescXYZ)" Type="string" />
<ProgId Id="MyApp.Document" Description="!(loc.DescXYZ)" Icon="filetype.ico" Advertise="yes">
<Extension Id="xyz">
<Verb Id="open" Command="!(loc.ExplorerMenuOpenXYZ)" Argument=""%1"" />
<MIME Advertise="yes" ContentType="application/xyz" Default="yes" />
</Extension>
</ProgId>
<!-- Optional: add an 'Edit with XYZ' to 'right click' even when not associated -->
<RegistryValue Root="HKLM" Key="SOFTWARE\Classes\SystemFileAssociations\.xyz\shell\edit.MyApp.exe" Value="!(loc.ExplorerMenuEditXYZ)" Type="string" />
<RegistryValue Root="HKLM" Key="SOFTWARE\Classes\SystemFileAssociations\.xyz\shell\edit.MyApp.exe\command" Value=""[APPLICATIONFOLDER]MyApp.exe" "%1"" Type="string" />
</Component>