Hey i'm a beginner to pygame and I have just started building games but I got stuck at this game and I'm not able to figure out what I am doing wrong.I have made a game in which car gets charged either through light or electricity.When it's in sunlight,the battery level starts increasing while in colder region,it can only be charged if there is an electric charge station.The problem is that the battery level is incrementing in the rest of the code but when i click at the charging icon at the end of the code,it does not.By the way,charging icon is a sort of booster which is provided only if available at the end of the game.I have tried to change that particular code several times and tested that in other modules but it's not working at all.Please tell me why battery level is not incrementing in that case.I have been stuck there for at least five days.Any help would be appreciable.
import pygame, time, random
pygame.init()
screen = pygame.display.set_mode((800, 600))
dual_car = pygame.image.load("dual-car.png")
carX = 300
carY = 528
carX_change = 0
carY_change = 0
charging_icon = pygame.image.load("chargingicon.png").convert()
iconX = 500
iconY = 200
charging_station = pygame.image.load("charging-station.png")
chargingX = 0
chargingY = 475
first_location = pygame.image.load("bright-road.png")
firstX = 0
firstY = 0
second_location = pygame.image.load("snow-road.png")
secondX = 2000
secondY = 0
third_location = pygame.image.load("sunny.png")
thirdX = 4000
thirdY = 0
fourth_location = pygame.image.load("snow-road2.png")
fourthX = 6000
fourthY = 0
battery_level = 1
game_level = 1
font = pygame.font.Font("freesansbold.ttf", 32)
second_font = pygame.font.Font("freesansbold.ttf", 20)
warning_time = 30
draw_rectangles = "a"
transparent = (0, 0, 0, 0)
def text():
text = font.render("Battery Level:" + str(battery_level) +
"%",True, (48, 88, 123))
screen.blit(text, (0, 0))
def text2():
text2 = font.render("BATTERY CHARGING", True, (69,117,203))
screen.blit(text2, (300, 250))
def text3():
text3 = font.render("BATTERY DISCHARGING", True, (28, 229,7))
screen.blit(text3, (300, 250))
def text4():
text4 = font.render("BATTERY FULLY CHARGED",
True(11,103,77))
screen.blit(text4, (300, 250))
def text5():
text5 = font.render("GAME LEVEL: " + str(game_level), True,
(255, 0, 255))
screen.blit(text5, (0, 130))
def first():
screen.blit(first_location, (firstX, firstY))
def second():
screen.blit(second_location, (secondX, secondY))
def third():
screen.blit(third_location, (thirdX, thirdY))
def fourth():
screen.blit(fourth_location, (fourthX, fourthY))
def car():
screen.blit(dual_car, (carX, carY))
def show():
first()
second()
third()
fourth()
car()
text()
text5()
run = True
while run:
screen.fill((255, 255, 255))
show()
firstX -= 2
secondX -= 4
thirdX -= 4
fourthX -= 4
if draw_rectangles == False:
rect1 = pygame.draw.rect(screen, (49, 97, 132), (100, 200, 500, 150))
rect2 = pygame.draw.rect(screen, (27, 166, 166), (100, 300, 500, 150))
text7 = second_font.render("Press below to quit!!", True, (100, 200, 99))
rect3 = pygame.draw.rect(screen, (255, 255, 255), (100, 450, 100, 100))
text8 = second_font.render("QUIT", True, (87, 163, 249))
text9 = second_font.render("SORRY YOU COUDN'T CHARGE THE BATTERY", True, (249, 133, 87))
rect4 = pygame.draw.rect(screen, (255, 0, 255), (200, 450, 400, 100))
text10 = second_font.render("USE POWER SUPPLY", True, (0, 0, 0))
screen.blit(text7, (100, 300))
screen.blit(text8, (100, 450))
screen.blit(text9, (100, 200))
screen.blit(text10, (200, 450))
pygame.display.flip()
elif draw_rectangles == True:
screen.blit(charging_icon,(iconX,iconY))
pygame.display.update()
carX += carX_change
carY += carY_change
if carX >= 0:
pygame.time.delay(100)
carX_change = 1
if carX >= 574:
carX = 300
if secondX - carX > 10 and battery_level < 100 and carX % 2 == 0:
battery_level += 1
text2()
pygame.display.flip()
if secondX - carX <= 10 and battery_level > 0 and carX % 1 == 0:
battery_level -= 1
text3()
pygame.display.flip()
if secondX - carX <= 10 and battery_level == 0:
minutes = warning_time // 60
seconds = warning_time - (60 * minutes)
warning_time -= 1
if warning_time > -1 and battery_level == 0:
screen.blit(charging_station, (chargingX, chargingY))
text6 = font.render("WARNING TIME " + str(minutes) + ":" + str(seconds), True, (56, 70, 72))
screen.blit(text6, (400, 0))
pygame.display.flip()
time.sleep(1)
elif warning_time > -1 and battery_level > 0:
game_level += 1
if warning_time == -1 and battery_level == 0:
draw_rectangles = False
if carX - chargingX < 200 and battery_level == 0:
battery_level += 100
game_level += 1
carX = 300
if thirdX - carX <= 10 and battery_level < 100 and carX % 1 == 0:
battery_level += 1
if fourthX - carX <= 10 and battery_level > 0 and carX % 2 == 0:
battery_level -= 1
if battery_level == 100:
text4()
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
carX -= 10
if event.key == pygame.K_RIGHT:
carX += 10
elif event.type == pygame.MOUSEBUTTONDOWN:
mouse_position = pygame.mouse.get_pos()
if rect3.collidepoint(mouse_position):
pygame.quit()
if rect4.collidepoint(mouse_position):
draw_rectangles = True
if charging_icon.get_rect().collidepoint(mouse_position) and warning_time < -1:
battery_level += 1
pygame.quit()