我正在编写一个鼓游戏(基于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)
感谢您的帮助。
答案 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)