[英]Pygame drawing doesn't work correctly
我在屏幕上繪制一個簡單的矩形時遇到問題。 我不知道為什么它無法繪制,我已經嘗試了幾件事:在背景表面上繪制它,更改函數調用的順序等。但是它似乎什么也沒畫。 如您所見,敵人()方法應該繪制一個紅色矩形,而不繪制任何內容。 否則游戲運行正常。 我敢肯定,它被我忽略了一些簡單的事情。
import pygame
from pygame.locals import *
from pygame.time import *
from pygame.font import *
from pygame.draw import *
import sys
pygame.font.init()
pygame.init()
screen = pygame.display.set_mode((700,300))
pygame.display.set_caption('something')
#--------------------------------------------------------------------
velX = 0
velY = 0
playerx = 20
player_filename = 'player.png'
player = pygame.image.load(player_filename)
playery = 150
clock = pygame.time.Clock()
#--------------------------------------------------------------------
def draw():
global velX
global velY
global playerx
global playery
red = pygame.Color(255,0,0)
black = pygame.Color(0,0,0)
level = "1"
background = pygame.Surface(screen.get_size())
background = background.convert()
background.fill((255,255,255))
screen.blit(background, (0,0))
playerx = playerx + velX
playery = playery + velY
screen.blit(player, (playerx,playery))
font = pygame.font.Font(None, 36)
text = font.render(level, 1, black)
screen.blit(text, (670,10))
pygame.display.flip()
#--------------------------------------------------------------------
def enemySquares():
enemySurf = pygame.Surface(screen.get_size())
red = pygame.Color(255,0,0)
enemy = pygame.Rect(200,50,20,20)
pygame.draw.rect(enemySurf, red, enemy, 0)
#--------------------------------------------------------------------
def collisionWithBorder():
if playerx > 680 or playerx < 0:
pygame.quit()
sys.exit()
if playery > 280 or playery < 0:
pygame.quit()
sys.exit()
#--------------------------------------------------------------------
def playerFunc():
keys_down = pygame.key.get_pressed()
pygame.key.set_repeat(1,50)
time = 50/1000
global velX
global velY
direction = -1
if keys_down[K_d]:
direction = 0
if keys_down[K_a]:
direction = 3
if keys_down[K_w]:
direction = 1
if keys_down[K_s]:
direction = 2
if direction == 0:
velX = 50*time
velY = 0
if direction == 1:
velY = -50*time
velX = 0
if direction == 2:
velY = 50*time
velX = 0
if direction == 3:
velX = -50*time
velY = 0
#--------------------------------------------------------------------
def main():
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
clock.tick(50)
collisionWithBorder()
draw()
playerFunc()
enemySquares()
#--------------------------------------------------------------------
if __name__ == '__main__':
main()
def enemySquares():
enemySurf = pygame.Surface(screen.get_size())
red = pygame.Color(255,0,0)
enemy = pygame.Rect(200,50,20,20)
pygame.draw.rect(enemySurf, red, enemy, 0)
上面的函數確實繪制了一個紅色矩形-在它創建的新表面上,而不是在“屏幕”表面上。
只需將enemySurf = ...
行enemySurf = ...
那里,然后將pygame.draw.rect(enemySurf, red, enemy, 0)
更改為pygame.draw.rect(screen, red, enemy, 0)
在下一個調用中顯示矩形到pygame.display.flip()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.