I am currently trying to make a sprite blink by showing itself and hiding and I was using ppygame.time.delay to but it slows makes the entire game by stopping the entire game so my question is that is there a way to do this without slowing the entire game down
I will paste my code down below, also I know my delay script is really messy but I just wanted to show it in a more vissually clear way
my full code:
import pygame
import math
import random
from pygame import mixer
from pygame.constants import K_LEFT, K_RIGHT, K_UP, KEYDOWN
from pygame.locals import *
from pygame.sprite import LayeredUpdates
pygame.init()
screen = pygame.display.set_mode((640, 360))
running = True
# globals
global mouse_x
global mouse_y
# mouse
mouse_x = 0
mouse_y = 0
# player
playerImg = pygame.image.load("cursor.png")
playerImg = pygame.transform.scale(playerImg, (32, 32))
def player(x, y):
screen.blit(playerImg, (x, y))
# warning sign
warningImg = pygame.image.load("warning.png")
warningImg = pygame.transform.scale(warningImg, (45, 45))
warningImg = pygame.transform.rotate(warningImg, 90)
warningY = random.randint(45, 315)
warningX = 580
def warning(x, y):
warningY = random.randint(45, 315)
warningX = 600
screen.blit(warningImg, (x, y))
pygame.time.delay(100)
warningX = 900
screen.blit(warningImg, (x, y))
warningX = 600
screen.blit(warningImg, (x, y))
pygame.time.delay(50)
warningX = 900
screen.blit(warningImg, (x, y))
warningX = 600
screen.blit(warningImg, (x, y))
pygame.time.delay(25)
warningX = 900
screen.blit(warningImg, (x, y))
warningX = 600
screen.blit(warningImg, (x, y))
pygame.time.delay(12)
warningX = 900
screen.blit(warningImg, (x, y))
warningX = 600
screen.blit(warningImg, (x, y))
pygame.time.delay(6)
warningX = 900
screen.blit(warningImg, (x, y))
warningX = 600
screen.blit(warningImg, (x, y))
# mouse pos
def mouse_pos_x():
mouse_x, mouse_y = pygame.mouse.get_pos()
while running:
screen.fill((0, 0, 0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
mouse_x, mouse_y = pygame.mouse.get_pos()
player(mouse_x - 16, mouse_y - 16)
warning(warningX, warningY)
pygame.display.update()
the code that delays
# warning sign
warningImg = pygame.image.load("warning.png")
warningImg = pygame.transform.scale(warningImg, (45, 45))
warningImg = pygame.transform.rotate(warningImg, 90)
warningY = random.randint(45, 315)
warningX = 580
def warning(x, y):
warningY = random.randint(45, 315)
warningX = 600
screen.blit(warningImg, (x, y))
pygame.time.delay(100)
warningX = 900
screen.blit(warningImg, (x, y))
warningX = 600
screen.blit(warningImg, (x, y))
pygame.time.delay(50)
warningX = 900
screen.blit(warningImg, (x, y))
warningX = 600
screen.blit(warningImg, (x, y))
pygame.time.delay(25)
warningX = 900
screen.blit(warningImg, (x, y))
warningX = 600
screen.blit(warningImg, (x, y))
pygame.time.delay(12)
warningX = 900
screen.blit(warningImg, (x, y))
warningX = 600
screen.blit(warningImg, (x, y))
pygame.time.delay(6)
warningX = 900
screen.blit(warningImg, (x, y))
warningX = 600
screen.blit(warningImg, (x, y))