嘿,我是pygame的初学者,我刚刚开始构建游戏,但我被困在这个游戏中,我不知道我做错了什么。我做了一个游戏,在这个游戏中,汽车通过光线或electricity.When充电它在阳光下,电池水平开始增加,而在较冷的地区,它只能在有电荷的情况下才能充电station.The问题是,电池水平在其余代码中是递增的,但当我点击代码末尾的充电图标时,它以not.By的方式工作,充电图标是一种助推器,只有在游戏结束时才会提供。我曾多次尝试更改该特定代码,并在其他模块中进行了测试,但它在all.Please上不起作用。告诉我为什么电池电量在这种情况下没有增加。我已经被困在那里至少五次了,days.Any帮助会很有用。
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()发布于 2020-04-28 15:11:39
charging_icon是一个pygame.Surface对象。曲面对象没有位置。当它在目标曲面上为blit时,它被放置到指定的位置。因此,.get_rect()返回的pygame.Rect对象的位置总是(0,0)。
您必须设置矩形的位置,例如,通过将关键字参数传递给.get_rect()
charging_rect = charging_icon.get_rect(topleft = (iconX,iconY))
if charging_rect.collidepoint(mouse_position) and warning_time < -1:
battery_level += 1https://stackoverflow.com/questions/61474293
复制相似问题