2017-06-18 155 views
0

我想制作一个俄罗斯方块游戏,但我不明白这个错误? 这似乎是第34行:Python TypeError:错误的操作数类型为一元 - '元组'

self.active_blk.move(-direction) 

这里是我的代码:

import pygame 
import random 
from Block import Block 

class Stage(): 
def __init__(self,cell_size,h_cells,v_cells): 
    self.cell_size=cell_size 
    self.width=h_cells 
    self.height=v_cells 
    self.blocks=[] 
    self.active_blk=self.add_block() 

def add_block(self): 
    blk=Block(0,self.cell_size,(random.randint(0,255),random.randint(0,255),random.randint(0,255))) 
    self.blocks.append(blk) 
    return blk 

def move_block(self,direction): 
    self.active_blk.move(direction) 

    obstacle=False 
    for cell in self.active_blk.cells: 
     if(cell.y>=self.height or 
      cell.x<0 or 
      cell.x>= self.width): obstacle=True 

    for blk in self.blocks: 
     if(blk is self.active_blk): continue 
     if(blk.collide_with(self.active_blk)): 
      obstacle=True 
      break; 

    if(obstacle): 
     self.active_blk.move(-direction) 

def draw(self,screen): 
    screen.fill((0,0,0)) 
    for blk in self.blocks: 
     blk.draw(screen) 
+0

'move_block'在哪里被调用? – Ryan

+0

“方向”显然是一个元组。而且你不能这样做' - (x,y)' –

+0

'stage.move_block((0,1))' – Coder22

回答

2

direction参数不是数相比,可以否定。相反,它是两个数字的元组。元组不是数字类型,所以即使它的内容可以否定,元组本身不能。你需要自己否定这些作品,用(-direction[0], -direction[1])

相关问题