This is my code:
import pygame
import os
import time
pygame.font.init()
import random
clock = pygame.time.Clock()
timez = 0
time_count = 1000
WIDTH, HEIGHT = 1300, 800
WIN = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("mortal kombat")
YELLOW = (255,255,0)
vel = 5
BG = pygame.transform.scale(pygame.image.load("mortal kombat/mk 11 dragon grotto.jpg"),(WIDTH,HEIGHT))
fireball_image = pygame.transform.scale(pygame.image.load("mortal kombat/Explosion-Fireball-PNG.png"),(100,100))
Fire_vel = 5
Fire_list = []
Max_fire = 6
HIT = pygame.USEREVENT + 1
def draw(Fire_list):
WIN.blit(BG,(0,0))
WIN.blit(Liu_Kang_Character,(LK_rect.x,LK_rect.y))
for fire in Fire_list:
pygame.draw.rect(WIN,(255,255,0),fire)
fire__y = fire.y
WIN.blit(fireball_image,(fire.x-15,fire__y-45))
pygame.display.update()
def pressing_keys(keys_pressed,LK):
if keys_pressed[pygame.K_a] and LK.x >0:
LK.x -= 8
if keys_pressed[pygame.K_d] and LK.x < WIDTH - 250:
LK.x += 8
if keys_pressed[pygame.K_w] and LK.y > 0 :
LK.y -= 8
if keys_pressed[pygame.K_s] and LK.y < HEIGHT - 375:
LK.y += 8
def handle_fire(Fire_list):
for fire in Fire_list:
fire.x -= Fire_vel
############
timez += clock.tick(60)
if timez >= time_count:
fire_y = random.randint(0,800)
fire = pygame.Rect(1200,fire_y,15,15)
Fire_list.append(fire)
timez = 0
if fire.x < 0:
Fire_list.remove(fire)
##############
if LK_rect.colliderect(fire):
pygame.event.post(pygame.event.Event(HIT))
Fire_list.remove(fire)
#liu kang
Liu_Kang_size = (50,50)
Liu_Kang_image= pygame.image.load(os.path.join('mortal kombat','Liu Kang-PNG-File.png'))
Liu_Kang_Character = pygame.transform.scale(Liu_Kang_image,(250,375))
LK_rect = pygame.Rect(100,300,250,375)
run = True
while run:
draw(Fire_list)
keys_pressed = pygame.key.get_pressed()
pressing_keys(keys_pressed,LK_rect)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
break
print(Fire_list)
handle_fire(Fire_list)
pygame.quit()
Somehow fire rects don't appear. But when the code is like this:
import pygame
import os
import time
pygame.font.init()
import random
clock = pygame.time.Clock()
timez = 0
time_count = 1000
WIDTH, HEIGHT = 1300, 800
WIN = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("mortal kombat")
YELLOW = (255,255,0)
vel = 5
BG = pygame.transform.scale(pygame.image.load("mortal kombat/mk 11 dragon grotto.jpg"),(WIDTH,HEIGHT))
fireball_image = pygame.transform.scale(pygame.image.load("mortal kombat/Explosion-Fireball-PNG.png"),(100,100))
Fire_vel = 5
Fire_list = []
Max_fire = 6
HIT = pygame.USEREVENT + 1
def draw(Fire_list):
WIN.blit(BG,(0,0))
WIN.blit(Liu_Kang_Character,(LK_rect.x,LK_rect.y))
for fire in Fire_list:
pygame.draw.rect(WIN,(255,255,0),fire)
fire__y = fire.y
WIN.blit(fireball_image,(fire.x-15,fire__y-45))
pygame.display.update()
def pressing_keys(keys_pressed,LK):
if keys_pressed[pygame.K_a] and LK.x >0:
LK.x -= 8
if keys_pressed[pygame.K_d] and LK.x < WIDTH - 250:
LK.x += 8
if keys_pressed[pygame.K_w] and LK.y > 0 :
LK.y -= 8
if keys_pressed[pygame.K_s] and LK.y < HEIGHT - 375:
LK.y += 8
def handle_fire(Fire_list):
for fire in Fire_list:
fire.x -= Fire_vel
if fire.x < 0:
Fire_list.remove(fire)
if LK_rect.colliderect(fire):
pygame.event.post(pygame.event.Event(HIT))
Fire_list.remove(fire)
#liu kang
Liu_Kang_size = (50,50)
Liu_Kang_image= pygame.image.load(os.path.join('mortal kombat','Liu Kang-PNG-File.png'))
Liu_Kang_Character = pygame.transform.scale(Liu_Kang_image,(250,375))
LK_rect = pygame.Rect(100,300,250,375)
run = True
while run:
draw(Fire_list)
keys_pressed = pygame.key.get_pressed()
pressing_keys(keys_pressed,LK_rect)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
break
##########
timez += clock.tick(60)
if timez >= time_count:
fire_y = random.randint(0,800)
fire = pygame.Rect(1200,fire_y,15,15)
Fire_list.append(fire)
timez = 0
##########
print(Fire_list)
handle_fire(Fire_list)
pygame.quit()
...then the fire images appear.
I'm wondering why when I shift it to the function it doesn't appear anymore, while if it's inside the while loop, it does, since the function is called in the while loop anyway.
For easy reference I've marked the area ive changed with ####. All I did was switch around the places.