python - 如何修复“pygame中的背景故障”连续滑动背景?
问题描述
我为我的 pygame 添加了连续滚动的背景,以显示玩家总是向前运行的效果。它正在工作,但问题是它不是很顺利,每秒都有小故障。我需要做什么来解决这个问题?
主游戏循环
在每帧的主循环背景对象更新位置中,左侧为 5 个像素,每帧都会发生 x - 5
def game_window():
global warningCount, warningText
player_one.isDead = False
gameOver = 20
run = True
while run:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == USEREVENT + 2:
r = random.randrange(0, 2)
if r == 0:
enemy_list.append(Enemy(800, 318, 64, 64, GAMESPEED))
else:
spike_list.append(Spike(800, 0, 48, 330))
player_one.eventHandler(event)
for enemy in enemy_list:
enemy.update()
if enemy.x < 0:
enemy_list.pop(enemy_list.index(enemy))
if enemy.falling:
gameOver -= 1
if gameOver <= 0:
warning[0] = 20
warning[1] = 'GAME OVER'
main_window()
for spike in spike_list:
spike.update()
if spike.x < 0:
spike_list.pop(spike_list.index(spike))
if spike.falling:
gameOver -= 1
if gameOver <= 0:
warning[0] = 20
warning[1] = 'GAME OVER'
main_window()
player_one.update()
bg_one.bgUpade()
bg_two.bgUpade()
redrawGameWindow()
游戏窗口更新
def redrawGameWindow():
global warningCount, warningText
bg_one.draw(win)
bg_two.draw(win)
player_one.draw(win)
for enemy in enemy_list:
enemy.draw(win)
for spike in spike_list:
spike.draw(win)
if warning[0] > 0:
text_surface = bitter.render(warning[1], 1, COLOR_RED)
win.blit(text_surface, (int(W / 2 - text_surface.get_width() / 2), 20))
warning[0] -= 1
pygame.display.update()
背景类
class background(object):
def __init__(self, x, y, vel, index):
self.x = x
self.y = y
self.index = index
self.vel = vel
def draw(self, win):
win.blit(bg[self.index], (self.x, self.y))
if self.x < -800:
self.x = 800
def bgUpade(self):
if not player_one.isDead:
bg_one.x -= bg_one.vel
bg_two.x -= bg_two.vel
解决方案
推荐阅读
- r - 我可以以编程方式控制绘图缩放功能而无需在 R 闪亮的应用程序中重新绘图吗?
- sql - 如何进行对第一列进行分组并在每个组中附加第二列的任何行的查询
- docker - Actix Web 在空闲时消耗 %5 Cpu
- java - 将 null 分配给 String 对象时会发生什么?
- node.js - 大的时候剪掉照片。Nodejs,快递,graphql
- javascript - Hotwire:如何将广播对象的两个部分渲染到两个不同的页面上?
- c - 使用 GCC 时如何停止 CMD 将错误高亮显示为红色
- c# - 加入 2 名单
一个作为另一个的子列表 - reactjs - 为什么 react-router-dom 滚动到顶部不起作用?
- python - 嵌入在数组中的 PySpark Sum 字段