Python&PyGame点击图片后如何增加变量?

2024-09-29 23:18:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在PyGame中制作我的第一个游戏。目标是点击一个罐子(标题是“jar.png文件)以获得更多的沙子。还有短信不断地告诉你你有多少沙子。在

但我有个问题,我需要一个脚本,确保当你点击jar.png文件它增加了一个变量。另外,如果我找到了这个问题的解决方案,我不确定文本是否能正确显示变量。在

我当前的代码如下:

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

所以,你能给我一段编辑过的代码,里面包含我想要的功能吗。谢谢您。在


Tags: 文件imageimporteventpngdisplayloadscreen
2条回答

您的代码不是一个结构良好的pygame应用程序。 一个小的pygame应用程序代码是什么样子的:

结构

应用程序初始化

在这里,我们放置pygame.init(),获取屏幕变量,加载所有必需的图像和文件,创建程序中可能需要的任何其他变量。

While循环

我们把所有需要更新的东西都放在这里。 我们可以将代码分为3部分:

  • 绘图-背景,以及需要绘制的所有其他精灵
  • 更新-更新时钟、移动精灵、检查碰撞等
  • 处理输入设置变量,这些变量可以在update方法中更改精灵的行为。在

这三个部分必须清楚地分开!

其他几件事:永远不要打电话给sleep(),因为这会冻结你的游戏。 另外,第二个while循环永远不会执行。

现在回到问题上来: 在事件循环中,检查与jar rect的冲突。要使用的方法是:Rect.collidepoint,当点在矩形中时返回True。

我有两件事要说:

首先,正如Bartlomiej Lewandowski所说,这是一些无组织的pygame代码。我推荐一本关于pygame和一般gameLoop组织的免费电子书inventwithpython。

第二,我也处理过这种问题。首先,有一个函数可以增加一个全局变量来计算点击次数:

clickCount = 0
multiplier = 1

def incrementClickCount():
    global clickCount
    global multiplier
    click += 1 * multiplier  

然后你要做的是测试鼠标光标按下时的位置,如果它在你想要的坐标上。(您可以为此添加按钮动画):

^{pr2}$

您可以通过不同的用户操作和/或使用简单的检查点来更改乘法器的值!我不建议使用乘数作为参数,因为它会降低应用程序的灵活性。

如果你觉得有用,别忘了接受它作为答案!干杯:)

顺便说一下,这个例子在鼠标光标点击测试中逐个像素地测试精确度。要检查区域单击,请检查(x,y)是否位于按钮/单击区域内。

相关问题 更多 >

    热门问题