Python-Pygame-类__init___问题/未绘制

时间:2018-08-30 19:59:11

标签: python pygame

我正在学习OOP,并且有几个问题。 调用initiliazer时,是否会自动处理代码? 原因是这种情况,我不明白为什么我的游戏没有绘制矩形,我要求它在玩家类的 init 部分中绘制。 我是OOP的新手,因此在某种程度上我不确定自己在做什么。 这是我的代码:

public override UITableViewRowAction[] EditActionsForRow(UITableView tableView, NSIndexPath indexPath) {

    var actionHide = UITableViewRowAction.Create(UITableViewRowActionStyle.Normal, "Hide for now".Localize(),  (arg1, arg2) => {

    // delete the row from the table source and UITableView
    GroupedChallenge[indexPath.Section].RemoveAt(indexPath.Row);
    tableView.DeleteRows(rows, UITableViewRowAnimation.Left);                                                                 
});
    actionHide.BackgroundColor = UIColor.Purple;
    return new UITableViewRowAction[] { actionHide };
}

1 个答案:

答案 0 :(得分:2)

您经常在主循环中用白色填充屏幕。 Player类仅借鉴__init__。这意味着将矩形拉伸一秒钟,然后用白色覆盖。

您对__init__中的代码被自动调用的假设是正确的。这些带有双下划线的方法在特殊情况下被python调用,它们称为魔术方法。您可以找到其中的列表here

def __init__(self):
    pygame.sprite.Sprite.__init__(self)
    # The rect drawing part was moved from here.
def update(self):
    # You were previously assigning this to a variable, this wasn't necessary.
    pygame.draw.rect(game.screen, black, [self.lead_x, self.lead_y, self.block_size, self.block_size])

填满屏幕后,您需要在主循环中调用新的更新方法。

while True:
    game.fill_screen(white)
    player.update()