gpt4 book ai didi

python - 蛇游戏,在水平移动 Python/Pygame 时创建额外 block

转载 作者:太空宇宙 更新时间:2023-11-04 05:45:35 24 4
gpt4 key购买 nike

每次将蛇从水平方向转换为垂直方向时,它都会在后面留下一个方 block 。我正在使用一个列表来跟踪 block 位置。我使用 10*10 的黑色 block 作为蛇的 body ,并使用 10*10 的白色 block 删除它。

import pygame as pg
from random import randint
import sys, time, random, os
run = True

pg.init()
size = 500, 500
caption = "Snake"
pg.display.set_caption(caption)
screen = pg.display.set_mode(size)
white = 255, 255, 255
black = 0, 0, 0
screen.fill(white)
key = pg.key.get_pressed()
clock = pg.time.Clock()
snake = pg.image.load("Snake.png")
destroy = pg.image.load("Snake_Destroy.png")
global pos_x, pos_y, pos, snakelist, init_length, add_x, add_y
pos_x = 250
add_x = 0
add_y = -10
init_length = 4
pos_y = 250
pos = pos_x, pos_y
snakelist = []
gap = 2
snakelist.extend((pos))

def update(key, screen, gap):
for event in pg.event.get():
if event.type == pg.QUIT or key[pg.K_ESCAPE]: sys.exit(), pg.quit()

global pos_x, pos_y, pos, snakelist, init_length, add_x, add_y

s_x = add_x / 10 * gap
s_y = add_y / 10 * gap

pos_y += add_y + s_y
pos_x += add_x + s_x

pos = pos_x, pos_y

screen.blit(snake, (pos))

snakelist.extend((pos))

if not init_length > 0:
screen.blit(destroy, (snakelist.pop(1), snakelist.pop(2)))
else:
init_length += -1

print pos

pg.display.update()

def control(key):

global add_y, add_x

key = pg.key.get_pressed()

if key[pg.K_UP]:
if not add_y == 10:
add_y = -10
add_x = 0
if key[pg.K_DOWN]:
if not add_y == -10:
add_y = 10
add_x = 0
if key[pg.K_LEFT]:
if not add_x == 10:
add_x = -10
add_y = 0
if key[pg.K_RIGHT]:
if not add_x == -10:
add_x = 10
add_y = 0

while run:
update(key, screen, gap)
control(key)
clock.tick(10)

最佳答案

您在第 48 行 screen.blit(destroy, (snakelist.pop(1), snakelist.pop(2))) 弹出了错误的坐标。

list.pop([i]) :Remove the item at the given position in the list, and return it.

您正在弹出第二个(列表索引 1)元素和第三个(列表索引 2)元素。但是当你弹出时,所有元素的位置都会移动一个位置。因此,在您的情况下,您必须始终弹出第一个元素,即位置 0 而不是 1 的元素。

因此请更新您的第 48 行。它应该是 screen.blit(destroy, (snakelist.pop(0), snakelist.pop(0)))

现在没有额外的 block 。工作正常。

关于python - 蛇游戏,在水平移动 Python/Pygame 时创建额外 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32448961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com