我曾尝试从链接中实现snake游戏教程,但在运行该链接后,屏幕立即关闭。py文件。我已经查找了屏幕立即关闭错误,并尝试通过添加运行块来修复它,但现在每当我尝试绘制矩形时,屏幕就会变黑。
import os
os.environ['SDL_AUDIODRIVER'] = 'dsp'
import pygame
import sys
import random
import subprocess
import pygame
pygame.init()
display_width = 500
display_height = 500
display = pygame.display.set_mode((display_width,display_height))
window_color= (200,200,200)
red = (255,0,0)
black = (0,0,0)
apple_image = pygame.image.load('apple.jpg')
snake_head = [250,250]
pygame.display.set_caption("Snake AI")
snake_position = [[250,250],[240,250],[230,250]]
apple_position = [random.randrange(1,50)*10,random.randrange(1,50)*10]
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run =False
if event.type == pygame.KEYDOWN:
command = "python sample.py"
subprocess.call(command)
def display_snake(snake_position):
for position in snake_position:
pygame.draw.rect(display,red,pygame.Rect(position[0],position[1],10,10))
def display_apple(display,apple_position, apple):
display.blit(apple,(apple_position[0], apple_position[1]))
pygame.display.update()
pygame.quit()
您需要将pygame.quit()命令放在检查事件for循环下。因为它当前所做的是在你的程序中运行,一旦它完成主循环,一旦它退出:
while True: # you don't need a flag here, unless
# you have an activation button of
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
command = "python sample.py"
subprocess.call(command)
通常,一种可能的做法是将上述所有代码重构为函数,或者在不同的模块中完成它们,并将它们作为对象导入所谓的main。py
文件(即此文件,包含主游戏循环)。
您有display\u apple()
和display\u snake()
的定义,它们的调用应该在哪里。
将display\u apple()
和display\u snake()
函数的定义从while循环中取出,并将它们移到顶部某个位置。在以前定义它们的地方,调用它们。你会看到你的蛇和苹果出现在屏幕上。
def display_snake(snake_position):
for position in snake_position:
pygame.draw.rect(display,red,pygame.Rect(position[0],position[1],10,10))
def display_apple(display,apple_position, apple):
display.blit(apple,(apple_position[0], apple_position[1]))
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run =False
if event.type == pygame.KEYDOWN:
command = "python sample.py"
subprocess.call(command)
display_apple(display, apple_position, apple_image)
display_snake(snake_position)
pygame.display.update()
我将定义放在while
循环的正上方,这样您就可以看到它们,但是我通常会在pygame之前将它们定义得更高。init()
调用将是一个好地方。
您通常希望函数定义和类定义(如果有,但目前没有)与执行的代码分离。
事实上,我更喜欢将执行代码的主体也放在函数中,通常该函数被称为main()
,然后只调用该函数。这意味着除了调用函数main()。但是,这样做确实需要您小心全局变量,这会给您带来一些问题。
我试图让这个游戏工作,但它只是显示一个黑屏。这是一个简单的游戏,你只要避免掉块。我看过相关的问题,但没有一个答案对我有用。它说我必须添加更多细节,所以希望这一行足够了,因为idk在这一行还需要写些什么来为我的文章添加细节。我的代码:
本文向大家介绍使用canvas画出一个矩形相关面试题,主要包含被问及使用canvas画出一个矩形时的应答技巧和注意事项,需要的朋友参考一下
问题内容: 如何绘制具有Alpha颜色的矩形?我有: 但是我希望白色矩形的透明度为50%,但是Alpha值似乎没有起作用。 问题答案: 函数将不使用Alpha绘制。该文件说: 大多数参数接受RGB三元组的color参数。这些也可以接受RGBA四联体。如果Alpha值包含像素Alpha,则它将直接写入Surface,但是draw函数不会透明地绘制。 您可以做的是创建第二个曲面,然后将其调高到屏幕上。
我正在PyGame中制作一个太空入侵者游戏,但当我尝试绘制投射物时,它会覆盖/更改主精灵(平面)。如何解决此问题,以便在屏幕上显示多个精灵?
在上面的图片中,我展示了两个矩形 矩形1,其x可以从-900到13700不等,Y可以从-600到6458 矩形2,其坐标X可以从0到3000变化,而y可以从0到2000变化 同样:矩形2的起点位于左上角位置(0,0),而矩形1的起点位于左上角位置(宽度/2,高度/2)。 我需要做的是:使用缩放或平移将矩形1的点转换为矩形2的点。 那么,为了将矩形1的坐标转换为矩形2的坐标,< code>x和< c
我正在为平台游戏做教程,但我的Pygame窗口显示一个黑屏。 我不知道怎么解决这个问题。 我尝试再次关闭和打开Visual Studio Code,但没有任何结果。