Hey i am trying to make fruit catcher game in python using pygame but the fruits somehow get struck on screen(screenshot attached).The fruits and basket are getting screeched on the screen. I have also tried adding user defined events but then also the fruits images are getting screeched on the output screen. Can someone tell me what I am doing wrong?
import pygame
import time,random,sys
from pygame.locals import *
screenWidth=800
screenHeight=600
pygame.init()
screen=pygame.display.set_mode((screenWidth,screenHeight))
pygame.display.set_caption("Fruit Catcher")
white=(255,255,255)
black=(0,0,0)
red=(255,0,0)
pygame.mixer.init()
clock=pygame.time.Clock()
font=pygame.font.SysFont("City Blueprint",50)
smallfont=pygame.font.SysFont("City Blueprint",20)
class Basket(pygame.sprite.Sprite):
def __init__(self):
super(Basket,self).__init__()
self.image=pygame.image.load("basket.png").convert_alpha()
self.image=pygame.transform.scale(self.image,(100,70))
self.rect=self.image.get_rect()
self.rect.x=0
self.rect.y=screenHeight-100
def update(self,pressed_keys):
if pressed_keys[K_LEFT]:
self.rect.move_ip(-5,0)
if pressed_keys[K_RIGHT]:
self.rect.move_ip(5,0)
if self.rect.left<0:
self.rect.left=0
if self.rect.right>screenWidth:
self.rect.right=screenWidth
class Fruits(pygame.sprite.Sprite):
def __init__(self,img):
super(Fruits,self).__init__()
self.image=pygame.image.load(img).convert_alpha()
self.image=pygame.transform.scale(self.image,(20,20))
self.rect=self.image.get_rect()
self.rect.x=random.randrange(screenWidth)
self.rect.y=0
self.speed=random.randint(1,7)
def update(self):
self.rect.y+=self.speed
if self.rect.bottom>screenHeight:
self.kill()
fruitsgroup=pygame.sprite.Group()
allsprites=pygame.sprite.Group()
fruits=["apple.png","guava.png","strawberry.png"]
def createBasket():
basket=Basket()
allsprites.add(basket)
return basket
def createFruits():
fruit=Fruits(random.choice(fruits))
fruitsgroup.add(fruit)
allsprites.add(fruit)
return fruit
def start():
screen.blit(pygame.image.load("background.jpg"),(0,0))
fruitsgroup.empty()
allsprites.empty()
basket=createBasket()
while True:
for event in pygame.event.get():
if event.type==QUIT:
return
pressedkeys=pygame.key.get_pressed()
basket.update(pressedkeys)
fruitsgroup.update()
if random.randrange(100)<2:
createFruits()
allsprites.draw(screen)
clock.tick(30)
pygame.display.update()
start()
pygame.quit()