我如何才能改变生活的数量(Pygame)?

发布于 2025-01-19 00:41:52 字数 1905 浏览 0 评论 0原文

我是 python 和 pygame 的新手,到目前为止,我设法让一切正常工作,但不知道如何让我的生活变得糟糕。

如果您还没有弄清楚,这是一个简单的水果捕捉游戏。

我已经设法让我的分数上升了。我试过说如果水果低于某个 x 坐标就会夺走生命,但它不起作用。

import time
import random
import pygame
from pygame import*
pygame.init()
myname=input('What is your name')
#set the window size
window= pygame.display.set_mode((800,600) ,0,24)
pygame.display.set_caption("Fruit Catch")
#game variables
myscore=0
mylives=3
mouth_x=300
fruit_x=250
fruit_y=75
fruitlist=['broccoli.gif','chicken.gif']
#prepare for screen
myfont=pygame.font.SysFont("Britannic Bold", 55)
label1=myfont.render(myname, 1, (240, 0, 0))
label3=myfont.render(str(mylives), 1, (20, 255, 0))
#grapchics
fruit=pygame.image.load('data/chicken.png')
mouth=pygame.image.load('data/v.gif')
backGr=pygame.image.load('data/kfc.jpg')
#endless loop
running=True
while running:
    if fruit_y>=460:#check if at bottom, if so prepare new fruit
       fruit_x=random.randrange(50,530,1)
       fruit_y=75
       fruit=pygame.image.load('data/'+fruitlist[random.randrange(0,2,1)])
    else:fruit_y+=5
   #check collision
    if fruit_y>=440:
            if fruit_x>=mouth_x and fruit_x<=mouth_x+300 :
                    myscore+=1
                    fruit_y=600#move it off screen
                    pygame.mixer.music.load('data/eating.wav')



    #detect key events
    for event in pygame.event.get():
            if (event.type==pygame.KEYDOWN):
                if (event.key==pygame.K_LEFT):
                        mouth_x-=55
                if (event.key==pygame.K_RIGHT):
                        mouth_x+=55

    label2=myfont.render(str(myscore), 1, (20, 255, 0))
    window.blit(backGr,(0,0))
    window.blit(mouth, (mouth_x,440))
    window.blit(fruit,(fruit_x, fruit_y))
    window.blit(label1, (174, 537))
    window.blit(label2, (700, 157))
    window.blit(label3, (700, 400))
    pygame.display.update()

I'm new to python and pygame and so far ive managed to get everything working, but cant work out how to make my lives go down.

If you haven't worked out its a simple fruit catching game.

I've managed to make my score go up. I've tried saying if the fruit is below a certain x co ordinate take away a life but it doesn't work.

import time
import random
import pygame
from pygame import*
pygame.init()
myname=input('What is your name')
#set the window size
window= pygame.display.set_mode((800,600) ,0,24)
pygame.display.set_caption("Fruit Catch")
#game variables
myscore=0
mylives=3
mouth_x=300
fruit_x=250
fruit_y=75
fruitlist=['broccoli.gif','chicken.gif']
#prepare for screen
myfont=pygame.font.SysFont("Britannic Bold", 55)
label1=myfont.render(myname, 1, (240, 0, 0))
label3=myfont.render(str(mylives), 1, (20, 255, 0))
#grapchics
fruit=pygame.image.load('data/chicken.png')
mouth=pygame.image.load('data/v.gif')
backGr=pygame.image.load('data/kfc.jpg')
#endless loop
running=True
while running:
    if fruit_y>=460:#check if at bottom, if so prepare new fruit
       fruit_x=random.randrange(50,530,1)
       fruit_y=75
       fruit=pygame.image.load('data/'+fruitlist[random.randrange(0,2,1)])
    else:fruit_y+=5
   #check collision
    if fruit_y>=440:
            if fruit_x>=mouth_x and fruit_x<=mouth_x+300 :
                    myscore+=1
                    fruit_y=600#move it off screen
                    pygame.mixer.music.load('data/eating.wav')



    #detect key events
    for event in pygame.event.get():
            if (event.type==pygame.KEYDOWN):
                if (event.key==pygame.K_LEFT):
                        mouth_x-=55
                if (event.key==pygame.K_RIGHT):
                        mouth_x+=55

    label2=myfont.render(str(myscore), 1, (20, 255, 0))
    window.blit(backGr,(0,0))
    window.blit(mouth, (mouth_x,440))
    window.blit(fruit,(fruit_x, fruit_y))
    window.blit(label1, (174, 537))
    window.blit(label2, (700, 157))
    window.blit(label3, (700, 400))
    pygame.display.update()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

怂人 2025-01-26 00:41:52

检查碰撞时,请使用else

#check collision
if fruit_y>=440:
         if fruit_x>=mouth_x and fruit_x<=mouth_x+300 :
             myscore+=1
             fruit_y=600#move it off screen
             pygame.mixer.music.load('data/eating.wav')
         else:
             mylives-= 1

那应该起作用。

When checking for the collision, use else.

#check collision
if fruit_y>=440:
         if fruit_x>=mouth_x and fruit_x<=mouth_x+300 :
             myscore+=1
             fruit_y=600#move it off screen
             pygame.mixer.music.load('data/eating.wav')
         else:
             mylives-= 1

That should work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文