pygame - 试图移动一个矩形

时间:2014-05-24 12:01:28

标签: python python-3.x pygame

我正在编写一个鼓游戏(基于dtx-Mania)。

我遇到了如何绘制矩形并移动它的问题。我可以做一个静态的,但不是一个移动的。我目前使用了一条线,但它接缝pygame将它绘制为一个矩形到目前为止,如果它作为一个影响我会改回矩形。

我的目标是绘制矩形并以足够慢的速度移动它,这样大约需要1秒才能到达一条线。

我知道我还有很多需要学习的东西,这是我到目前为止所要测试的。

#!/usr/bin/env python3
#-*- coding:utf-8 -*-
#small exemple of a moving rectangle
import pygame, sys
pygame.init()
fpsClock = pygame.time.Clock()
windowsSurfaceObj = pygame.display.set_mode((640, 480))
pygame.display.set_caption('moving rectangle test')
white = pygame.Color(255, 255, 255)
black = pygame.Color(0, 0, 0)
step = pygame.draw.line(windowsSurfaceObj, white, (233, 0), (269, 0), 6)
step
while True:
    windowsSurfaceObj.fill(black)
    #the coordonate are moved but the rectangle is now drew
    step.move(0, -1)
    #this is the target line (where the moving object must go to)
    pygame.draw.line(windowsSurfaceObj, white, (90, 420), (390, 420), 6)
    pygame.display.update()
    fpsClock.tick(30)

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

阅读文档总是好的。来自pygame文档:

  

line(Surface,color,start_pos,end_pos,width = 1) - >矩形

     

在Surface上绘制直线段。没有端盖,   对于粗线,两端都是方形的。

在整个模块的描述文本中:

The functions return a rectangle representing the bounding area of changed pixels.

因此,您绘制第一行,并移动一个表示边界的矩形的像素已更改。由于你没有重新划线,你的第一行就会消失。

要解决此问题,您需要在移动后在while循环中绘制线条。

step.move(0, -1)
pygame.draw.rect(windowsSurfaceObj, white,step, 6)