Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.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 我怎样才能结束这场比赛_Python_Python 3.x_Pygame - Fatal编程技术网

Python 我怎样才能结束这场比赛

Python 我怎样才能结束这场比赛,python,python-3.x,pygame,Python,Python 3.x,Pygame,我正在尝试制作一个游戏,当玩家图标与喵喵碰撞时,游戏结束,屏幕上会显示“游戏结束”字样。然而,当我运行这个程序时,有一个短暂的闪烁,游戏继续。我应该对给定的代码进行哪些更改?另外,当我点击游戏窗口的退出按钮时,它只是挂在那里,游戏窗口/屏幕不会关闭。我非常感谢你们对这个游戏的任何帮助或建议 import random import pygame import math from pygame import mixer pygame.init() mixer.init() # create t

我正在尝试制作一个游戏,当玩家图标与喵喵碰撞时,游戏结束,屏幕上会显示“游戏结束”字样。然而,当我运行这个程序时,有一个短暂的闪烁,游戏继续。我应该对给定的代码进行哪些更改?另外,当我点击游戏窗口的退出按钮时,它只是挂在那里,游戏窗口/屏幕不会关闭。我非常感谢你们对这个游戏的任何帮助或建议

import random
import pygame
import math
from pygame import mixer

pygame.init()
mixer.init()

# create the screen
screen=pygame.display.set_mode((800,600))
#icon and title
pygame.display.set_caption("pokecapture")
icon=pygame.image.load("C:\\users\\khuhan rawat\\Desktop\\pokemon\\pokeball.png")
pygame.display.set_icon(icon)

#background
bg=pygame.image.load("C:\\users\\khuhan rawat\\Desktop\\pokemon\\background.png")

# player
playerImg=pygame.image.load("C:\\users\\khuhan rawat\\Desktop\\pokemon\\pokeball.png")
playerX=374
playerY=536
playerX_change=0
def player(x,y):
    screen.blit(playerImg,(x,y))
#sound
mixer.music.load("C:\\users\\khuhan rawat\\Desktop\\pokemon\\bgsound.wav")
mixer.music.play(-1)
 #score
score=0
font=pygame.font.SysFont('inkfree.ttf',40)
textX=10
textY=10

def show_score():
    score1=font.render('SCORE:'+str(score),True, (0,0,0))
    screen.blit(score1,(30,30))
#pokemons
bullbasaur=pygame.image.load("C:\\users\\khuhan rawat\\Desktop\\pokemon\\bullbasaur.png")
charmander=pygame.image.load("C:\\users\\khuhan rawat\\Desktop\\pokemon\\charmander.png")
dratini=pygame.image.load("C:\\users\\khuhan rawat\\Desktop\\pokemon\\dratini.png")
eevee=pygame.image.load("C:\\users\\khuhan rawat\\Desktop\\pokemon\\eevee.png")
jigglypuff=pygame.image.load("C:\\users\\khuhan rawat\\Desktop\\pokemon\\jigglypuff.png")
meowth=pygame.image.load("C:\\users\\khuhan rawat\\Desktop\\pokemon\\meowth (2).png")
pikachu=pygame.image.load("C:\\users\\khuhan rawat\\Desktop\\pokemon\\pikachu.png")
psyduck=pygame.image.load("C:\\users\\khuhan rawat\\Desktop\\pokemon\\psyduck.png")
snorlax=pygame.image.load("C:\\users\\khuhan rawat\\Desktop\\pokemon\\snorlax.png")
squirtle=pygame.image.load("C:\\users\\khuhan rawat\\Desktop\\pokemon\\squirtle.png")
poke=[bullbasaur,charmander,dratini,eevee,jigglypuff,meowth,pikachu,psyduck,snorlax,squirtle]

pokeImg=[meowth,pikachu]
pokeX=[]
pokeY=[]
pokeY_change=[1,1]
for i in range(8):
    n=random.randint(0,9)
    poke1=poke[n]
    pokeImg.append(poke1)
    pokeX.append(random.randint(0,768))
    pokeY.append(random.randint(-80,400))
    
    pokeY_change.append(1)
for i in range (2):
    pokeX.append(random.randint(0,768))
    pokeY.append(random.randint(-80,400))
def pokemon(x,y,i,l):
    screen.blit(l[i],(x,y))
#collision
def collision(x,y,playerX,playerY):
    dist=math.sqrt((math.pow(x-playerX,2))+(math.pow(y-playerY,2)))
    if dist<=27:
        return True

#game over
over_font=pygame.font.SysFont('inkfree.ttf',60)
def gameover():
    overtext=over_font.render("GAME OVER",True,(0,0,0))
    screen.blit(overtext,(20,300))
#game loop

running=True
while running:
    
    screen.fill((0,0,0))
    screen.blit(bg,(0,0))
    for event in pygame.event.get():        
        if event.type==pygame.QUIT:
            running=False
    if event.type==pygame.KEYDOWN:
        if event.key==pygame.K_LEFT:
            playerX_change=-3
        if event.key==pygame.K_RIGHT:
            playerX_change=3
    if event.type==pygame.KEYUP:
        playerX_change=0
        
    playerX+=playerX_change
    if playerX<=0:
        playerX=0
    elif playerX>=736:
        playerX=736
    player(playerX,playerY)
#show score
    
    for i in range(10):
        pokeY[i]+=pokeY_change[i]
        
        pokemon(pokeX[i],pokeY[i],i,pokeImg)
        col=collision(pokeX[i],pokeY[i],playerX,playerY)

        if pokeY[i]>=600:
            pokeY[i]=random.randint(-20,40)
            pokeX[i]=random.randint(0,768)
        if col:
            char=pokeImg[i]
            if char==pikachu:
                np=random.randint(0,9)
                pokeX[i]=random.randint(0,736)
                pokeY[i]=random.randint(0,40)
                pokemon(pokeX[i],pokeY[i],np,poke)
                cap=mixer.Sound("C:\\users\\khuhan rawat\\Desktop\\pokemon\\capture.wav")
                cap.play()
                score+=5
            elif char==meowth:
                for i in range(10):
                    pokeY[i]=2000
                screen.fill((34,34,34))
                gameover()
                
                break
            else:
                np=random.randint(0,9)
                pokeX[i]=random.randint(0,736)
                pokeY[i]=random.randint(0,40)
                pokemon(pokeX[i],pokeY[i],np,poke)
                cap=mixer.Sound("C:\\users\\khuhan rawat\\Desktop\\pokemon\\capture.wav")
                cap.play()
                
            score+=5
            np=random.randint(0,9)
            pokeX[i]=random.randint(0,736)
            pokeY[i]=random.randint(0,40)
            pokemon(pokeX[i],pokeY[i],np,poke)
            cap=mixer.Sound("C:\\users\\khuhan rawat\\Desktop\\pokemon\\capture.wav")
            cap.play()
            
    show_score()

    

    pygame.display.update()
随机导入
导入pygame
输入数学
从pygame导入混合器
pygame.init()
mixer.init()
#创建屏幕
screen=pygame.display.set_模式((800600))
#图标和标题
pygame.display.set_标题(“pokecapture”)
icon=pygame.image.load(“C:\\users\\khuhan rawat\\Desktop\\pokemon\\pokeball.png”)
pygame.display.set_图标(图标)
#背景
bg=pygame.image.load(“C:\\users\\khuhan rawat\\Desktop\\pokemon\\background.png”)
#玩家
playerImg=pygame.image.load(“C:\\users\\khuhan rawat\\Desktop\\pokemon\\pokeball.png”)
playerX=374
playerY=536
playerX_change=0
def播放器(x,y):
屏幕光点(playerImg,(x,y))
#声音
mixer.music.load(“C:\\users\\khuhan rawat\\Desktop\\pokemon\\bgsound.wav”)
混音器。音乐。播放(-1)
#得分
分数=0
font=pygame.font.SysFont('inkfree.ttf',40)
textX=10
textY=10
def show_score():
score1=font.render('SCORE:'+str(SCORE),True,(0,0,0))
屏幕。blit(分数1,(30,30))
#口袋妖怪
bullbasaur=pygame.image.load(“C:\\users\\khuhan rawat\\Desktop\\pokemon\\bullbasaur.png”)
charmander=pygame.image.load(“C:\\users\\khuhan rawat\\Desktop\\pokemon\\charmander.png”)
dratini=pygame.image.load(“C:\\users\\khuhan rawat\\Desktop\\pokemon\\dratini.png”)
eevee=pygame.image.load(“C:\\users\\khuhan rawat\\Desktop\\pokemon\\eevee.png”)
jigglypuff=pygame.image.load(“C:\\users\\khuhan rawat\\Desktop\\pokemon\\jigglypuff.png”)
meowth=pygame.image.load(“C:\\users\\khuhan rawat\\Desktop\\pokemon\\meowth(2.png))
pikachu=pygame.image.load(“C:\\users\\khuhan rawat\\Desktop\\pokemon\\pikachu.png”)
psyduck=pygame.image.load(“C:\\users\\khuhan rawat\\Desktop\\pokemon\\psyduck.png”)
snorlax=pygame.image.load(“C:\\users\\khuhan rawat\\Desktop\\pokemon\\snorlax.png”)
squirtle=pygame.image.load(“C:\\users\\khuhan rawat\\Desktop\\pokemon\\squirtle.png”)
poke=[牛巴苏尔、查尔曼德、德拉蒂尼、伊维、吉格利普夫、喵喵、皮卡丘、普赛杜克、斯诺拉克斯、斯奎特尔]
博凯明=[meowth,pikachu]
pokeX=[]
pokeY=[]
零钱=[1,1]
对于范围(8)中的i:
n=random.randint(0,9)
poke1=poke[n]
pokeImg.append(poke1)
pokeX.append(random.randint(0768))
pokeY.append(random.randint(-80400))
零钱。追加(1)
对于范围(2)中的i:
pokeX.append(random.randint(0768))
pokeY.append(random.randint(-80400))
def口袋妖怪(x,y,i,l):
屏幕光点(l[i],(x,y))
#碰撞
def碰撞(x、y、playerX、playerY):
dist=math.sqrt((math.pow(x-playerX,2))+(math.pow(y-playerY,2)))
如果dist=600:
pokeY[i]=random.randint(-20,40)
pokeX[i]=random.randint(0768)
如果列:
char=pokeImg[i]
如果char==pikachu:
np=随机随机随机数(0,9)
pokeX[i]=random.randint(0736)
pokeY[i]=random.randint(0,40)
口袋妖怪(pokeX[i],pokeY[i],np,poke)
cap=mixer.Sound(“C:\\users\\khuhan rawat\\Desktop\\pokemon\\capture.wav”)
第二节比赛
分数+=5
elif char==meowth:
对于范围(10)内的i:
pokeY[i]=2000
屏幕填充((34,34,34))
gameover()
打破
其他:
np=随机随机随机数(0,9)
pokeX[i]=random.randint(0736)
pokeY[i]=random.randint(0,40)
口袋妖怪(pokeX[i],pokeY[i],np,poke)
cap=mixer.Sound(“C:\\users\\khuhan rawat\\Desktop\\pokemon\\capture.wav”)
第二节比赛
分数+=5
np=随机随机随机数(0,9)
pokeX[i]=random.randint(0736)
pokeY[i]=random.randint(0,40)
口袋妖怪(pokeX[i],pokeY[i],np,poke)
cap=mixer.Sound(“C:\\users\\khuhan rawat\\Desktop\\pokemon\\capture.wav”)
第二节比赛
显示分数()
pygame.display.update()

gameover条件中的中断仅中断for循环,而不中断外部while循环

elif char==meowth:
    for i in range(10):

        pokeY[i]=2000

    screen.fill((34,34,34))
    gameover()
            
    running = False

    break 

将running flag设置为False可以解决问题。

很高兴我能提供帮助,如果问题完全清楚,请将问题标记为已回答。