Python 2.7 用PyGame点击图片

Python 2.7 用PyGame点击图片,python-2.7,pygame,Python 2.7,Pygame,我目前正在使用Python和PyGame开发一个游戏。我已经为主选项按钮制作了图像精灵,但我似乎不知道如何使图像可点击,从而将我带到另一个屏幕。源代码: import os import sys import pygame import time class Colors: black = (0, 0, 0) white = (255, 255, 255) red = (255, 0, 0) dark_red = (102, 0, 0) grey = (

我目前正在使用Python和PyGame开发一个游戏。我已经为主选项按钮制作了图像精灵,但我似乎不知道如何使图像可点击,从而将我带到另一个屏幕。源代码:

import os
import sys
import pygame
import time

class Colors:
    black = (0, 0, 0)
    white = (255, 255, 255)
    red = (255, 0, 0)
    dark_red = (102, 0, 0)
    grey = (128, 128, 128)
    dark_grey = (51, 51, 51)

class Variables:
    screen_w = 1000
    screen_h = 600
    battleButton = pygame.image.load("Images/battle_button.png")
    shopButton = pygame.image.load("Images/shop_button.png")
    saveButton = pygame.image.load("Images/save_button.png")
    equippedItem = pygame.image.load("Images/equipped.png")
    creditsButton = pygame.image.load("Images/credits_button.png")
    baseballBat = pygame.image.load("Images/baseball_bat.png")
    baseballBat = pygame.transform.scale(baseballBat, (250, 250))
    playerHealthMax = 100
    playerHealthMin = 0
    playerHealth = playerHealthMax
    playerCash = 0
    pygame.font.init()
    gameFont = pygame.font.SysFont("Tweaky", 70)
    title = gameFont.render("Causatum", 1, (Colors.black))
    mainFont = pygame.font.SysFont("Arial Rounded MT Bold", 50)
    equippedWeap = mainFont.render("Equipped", 1, (Colors.black))
    cash = mainFont.render("Cash: ${}".format(playerCash), 1, 
(Colors.black))
    health = mainFont.render("Health: {}".format(playerHealth), 1, 
(Colors.black))
    gameVersion = mainFont.render("v1.0.0", 1, (Colors.black))

screen = pygame.display.set_mode((Variables.screen_w, Variables.screen_h))
pygame.display.set_caption("Causatum")
screen.fill(Colors.black)
pygame.display.flip()
running = True

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    screen.fill(Colors.grey)
    screen.blit(Variables.battleButton, (0, 170))
    screen.blit(Variables.shopButton, (0, 240))
    screen.blit(Variables.saveButton, (0, 310))
    screen.blit(Variables.title, (330, 0))
    screen.blit(Variables.equippedItem, (645, 250))
    screen.blit(Variables.baseballBat, (735, 230))
    screen.blit(Variables.equippedWeap, (723, 215))
    screen.blit(Variables.creditsButton, (0, 380))
    screen.blit(Variables.cash, (0, 50))
    screen.blit(Variables.health, (0, 0))
    screen.blit(Variables.gameVersion, (905, 0))
    pygame.display.flip()

感谢您的任何帮助。谢谢。

试试这样:

#in 'Variables' add this line
battleButton_rect = battleButton.get_rect(centerx = 0, centery = 170)

#new function, outside any classes
def collide(mouseX, mouseY, rect): #new function for checking the collision of the mouse with a button
    return (mouseX >= rect.x-rect.width/2 and mouseX <= rect.x+rect.width/2 and mouseY >= rect.y-rect.height/2 and mouseY <= rect.y+rect.height/2)

# in 'while running'
if pygame.mouse.get_pressed()[0]: #0 for left button, 1 for right, 2 for middle
    mouse_pos = pygame.mouse.get_pos()
    if collide(mouse_pos[0], mouse_pos[1], Variables.battleButton_rect):
        #code for battle button clicked here

#replace
screen.blit(Variables.battleButton, (0, 170))
#with
screen.blit(Variables.battleButton, Variables.battleButton_rect)
#在“变量”中添加此行
battleButton\u rect=battleButton.get\u rect(centerx=0,centery=170)
#新函数,在任何类之外
def collide(mouseX、mouseY、rect):#用于检查鼠标与按钮碰撞的新功能
返回(mouseX>=rect.x-rect.width/2和mouseX=rect.y-rect.height/2和mouseY