【问题标题】:Egg and basket game in pythonpython中的鸡蛋和篮子游戏
【发布时间】:2016-04-26 17:06:14
【问题描述】:

我是 python 编程的初学者。我有一个使用python制作游戏的课程项目。我尝试使用 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

【问题讨论】:

    标签: python python-2.7 pygame


    【解决方案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 并学习碰撞。 去here 获取一些非常好的例子。也可以here 获取优秀的 Pygame 指南。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-08
      • 2016-03-03
      • 2011-02-13
      • 2013-05-22
      • 2010-10-21
      • 2019-02-21
      • 2011-01-02
      相关资源
      最近更新 更多