为什么pygamewindow上没有显示图片?代码没有给出错误
why is the picture not displayed on the pygame window? the code does not give errors
import pygame
import sys
from pygame.locals import *
import random
import time
GREY = pygame.Color(128, 128, 128)
RED = pygame.Color(255, 0, 0)
BLUE = pygame.Color(0, 0, 255)
GREEN = pygame.Color(0, 255, 0)
BLACK = pygame.Color(0, 0, 0)
WHITE = pygame.Color(255, 255, 255)
PINK = pygame.Color(255, 192, 203)
FPS = 60
FramePerSec = pygame.time.Clock()
screen = pygame.display.set_mode((1024, 526))
screen.fill(GREY)
to_up = False
to_down = False
speed_gg_up = 132
speed_gg_down= 56
gg = pygame.image.load('gg.png')
gg_x = 56
gg_y = 264
while True:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key== pygame.K_UP:
to_up = True
if event.key == pygame.K_DOWN:
to_down = True
if event.type == QUIT:
pygame.quit()
sys.exit()
FramePerSec.tick(FPS)
if to_up:
gg_y -= speed_gg_up
time.sleep(2)
gg_y += speed_gg_up
to_up = False
if to_down:
gg_y +=speed_gg_down
time.sleep(2)
gg_y -= speed_gg_down
to_down = False
screen.blit(gg, (gg_x, gg_y))
pygame.display.update()
代码没有错误,但只给出一个空的 window。无论我如何更改代码,都没有任何变化
请帮我找到并修复错误,以便代码开始显示图像
你必须清除每一帧的显示。不做游戏sleep
。使用pygame.time.get_ticks()
以毫秒为单位测量时间:
import pygame
import sys
from pygame.locals import *
GREY = pygame.Color(128, 128, 128)
FPS = 60
clock = pygame.time.Clock()
screen = pygame.display.set_mode((1024, 526))
speed = 1
gg = pygame.image.load('gg.png')
gg_x = 56
gg_y = 264
to_up = False
to_down = False
speed_gg_up = 132
speed_gg_down= 56
move_back_time = 0
run = True
while run:
current_time = pygame.time.get_ticks()
for event in pygame.event.get():
if event.type == QUIT:
run = False
if event.type == pygame.KEYDOWN:
if event.key== pygame.K_UP and not to_up and not to_down:
to_up = True
gg_y -= speed_gg_up
move_back_time = current_time + 2000
if event.key == pygame.K_DOWN and not to_up and not to_down:
to_down = True
gg_y += speed_gg_down
move_back_time = current_time + 2000
if move_back_time < current_time:
if to_up:
to_up = False
gg_y += speed_gg_up
if to_down:
to_down = False
gg_y -= speed_gg_down
screen.fill(GREY)
screen.blit(gg, (gg_x, gg_y))
pygame.display.update()
clock.tick(FPS)
pygame.quit()
sys.exit()
您还可以将移动存储在列表中,并在一段时间后返回:
import pygame
import sys
from pygame.locals import *
GREY = pygame.Color(128, 128, 128)
FPS = 60
clock = pygame.time.Clock()
screen = pygame.display.set_mode((1024, 526))
speed = 1
gg = pygame.image.load('gg.png')
gg_x = 56
gg_y = 264
speed_gg_up = 132
speed_gg_down= 56
movement = []
run = True
while run:
current_time = pygame.time.get_ticks()
for event in pygame.event.get():
if event.type == QUIT:
run = False
if event.type == pygame.KEYDOWN:
if event.key== pygame.K_UP:
gg_y -= speed_gg_up
movement.append((-speed_gg_up, current_time))
if event.key == pygame.K_DOWN:
gg_y += speed_gg_down
movement.append((speed_gg_down, current_time))
if len(movement) > 0 and current_time >= movement[0][1] + 2000:
gg_y -= movement[0][0]
del movement[0]
screen.fill(GREY)
screen.blit(gg, (gg_x, gg_y))
pygame.display.update()
clock.tick(FPS)
pygame.quit()
sys.exit()
import pygame
import sys
from pygame.locals import *
import random
import time
GREY = pygame.Color(128, 128, 128)
RED = pygame.Color(255, 0, 0)
BLUE = pygame.Color(0, 0, 255)
GREEN = pygame.Color(0, 255, 0)
BLACK = pygame.Color(0, 0, 0)
WHITE = pygame.Color(255, 255, 255)
PINK = pygame.Color(255, 192, 203)
FPS = 60
FramePerSec = pygame.time.Clock()
screen = pygame.display.set_mode((1024, 526))
screen.fill(GREY)
to_up = False
to_down = False
speed_gg_up = 132
speed_gg_down= 56
gg = pygame.image.load('gg.png')
gg_x = 56
gg_y = 264
while True:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key== pygame.K_UP:
to_up = True
if event.key == pygame.K_DOWN:
to_down = True
if event.type == QUIT:
pygame.quit()
sys.exit()
FramePerSec.tick(FPS)
if to_up:
gg_y -= speed_gg_up
time.sleep(2)
gg_y += speed_gg_up
to_up = False
if to_down:
gg_y +=speed_gg_down
time.sleep(2)
gg_y -= speed_gg_down
to_down = False
screen.blit(gg, (gg_x, gg_y))
pygame.display.update()
代码没有错误,但只给出一个空的 window。无论我如何更改代码,都没有任何变化 请帮我找到并修复错误,以便代码开始显示图像
你必须清除每一帧的显示。不做游戏sleep
。使用pygame.time.get_ticks()
以毫秒为单位测量时间:
import pygame
import sys
from pygame.locals import *
GREY = pygame.Color(128, 128, 128)
FPS = 60
clock = pygame.time.Clock()
screen = pygame.display.set_mode((1024, 526))
speed = 1
gg = pygame.image.load('gg.png')
gg_x = 56
gg_y = 264
to_up = False
to_down = False
speed_gg_up = 132
speed_gg_down= 56
move_back_time = 0
run = True
while run:
current_time = pygame.time.get_ticks()
for event in pygame.event.get():
if event.type == QUIT:
run = False
if event.type == pygame.KEYDOWN:
if event.key== pygame.K_UP and not to_up and not to_down:
to_up = True
gg_y -= speed_gg_up
move_back_time = current_time + 2000
if event.key == pygame.K_DOWN and not to_up and not to_down:
to_down = True
gg_y += speed_gg_down
move_back_time = current_time + 2000
if move_back_time < current_time:
if to_up:
to_up = False
gg_y += speed_gg_up
if to_down:
to_down = False
gg_y -= speed_gg_down
screen.fill(GREY)
screen.blit(gg, (gg_x, gg_y))
pygame.display.update()
clock.tick(FPS)
pygame.quit()
sys.exit()
您还可以将移动存储在列表中,并在一段时间后返回:
import pygame
import sys
from pygame.locals import *
GREY = pygame.Color(128, 128, 128)
FPS = 60
clock = pygame.time.Clock()
screen = pygame.display.set_mode((1024, 526))
speed = 1
gg = pygame.image.load('gg.png')
gg_x = 56
gg_y = 264
speed_gg_up = 132
speed_gg_down= 56
movement = []
run = True
while run:
current_time = pygame.time.get_ticks()
for event in pygame.event.get():
if event.type == QUIT:
run = False
if event.type == pygame.KEYDOWN:
if event.key== pygame.K_UP:
gg_y -= speed_gg_up
movement.append((-speed_gg_up, current_time))
if event.key == pygame.K_DOWN:
gg_y += speed_gg_down
movement.append((speed_gg_down, current_time))
if len(movement) > 0 and current_time >= movement[0][1] + 2000:
gg_y -= movement[0][0]
del movement[0]
screen.fill(GREY)
screen.blit(gg, (gg_x, gg_y))
pygame.display.update()
clock.tick(FPS)
pygame.quit()
sys.exit()