繁体   English   中英

移动绘制的矩形

[英]Moving a drawn rectangle

我有游戏了,并且渲染了矩形。 当我按下KEYDOWN时,它不会移动矩形,只会使其变长。 我尝试了很多东西。 我是Pygame的新手。
任何帮助都将是惊人的。

这是代码:

import pygame
import time
import random
import math
import sys


pygame.init()

display_width = 1200
display_height = 800
white = (255,255,255)
black = (0,0,0)



gameDisplay = pygame.display.set_mode((display_width,display_height))
pygame.display.set_caption('Vertical Pong')
clock = pygame.time.Clock()


def pongBoard(x,y,):
    pygame.draw.rect(gameDisplay,white,(x,y,250,25))


def gameLoop():

    x = 325
    y = 750
    xChange = 0



    inGame = True

    while inGame:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()

            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_a or event.key == pygame.K_LEFT:
                    xChange = -5
                    print("Left")
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_d or event.key == pygame.K_RIGHT:
                    xChange = 5
                    print("Right")
            if event.type == pygame.KEYUP:
                if event.key == pygame.K_d or event.key == pygame.K_RIGHT:
                    xChange = 0
            if event.type == pygame.KEYUP:
                if event.key == pygame.K_a or event.key == pygame.K_LEFT:
                    xChange = 0

        pongBoard(x,y)

        x += xChange






        pygame.display.update()
        clock.tick(60)




gameLoop()
pygame.quit()
quit()

因此,问题是这样的:不断以不同的坐标重绘矩形,但是没有在矩形上绘制屏幕以掩盖不应存在的部分。 简单来说,我们需要不断绘制背景。

现在,主游戏循环中的代码如下:

while inGame:
    #This code below draws the background
    pygame.draw.rect(gameDisplay, black, (0, 0, display_width, display_height)) 

这就对了! 背景会不断掩盖乒乓球,而乒乓球会不断地变色到新的位置!

PS,这里有一个更好的方向键移动方法: 如何在pygame中获得键盘输入?

它实际上确实会移动它,但是旧的只是停留在那儿,使其看起来好像不移动而是一直在增长。 一种更改方法是将旧颜色更改为背景颜色

试试这个代码,它的工作原理:-)

import pygame
import time
import random
import math
import sys


pygame.init()

display_width = 1200
display_height = 800
white = (255,255,255)
black = (0,0,0)
red = (123,11,45)



gameDisplay = pygame.display.set_mode((display_width,display_height))
pygame.display.set_caption('Vertical Pong')
clock = pygame.time.Clock()


def pongBoard(x,y,xold):
    pygame.draw.rect(gameDisplay,white,[x,y,250,25])
    pygame.draw.rect(gameDisplay,red,[xold,y,250,25])


def gameLoop():

    x = 325
    y = 750
    xChange = 0



    inGame = True

    while inGame:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()

            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_a or event.key == pygame.K_LEFT:
                    xChange = -50
                    pongBoard(x,y,xold)
                    print("Left")
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_d or event.key == pygame.K_RIGHT:
                    xChange = 50
                    pongBoard(x,y,xold)
                    print("Right")
            if event.type == pygame.KEYUP:
                if event.key == pygame.K_d or event.key == pygame.K_RIGHT:
                    xChange = 0
            if event.type == pygame.KEYUP:
                if event.key == pygame.K_a or event.key == pygame.K_LEFT:
                    xChange = 0
        xold = x

        x += xChange
        xold = x-xChange






        pygame.display.update()
        clock.tick(60)




gameLoop()
pygame.quit()
quit()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM