Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 每当我尝试开始游戏时,Pygame游戏都会出现黑屏_Python_Python 3.x_Pygame - Fatal编程技术网

Python 每当我尝试开始游戏时,Pygame游戏都会出现黑屏

Python 每当我尝试开始游戏时,Pygame游戏都会出现黑屏,python,python-3.x,pygame,Python,Python 3.x,Pygame,我对python相当陌生,并决定通过编写一个太空入侵者游戏来更好地学习python语言。一切都很顺利,直到我试着通过列出多个敌人和几个while循环来添加多个敌人,之后每当我运行程序时,游戏的屏幕就会变黑。我撤销了所有的更改,但问题仍然存在,即使在我回到游戏正常运行的点之后。为什么呢?请注意,当我关闭游戏窗口时,我会在瞬间看到屏幕上发生了什么。 注意:我检查了所有的图像文件是否都在它们应该在的位置,所以这可能不是问题所在。 代码如下: import pygame import random im

我对python相当陌生,并决定通过编写一个太空入侵者游戏来更好地学习python语言。一切都很顺利,直到我试着通过列出多个敌人和几个while循环来添加多个敌人,之后每当我运行程序时,游戏的屏幕就会变黑。我撤销了所有的更改,但问题仍然存在,即使在我回到游戏正常运行的点之后。为什么呢?请注意,当我关闭游戏窗口时,我会在瞬间看到屏幕上发生了什么。 注意:我检查了所有的图像文件是否都在它们应该在的位置,所以这可能不是问题所在。 代码如下:

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()
永远不会被称为亲爱的,这就是问题所在……我是个十足的小丑……干杯,伙计!