我是python编程的初学者。我有一个使用python制作游戏的课程项目。我尝试使用pygame制作鸡蛋和篮子游戏。游戏在某种程度上正在发挥作用。我可以让鸡蛋掉落并在按键上移动篮子,但我不能让鸡蛋连续下降,即只有一个鸡蛋掉落,之后它就会停止下降。我希望鸡蛋在实际游戏中一个接一个地落下。
而且我不知道如何知道鸡蛋落入篮筐的时间以及如何在篮子落入篮筐时提高分数。
你能帮帮我吗?#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
答案 0 :(得分:1)
首先使用.png图像使图像周围的白色方块消失。
使用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并学习collisons。 转到here获取一些非常好的例子。另外here是一个出色的Pygame指南。