2016-12-09 4 views
0

私は自分のゲームで使用する特定のツールを他のファイルに入れるために、クラスを追加してコードを整理していました。私はちょっと勉強して実行していたので、私は私の人生で見つけられないという簡単な誤りに遭遇しました。Python Pygame Personal Module Error

だから私は、同じフォルダ内の私のcore.pypyWMouse.pyを持っています。私のpyWMouse.pyには私の作成したマウスツールがあります。私はこのエラーを取得しておいてください。ここでは

Traceback (most recent call last): 
    File "G:/Python/pygameDevelopment/core.py", line 115, in <module> 
    game_Loop() 
    File "G:/Python/pygameDevelopment/core.py", line 100, in game_Loop 
    if userMouse.MouseLeftClickDown and userMouse.MouseDrag: 
AttributeError: type object 'MouseTools' has no attribute 'MouseLeftClickDown' 

はクラスがpyWMouse.py

import pygame 
COLOR_RED = (255, 0, 0) 
class MouseTools: 
    def __init__(self): 
     self.MouseInitXY = (0, 0) 
     self.MouseFinalXY = (0, 0) 
     self.MouseLeftClickDown = False 
     self.MouseRightClickDown = False 
     self.MouseDrag = False 
     self.CharacterSelected = False 
     self.CharacterMove = False 
     self.CharacterMoveTo = (0, 0) 
    def selection(self, screen, unitX, unitY): 
     # Draw lines # 
     pygame.draw.lines(screen, COLOR_RED, True, ((self.MouseInitXY[0], self.MouseInitXY[1]), 
                (self.MouseFinalXY[0], self.MouseInitXY[1]), 
                (self.MouseFinalXY[0], self.MouseFinalXY[1]), 
                (self.MouseInitXY[0], self.MouseFinalXY[1])), 3) 
     # Check if anything is inside the selection area from any direction the mouse highlights # 
     if unitX >= self.MouseInitXY[0] and unitX <= self.MouseFinalXY[0] and unitY >= \ 
       self.MouseInitXY[1] and unitY <= self.MouseFinalXY[1]: 
      return True 
     elif unitX <= self.MouseInitXY[0] and unitX >= self.MouseFinalXY[0] and unitY <= \ 
       self.MouseInitXY[1] and unitY >= self.MouseFinalXY[1]: 
      return True 
     elif unitX >= self.MouseInitXY[0] and unitX <= self.MouseFinalXY[0] and unitY <= \ 
       self.MouseInitXY[1] and unitY >= self.MouseFinalXY[1]: 
      return True 
     elif unitX <= self.MouseInitXY[0] and unitX >= self.MouseFinalXY[0] and unitY >= \ 
       self.MouseInitXY[1] and unitY <= self.MouseFinalXY[1]: 
      return True 
     else: 
      return False 

そして最後に、私のcore.py

import pygame 
import pyWMouse 
pygame.init() 
pygame.display.set_caption('PyWorld') 
DISPLAY_WIDTH = 1080 
DISPLAY_HEIGHT = 920 
COLOR_BLACK = (0, 0, 0) 
COLOR_BROWN = (100, 50, 0) 
COLOR_GREEN = (0, 102, 0) 
COLOR_RED = (255, 0, 0) 
COLOR_WHITE = (255, 255, 255) 
screen = pygame.display.set_mode((DISPLAY_WIDTH, DISPLAY_HEIGHT)) 
fpsClock = pygame.time.Clock() 

class Character: 
    def __init__(self, XPos, YPos): # Always called when object is created, always have self variable # 
     self.X = XPos 
     self.Y = YPos 
     self.ImageUnselected = pygame.image.load('mainChar.png') 
     self.ImageSelected = pygame.image.load('mainCharSelected.png') 
     self.Speed = 2.5 
     self.YChange = 0 
     self.XChange = 0 
    def render_Unselected(self): 
     screen.blit(self.ImageUnselected, (self.X, self.Y)) 
    def render_Selected(self): 
     screen.blit(self.ImageSelected, (self.X, self.Y)) 

class Worker: 
    def __init__(self, XPos, YPos): 
     self.X = XPos 
     self.Y = YPos 
     self.ImageUnselected = pygame.image.load('worker.png') 
     self.ImageSelected = pygame.image.load('workerSelected.png') 
    def worker_Unselected(self): 
     screen.blit(self.ImageUnselected, (self.X, self.Y)) 
    def worker_Selected(self): 
     screen.blit(self.ImageSelected, (self.X, self.Y)) 

character = Character(DISPLAY_WIDTH/2, DISPLAY_HEIGHT/2) 
userMouse = pyWMouse.MouseTools 
def game_Loop(): 

    gameExit = False 
    while not gameExit: 
     screen.fill(COLOR_BROWN) 

     # Keyboard Handling # 
     keys_pressed = pygame.key.get_pressed() 
     if keys_pressed[pygame.K_w]: 
      character.YChange = -character.Speed 
     if keys_pressed[pygame.K_a]: 
      character.XChange = -character.Speed 
     if keys_pressed[pygame.K_s]: 
      character.YChange = character.Speed 
     if keys_pressed[pygame.K_d]: 
      character.XChange = character.Speed 
     if keys_pressed[pygame.K_w] and keys_pressed[pygame.K_a]: 
      character.XChange = (-character.Speed/1.5) 
      character.YChange = (-character.Speed/1.5) 
     if keys_pressed[pygame.K_a] and keys_pressed[pygame.K_s]: 
      character.XChange = (-character.Speed/1.5) 
      character.YChange = (character.Speed/1.5) 
     if keys_pressed[pygame.K_s] and keys_pressed[pygame.K_d]: 
      character.XChange = (character.Speed/1.5) 
      character.YChange = (character.Speed/1.5) 
     if keys_pressed[pygame.K_d] and keys_pressed[pygame.K_w]: 
      character.XChange = (character.Speed/1.5) 
      character.YChange = (-character.Speed/1.5) 

     # Event handling # 
     for event in pygame.event.get(): 
      if event.type == pygame.KEYUP: 
       if event.key != pygame.K_a or event.key != pygame.K_d: 
        character.XChange = 0 
       if event.key != pygame.K_w or event.key != pygame.K_s: 
        character.YChange = 0 

      # Mouse Handling # 
      if event.type == pygame.MOUSEBUTTONDOWN: 
       if userMouse.CharacterSelected: 
        userMouse.CharacterSelected = False 
       if event.button == 1: 
        userMouse.MouseLeftClickDown = True 
        userMouse.MouseInitXY = pygame.mouse.get_pos() 
       if event.button == 2: 
        userMouse.MouseRightClickDown = True 
        userMouse.CharacterMoveTo = pygame.mouse.get_pos() 
      if event.type == pygame.MOUSEMOTION: 
       userMouse.MouseDrag = True 
      if event.type == pygame.MOUSEBUTTONUP: 
       if userMouse.MouseLeftClickDown: 
        userMouse.MouseLeftClickDown = False 
        userMouse.MouseDrag = False 
      if event.type == pygame.QUIT: 
       pygame.quit() 
       quit() 

     # Mouse Tools # 
     if userMouse.MouseLeftClickDown and userMouse.MouseDrag: 
      userMouse.MouseFinalXY = pygame.mouse.get_pos() 
      # Check if user's character is inside selection tool # 
      if userMouse.selection(screen, character.X, character.Y): 
       character.render_Selected() 
      else: 
       character.render_Unselected() 
     else: 
      character.render_Unselected() 

     # Update Display and next frame variables # 
     character.X += character.XChange 
     character.Y += character.YChange 
     pygame.display.update() 
     fpsClock.tick(144) 
game_Loop() 
pygame.quit() 
quit() 

であるおかげで皆さんの時間のために。とても有難い。

答えて

0

私はこの問題がcore.pyにあると考えています。

userMouse = pyWMouse.MouseTools 

を次のように:変更してみてください

userMouse = pyWMouse.MouseTools() 

行方不明括弧はトリックを行う必要があります追加。