Python 每当我尝试开始游戏时,Pygame游戏都会出现黑屏
我对python相当陌生,并决定通过编写一个太空入侵者游戏来更好地学习python语言。一切都很顺利,直到我试着通过列出多个敌人和几个while循环来添加多个敌人,之后每当我运行程序时,游戏的屏幕就会变黑。我撤销了所有的更改,但问题仍然存在,即使在我回到游戏正常运行的点之后。为什么呢?请注意,当我关闭游戏窗口时,我会在瞬间看到屏幕上发生了什么。 注意:我检查了所有的图像文件是否都在它们应该在的位置,所以这可能不是问题所在。 代码如下:Python 每当我尝试开始游戏时,Pygame游戏都会出现黑屏,python,python-3.x,pygame,Python,Python 3.x,Pygame,我对python相当陌生,并决定通过编写一个太空入侵者游戏来更好地学习python语言。一切都很顺利,直到我试着通过列出多个敌人和几个while循环来添加多个敌人,之后每当我运行程序时,游戏的屏幕就会变黑。我撤销了所有的更改,但问题仍然存在,即使在我回到游戏正常运行的点之后。为什么呢?请注意,当我关闭游戏窗口时,我会在瞬间看到屏幕上发生了什么。 注意:我检查了所有的图像文件是否都在它们应该在的位置,所以这可能不是问题所在。 代码如下: import pygame import random im
import pygame
import random
import math
# Initializing pygame
pygame.init()
# Screen creation and config
screen = pygame.display.set_mode((1024, 600))
# Background
background = pygame.image.load('court_level_bg.jpg')
# Title and Icon
pygame.display.set_caption("Space Invaders")
# Player config
player_img = pygame.image.load('Mini_Bibi.png')
playerX = 430
playerY = 480
playerX_change = 0
# Enemy config
enemy_img = pygame.image.load('Enemy1.png')
enemyX = random.randint(0, 1024)
enemyY = random.randint(5, 150)
enemyX_change = 1.5
enemyY_change = 40
# Bullet config
bullet_img = pygame.image.load('Weapon.png')
bulletX = 0
bulletY = 480
bulletX_change = 0
bulletY_change = 6
bullet_state = "ready"
score = 0
# Create player
def player(x, y):
screen.blit(player_img, (x, y))
# Create enemy
def enemy(x, y):
screen.blit(enemy_img, (x, y))
def fire_bullet(x, y):
global bullet_state
bullet_state = "fire"
screen.blit(bullet_img, (x + 16, y + 10))
def isCollision(enemyX, enemyY, bulletX, BulletY):
distance = math.sqrt((math.pow(enemyX - bulletX, 2)) + (math.pow(enemyY - bulletY, 2)))
if distance < 27:
return True
else:
return False
# Game Loop
scrn_stat = True
while scrn_stat:
# Screen RGB color config
screen.fill((0, 0, 0))
# Background image
screen.blit(background, (0, 0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
scrn_stat = False
# X axis Keystroke listening
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
playerX_change = -4
if event.key == pygame.K_RIGHT:
playerX_change = 4
if event.key == pygame.K_SPACE:
if bullet_state is "ready":
bulletX = playerX
fire_bullet(bulletX, bulletY)
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
playerX_change = 0
playerX += playerX_change
# Player boundaries
if playerX <= 0:
playerX_change = 0;
elif playerX >= 945:
playerX_change = 0;
# Enemy movement
enemyX += enemyX_change
if enemyX <= 0:
enemyX_change = 3
enemyY += enemyY_change
elif enemyX >= 945:
enemyX_change = -3
enemyY += enemyY_change
# Collision
collision = isCollision(enemyX, enemyY, bulletX, bulletY)
if collision:
bulletY = 480
bullet_state = "ready"
score += 1
print(score)
enemyX = random.randint(0, 945)
enemyY = random.randint(50, 150)
enemy(enemyX, enemyY)
# Bullet Movement
if bulletY <= 0:
bulletY = 480
bullet_state = "ready"
if bullet_state is "fire":
fire_bullet(bulletX, bulletY)
bulletY -= bulletY_change
player(playerX, playerY)
pygame.display.update()
导入pygame
随机输入
输入数学
#初始化pygame
pygame.init()
#屏幕创建和配置
screen=pygame.display.set_模式((1024600))
#背景
background=pygame.image.load('court\u level\u bg.jpg'))
#标题和图标
pygame.display.set_标题(“太空入侵者”)
#播放器配置
player\u img=pygame.image.load('Mini\u Bibi.png')
playerX=430
playerY=480
playerX_change=0
#敌方形态
敌人\u img=pygame.image.load('Enemy1.png')
enemyX=random.randint(0,1024)
enemyY=random.randint(5150)
enemyX_变化=1.5
Enemy_变化=40
#子弹形态
bullet\u img=pygame.image.load('wearm.png')
bulletX=0
bulletY=480
bulletX_变化=0
bulletY_变化=6
bullet_state=“就绪”
分数=0
#创建玩家
def播放器(x,y):
屏幕。blit(播放器(x,y))
#制造敌人
def敌人(x,y):
屏幕。光点(敌人(x,y))
def火焰弹(x,y):
全球子弹头状态
bullet_state=“火灾”
屏幕光点(子弹头(x+16,y+10))
def isCollision(灌肠剂、灌肠剂、子弹剂、子弹剂):
距离=math.sqrt((math.pow(enemyX-bulletX,2))+(math.pow(enemyY-bulletY,2)))
如果距离小于27:
返回真值
其他:
返回错误
#游戏循环
scrn_stat=True
而scrn_统计:
#屏幕RGB颜色配置
屏幕填充((0,0,0))
#背景图像
屏幕光点(背景,(0,0))
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
scrn_stat=False
#X轴按键监听
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_左:
playerX_change=-4
如果event.key==pygame.K_RIGHT:
playerX_change=4
如果event.key==pygame.K_空间:
如果bullet_状态为“就绪”:
bulletX=playerX
子弹射击(子弹,子弹)
如果event.type==pygame.KEYUP:
如果event.key==pygame.K_左或event.key==pygame.K_右:
playerX_change=0
playerX+=playerX\u更改
#玩家边界
如果playerX=945:
playerX_change=0;
#敌军运动
enemyX+=enemyX_变化
如果enemyX=945:
enemyX_变化=-3
灌肠+=灌肠改变
#碰撞
碰撞=融合(灌肠,灌肠,子弹,子弹)
如果发生碰撞:
bulletY=480
bullet_state=“就绪”
分数+=1
打印(分数)
enemyX=random.randint(0945)
enemyY=random.randint(50150)
敌人(灌肠,灌肠)
#子弹运动
如果collison之前的bulletY是格式问题?因为否则,pygame.display.update()
永远不会被称为亲爱的,这就是问题所在……我是个十足的小丑……干杯,伙计!