gpt4 book ai didi

python - python 中的鸡蛋和篮子游戏

转载 作者:太空宇宙 更新时间:2023-11-03 16:40:14 24 4
gpt4 key购买 nike

我是Python编程的初学者。我有一个使用 python 制作游戏的类(class)项目。我尝试使用 pygame 制作鸡蛋和篮子游戏。游戏在某种程度上正在发挥作用。我能够使鸡蛋下落并通过按键移动篮子,但我无法使鸡蛋连续下落,即只有一个鸡蛋下落,然后它就停止下落。我预计鸡蛋会像实际游戏中那样一个接一个地落下。

而且我不知道如何知道鸡蛋何时落入篮子以及如何在鸡蛋落入篮子时增加分数。

你能帮我一下吗?

Screenshot of my game

#The egg and basket game

import pygame
from pygame.locals import *
import time
import random
clock = pygame.time.Clock()
x=260
y=500
#Screen initialize
pygame.init()
pygame.font.init()
screen=pygame.display.set_mode((600,600))
pygame.display.set_caption("egg")

#Background
cloud=pygame.image.load("clouds.jpg")
cloud=pygame.transform.scale(cloud,(600,600))
screen.blit(cloud,(0,0))

#Basket
basket=pygame.image.load("basket.jpg")
basket=pygame.transform.scale(basket,(80,80))
screen.blit(basket,(x,y))
pygame.display.update()

#egg
egg=pygame.image.load("egg.jpg")
egg=pygame.transform.scale(egg,(20,20))

#screen.blit(egg,(290,20))
pygame.display.update()

#Movement of basket
ychange=0
xchange=0
exiting=False
for yegg in range(20,550):

#for i in range(0,100):
xegg=random.randrange(50,550)
while not exiting:
#xegg=random.randrange(50,550)
#for yegg in range(20,550):
if yegg<550:
ychange+=1
pygame.display.update()
clock.tick(60)
screen.blit(egg,(xegg,ychange))

else:
yegg=20
yegg=yegg+ychange
pygame.display.update()
clock.tick(60)
screen.blit(egg,(xegg,yegg))
#yegg=20
pygame.display.update()
clock.tick(60)
#yegg=20

for event in pygame.event.get():
print(event)
if(event.type==pygame.QUIT):
exiting=True
pygame.quit()
quit()
if(event.type==pygame.KEYDOWN):
if(event.key==pygame.K_LEFT):
xchange=-5
if(event.key==pygame.K_RIGHT):
xchange=5
screen.blit(basket,(x,y))
if(event.type==pygame.KEYUP):
if(event.key==pygame.K_LEFT or event.key==pygame.K_RIGHT):
xchange=0

x=x+xchange
print(x)
screen.blit(cloud,(0,0))

screen.blit(basket,(x,y))

pygame.display.update()
clock.tick(60)

i=i+1
ychange=0
#random position of eggs

#MOVEMENT OF egg

最佳答案

首先使用.png图像使图像周围的白色方 block 消失。使用pygame.image.load("myimage.png").convert_alpha()

xegg=random.randrange(50,550)

上面的行应该位于 while 循环内,以便每次迭代都能获得随机的 x 值。我对您的代码做了一些更改,现在鸡蛋从随机位置掉落。要捕获它们,您必须检查篮子和鸡蛋之间是否发生碰撞。

#The egg and basket game

import pygame
from pygame.locals import *
import time
import random
clock = pygame.time.Clock()
x=260
y=500
#Screen initialize
pygame.init()
pygame.font.init()
screen=pygame.display.set_mode((600,600))
pygame.display.set_caption("egg")

#Background
cloud=pygame.image.load("clouds.png").convert_alpha()
cloud=pygame.transform.scale(cloud,(600,600))
screen.blit(cloud,(0,0))

#Basket
basket=pygame.image.load("basket.png").convert_alpha()
basket=pygame.transform.scale(basket,(80,80))
screen.blit(basket,(x,y))
pygame.display.update()

#egg
egg=pygame.image.load("eggs.png").convert_alpha()
egg=pygame.transform.scale(egg,(20,20))

#screen.blit(egg,(290,20))
pygame.display.update()

#Movement of basket
ychange=0
xchange=0
exiting=False


xegg = random.randrange(50,550)
yegg = 20
while not exiting:
#xegg=random.randrange(50,550)
#for yegg in range(20,550):
print yegg
if yegg<550:
yegg += 5
pygame.display.update()
clock.tick(60)
screen.blit(egg,(xegg,yegg))

else:
yegg=20
xegg = random.randrange(50,550)
yegg=yegg+ychange
pygame.display.update()
clock.tick(60)
screen.blit(egg,(xegg,yegg))
#yegg=20
pygame.display.update()
clock.tick(60)
#yegg=20

for event in pygame.event.get():
print(event)
if(event.type==pygame.QUIT):
exiting=True
pygame.quit()
quit()
if(event.type==pygame.KEYDOWN):
if(event.key==pygame.K_LEFT):
xchange=-5
if(event.key==pygame.K_RIGHT):
xchange=5
screen.blit(basket,(x,y))
if(event.type==pygame.KEYUP):
if(event.key==pygame.K_LEFT or event.key==pygame.K_RIGHT):
xchange=0

x=x+xchange
print(x)
screen.blit(cloud,(0,0))

screen.blit(basket,(x,y))

pygame.display.update()
clock.tick(60)

i=i+1
ychange=0
#random position of eggs

#MOVEMENT OF egg

转到pygame collisions并学习碰撞。去 here一些非常好的例子。另外here优秀的 Pygame 指南。

关于python - python 中的鸡蛋和篮子游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36871380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com