I am trying to create a space invader game. in which I have to display different waves 1,2,3 I have written the code
wave1="bgk.png"
if wave1!=wave:
screen.blit(pygame.image.load(wave),(615,480))
wave="bgk.png"
time.sleep(3)
screen.blit(pygame.image.load(wave),(615,480))
Here 'wave' changes after a certain number of scores are reached but
The problem is that the first image doesn't load before the 3-second break. and after 3 seconds it loads for about 0.1(negligible) amount of time you can see if you look very closely I don't know what is causing this issue please help
The full code is here
#imports
import pygame
import random
import time
import math
#collition detection #multi enmy #sound
#essentials and functions
pygame.init()
screen = pygame.display.set_mode((1920,1080))
pygame.display.set_caption("Space Invaders")
#lifehiscore.txt
life=3
f=open("hiscore.txt",'r')
hiscore=int(f.read())
def lifes():
global score
X=1550
Y=0
for i in range(life):
screen.blit(playerimg,(X,Y))
X+=125
Y+=0
if life==0:
if score>hiscore:
f=open("hiscore.txt",'w')
f.write(str(score))
exit()
#score
_0=pygame.image.load("0.png")
_1=pygame.image.load("1.png")
_2=pygame.image.load("2.png")
_3=pygame.image.load("3.png")
_4=pygame.image.load("4.png")
_5=pygame.image.load("5.png")
_6=pygame.image.load("6.png")
_7=pygame.image.load("7.png")
_8=pygame.image.load("8.png")
_9=pygame.image.load("9.png")
def scores():
global score
score=str(score)
score_list=[]
for i in range(len(str(score))):
if str(score[i])==str(0):
score_list.append(_0)
elif str(score[i])==str(1):
score_list.append(_1)
elif str(score[i])==str(2):
score_list.append(_2)
elif str(score[i])==str(3):
score_list.append(_3)
elif str(score[i])==str(4):
score_list.append(_4)
elif str(score[i])==str(5):
score_list.append(_5)
elif str(score[i])==str(6):
score_list.append(_6)
elif str(score[i])==str(7):
score_list.append(_7)
elif str(score[i])==str(8):
score_list.append(_8)
elif str(score[i])==str(9):
score_list.append(_9)
X=300
Y=0
for i in range(len(score_list)):
screen.blit(score_list[i],(X,Y))
X+=50
score=int(score)
def hiscores():
global hiscore
hiscore=str(hiscore)
hiscore_list=[]
for i in range(len(str(hiscore))):
if str(hiscore[i])==str(0):
hiscore_list.append(_0)
elif str(hiscore[i])==str(1):
hiscore_list.append(_1)
elif str(hiscore[i])==str(2):
hiscore_list.append(_2)
elif str(hiscore[i])==str(3):
hiscore_list.append(_3)
elif str(hiscore[i])==str(4):
hiscore_list.append(_4)
elif str(hiscore[i])==str(5):
hiscore_list.append(_5)
elif str(hiscore[i])==str(6):
hiscore_list.append(_6)
elif str(hiscore[i])==str(7):
hiscore_list.append(_7)
elif str(hiscore[i])==str(8):
hiscore_list.append(_8)
elif str(hiscore[i])==str(9):
hiscore_list.append(_9)
X=1000
Y=0
for i in range(len(hiscore_list)):
screen.blit(hiscore_list[i],(X,Y))
X+=50
hiscore=int(hiscore)
#player player.png
score=0
nscore=0
playerimg=pygame.image.load("player.png")
playerX=896
playerY=908
playerX_change=0
def player():
global playerX
global playerY
global playerX_change
playerX+=playerX_change
if playerX<=50:
playerX=50
if playerX >=1742:
playerX = 1742
screen.blit(playerimg, (playerX,playerY))
#bullet
bulletimg=pygame.image.load("bullet.png")
bulletY_change=-50
bulletX=playerX
bulletY=playerY
bullet_state="rest"
def bullet(bulletX,bulletY):
global bullet_state
bulletY-=bulletY_change
bullet_state="fire"
if bulletY<=0:
bullet_state="rest"
screen.blit(bulletimg,(bulletX,bulletY))
#collision
def collision(x,y,X,Y):
global score
global enimyY
global enimyX
global enimyX_change
global bullet_state
global enimyimg
global nscore
distance=math.sqrt( (math.pow(x-X,2)) + (math.pow(y-Y, 2)) )
if distance<145:
score+=1
nscore+=1
screen.blit(pygame.image.load("D_effect.png"),(X,Y))
a=enimyimg.index(enimyimg[i])
enimyimg.pop(a)
enimyY.pop(a)
enimyX.pop(a)
bullet_state="rest"
a=random.randint(1,3)
x=random.randint(0,5)
if a%2==0:
enimyimg.append(enimylist[x])
enimyY.append(xlist[x])
enimyX.append(0)
else:
enimyimg.append(enimylist[x])
enimyY.append(xlist[x])
enimyX.append(0)
def iscollision():
global enimyX
global enimyY
if len(enimyY)==1:
pass
else:
for i in range(len(enimyX)):
i-=1
distance=math.sqrt( (math.pow(enimyX[i]-enimyX[i+1],2)) + (math.pow(enimyY[i]-enimyY[i+1], 2)) )
if distance<100:
enimyX[i]+=100
#enimy
enimylist=[pygame.image.load("enimy1.png"),pygame.image.load("enimy2.png"),pygame.image.load("enimy3.png"),
pygame.image.load("enimy1m.png"),pygame.image.load("enimy2m.png"),pygame.image.load("enimy3m.png")]
xlist=[250,350,450,550,650,750]
enimyimg=[pygame.image.load("enimy1.png")]
enimyX=[0]
enimyY=[250]
no_of_enemy=1
def enimy_quantity():
global no_of_enemy
global enimyimg
global enimyX
global enimyY
global score
global nscore
global wave
# enimyY=[]
# enimyimg=[]
# enimyY=[]
if nscore==10:
enimyX=[]
enimyY=[]
enimyimg=[]
wave="wave1.png"
for i in range(0,2):
x=random.randint(0,5)
enimyimg.append(enimylist[x])
enimyX.append(0)
enimyY.append(xlist[x])
nscore+=1
elif nscore==27:
enimyX=[]
enimyY=[]
enimyimg=[]
wave="wave2.png"
for i in range(0,3):
x=random.randint(0,5)
enimyimg.append(enimylist[x])
enimyX.append(0)
enimyY.append(xlist[x])
nscore+=1
elif nscore==55:
enimyX=[]
enimyY=[]
enimyimg=[]
wave="wave3.png"
for i in range(0,4):
x=random.randint(0,5)
enimyimg.append(enimylist[x])
enimyX.append(0)
enimyY.append(xlist[x])
nscore+=1
elif nscore==109:
enimyX=[]
enimyY=[]
enimyimg=[]
wave="wave4.png"
for i in range(0,5):
x=random.randint(0,5)
enimyimg.append(enimylist[x])
enimyX.append(0)
enimyY.append(xlist[x])
nscore+=1
elif nscore==164:
enimyX=[]
enimyY=[]
enimyimg=[]
wave="wave5.png"
for i in range(0,6):
x=random.randint(0,5)
enimyimg.append(enimylist[x])
enimyX.append(0)
enimyY.append(xlist[x])
nscore+=1
enimyX_change=10
def enimy():
global enimyX_change
global enimyY
global enimyX
global enimyimg
global life
for i in range(len(enimyimg)):
enimyX[i]+=enimyX_change
if enimyX[i] < 0:
a=enimyimg.index(enimyimg[i])
enimyimg.pop(a)
enimyY.pop(a)
enimyX.pop(a)
bullet_state="rest"
a=random.randint(1,3)
x=random.randint(0,5)
if a%2==0:
enimyimg.append(enimylist[x])
enimyY.append(xlist[x])
enimyX.append(0)
else:
enimyimg.append(enimylist[x])
enimyY.append(xlist[x])
enimyX.append(0)
elif enimyX[i] > 1742:
life-=1
a=enimyimg.index(enimyimg[i])
enimyimg.pop(a)
enimyY.pop(a)
enimyX.pop(a)
bullet_state="rest"
a=random.randint(1,3)
x=random.randint(0,5)
if a%2==0:
enimyimg.append(enimylist[x])
enimyY.append(xlist[x])
enimyX.append(0)
else:
enimyimg.append(enimylist[x])
enimyY.append(xlist[x])
enimyX.append(0)
screen.blit(enimyimg[i], (enimyX[i], enimyY[i]))
wave="bgk.png"
#game loop
running=True
while running:
screen.blit(pygame.image.load("bg.png"),(0,0))
wave1="bgk.png"
if wave1!=wave:
screen.blit(pygame.image.load(wave),(615,480))
wave="bgk.png"
time.sleep(3)
screen.blit(pygame.image.load(wave),(615,480))
else:
pass
for event in pygame.event.get():
if event.type==pygame.QUIT:
running=False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
playerX_change = -20
if event.key == pygame.K_RIGHT:
playerX_change = 20
if event.key == pygame.K_a:
playerX_change = -20
if event.key == pygame.K_d:
playerX_change = 20
if event.key == pygame.K_SPACE:
if bullet_state=="rest":
bulletX=(playerX+64)
bulletY=(playerY+0)
bullet(bulletX,bulletY)
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT:
playerX_change = -2
if event.key == pygame.K_RIGHT:
playerX_change = 2
if event.key == pygame.K_a:
playerX_change = -2
if event.key == pygame.K_d:
playerX_change = 2
player()
scores()
#bullet
if bullet_state=="rest":
bulletX=playerX
bulletY=playerY
if bullet_state=="fire":
bullet(bulletX,bulletY)
bulletY+=bulletY_change
#enimy
enimy()
enimy_quantity()
iscollision()
lifes()
hiscores()
#collision
for i in range(len(enimyimg)):
collision(bulletX, bulletY, enimyX[i], enimyY[i])
pygame.display.update()
I am very new to the coding culture I don't know how to use StackOverflow i might have made some silly mistakes and i am very