[英]Python & PyGame - How to increase a variable after clicking on a image?
我正在嘗試在PyGame中制作我的第一個游戲。 目的是單擊一個罐子(Titled“ jar.png”)以獲得更多的沙子。 也有文字不斷告訴您您有多少沙子。
但是,我有一個問題,我需要一個腳本來確保當您單擊“ jar.png”時,它將變量sand增加1。此外,如果確實找到了解決此問題的方法,則不確定該文本是否正確。將正確顯示該變量。
我當前的代碼如下所示:
import sys, pygame
from pygame.locals import *
pygame.init()
size = width, height = 800,500
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Sand Maker (Created by - Not Really Working Lamp Productions:)")
CORNBLUE = (100,149,237)
WHITE = (255,255,255)
sand = 0
liams = 0
screen.fill (CORNBLUE)
jar = pygame.image.load("jar.png")
screen.blit(jar,(90,50))
liambutton = pygame.image.load("liam button.png")
screen.blit(liambutton,(450,50))
liamdesc = pygame.image.load("liam desc.png")
screen.blit(liamdesc,(350,50))
myfont = pygame.font.SysFont("monospace", 16)
scoretext = myfont.render("Number of sand = "+str(sand), 1, (255,255,255))
screen.blit(scoretext, (5, 10))
liamscoretext = myfont.render("Number of Liams = "+str(liams), 1, (255,255,255))
screen.blit(liamscoretext, (350, 10))
import time
while 1:
for event in pygame.event.get():
pygame.display.flip()
if event.type == pygame.QUIT:sys.exit()
while 1:
time.sleep(5)
sand = sand + 1 * liams
因此,能否請您提供包含所需功能的這段代碼的編輯部分。 謝謝。
您的代碼不是結構良好的pygame應用程序。 小型pygame應用程序代碼如下所示:
在這里,我們放置pygame.init()
,獲取屏幕變量,加載所有必要的圖像和文件,創建程序中可能需要的其他變量。
在這里,我們放置了所有需要更新的內容。 我們可以在這里將代碼分為3部分:
這三個部分必須清楚分開!
其他幾件事:永遠不要調用sleep()
,因為這實質上會凍結您的游戲。 另外,您的第二個while循環永遠不會執行。
現在回到問題所在:在事件循環中,檢查與jar rect的碰撞。 使用的方法是: Rect.collidepoint
,當該點在矩形中時返回True。
我對此有兩句話:
首先,正如Bartlomiej Lewandowski所說的,這是一些無組織的pygame代碼。 我推薦這本來自inventwithpython的有關pygame和一般gameLoop組織的免費電子書。
其次,我也曾與tkinter一起處理此類問題。 首先具有一個可以增加用於計算點擊次數的全局變量的函數:
clickCount = 0
multiplier = 1
def incrementClickCount():
global clickCount
global multiplier
click += 1 * multiplier
然后,您要做的就是測試按下鼠標光標的位置(如果它位於所需的坐標上)。 (您可以為此添加按鈕動畫):
def checkForCursorPressed(x,y):
if pygame.mouse.get_pressed() == (1, 0, 0) and pygame.mouse.get_pos() == (x,y):
incrementClickCount()
您可以通過不同的用戶操作和/或使用簡單的檢查點來更改倍增器的值! 我不建議將乘數用作參數,因為它會降低應用程序的可感知性。
如果發現有用,不要忘了接受它作為答案! 干杯:)
順便說一句,此示例在鼠標光標單擊測試上測試逐像素准確性。 要檢查點擊區域,請檢查(x,y)是否位於按鈕/點擊區域內。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.