PyGame 应用程序未按预期点亮光标下的图块
PyGame app doesn't light up tiles under cursor as expected
我正在尝试构建一个棋盘,其中光标下方的方块会亮起。我设法创建了棋盘,但是当我尝试实现在我的光标下点亮的瓷砖时,一切都变得疯狂了。
代码所做的只是在浅绿色和深绿色之间交替并绘制一个矩形,如果光标位置等于要写入的矩形,我将浅绿色和深绿色切换为浅绿色,命名为:LIGHT_LIGHT_GREEN 和 LIGHT_DARK_GREEN.
# Setup
import pygame,sys
pygame.init()
WIDTH = 500
HEIGHT = 500
cell_size = 50
screen=pygame.display.set_mode((WIDTH,HEIGHT))
pygame.display.set_caption('HELP')
FPS=pygame.time.Clock()
DARK_GREEN = (76,175,79)
LIGHT_DARK_GREEN = (126,225,129)
LIGHT_GREEN = (139,195,74)
LIGHT_LIGHT_GREEN = (189,245,124)
def mouse_pos():
mx,my = pygame.mouse.get_pos()
mx = int(mx / cell_size)
my = int(my / cell_size)
print(mx,my)
return mx,my
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# Colors
BLACK=(0,0,0)
gameOver=False
while not gameOver:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
mx,my = mouse_pos()
LIGHT = LIGHT_GREEN
DARK = DARK_GREEN
COLOR = DARK
for x in range(0,10):
for y in range(0,10):
if mx == x and my == y:
LIGHT = LIGHT_LIGHT_GREEN
DARK = LIGHT_DARK_GREEN
else:
LIGHT = LIGHT_GREEN
DARK = DARK_GREEN
if COLOR == LIGHT:
COLOR = DARK
else:
COLOR = LIGHT
pygame.draw.rect(screen,COLOR,(x*cell_size,y*cell_size,cell_size,cell_size))
if COLOR == LIGHT:
COLOR = DARK
else:
COLOR = LIGHT
pygame.display.update()
FPS.tick(60)
当您到达光标方块时,您不想中断交替的 COLOR 切换。所以,保持你的交替的东西静态,并使用一个单独的变量来设置“我为这个特定的正方形画什么”,它可以来自颜色,也可以来自你改变的颜色:
mx,my = mouse_pos()
LIGHT = LIGHT_GREEN
DARK = DARK_GREEN
COLOR = DARK
for x in range(10):
for y in range(10):
draw = COLOR
if mx == x and my == y:
if draw == LIGHT_GREEN:
draw = LIGHT_LIGHT_GREEN
else:
draw = LIGHT_DARK_GREEN
if COLOR == LIGHT:
COLOR = DARK
else:
COLOR = LIGHT
pygame.draw.rect(screen,draw,(x*cell_size,y*cell_size,cell_size,cell_size))
if COLOR == LIGHT:
COLOR = DARK
else:
COLOR = LIGHT
我正在尝试构建一个棋盘,其中光标下方的方块会亮起。我设法创建了棋盘,但是当我尝试实现在我的光标下点亮的瓷砖时,一切都变得疯狂了。
代码所做的只是在浅绿色和深绿色之间交替并绘制一个矩形,如果光标位置等于要写入的矩形,我将浅绿色和深绿色切换为浅绿色,命名为:LIGHT_LIGHT_GREEN 和 LIGHT_DARK_GREEN.
# Setup
import pygame,sys
pygame.init()
WIDTH = 500
HEIGHT = 500
cell_size = 50
screen=pygame.display.set_mode((WIDTH,HEIGHT))
pygame.display.set_caption('HELP')
FPS=pygame.time.Clock()
DARK_GREEN = (76,175,79)
LIGHT_DARK_GREEN = (126,225,129)
LIGHT_GREEN = (139,195,74)
LIGHT_LIGHT_GREEN = (189,245,124)
def mouse_pos():
mx,my = pygame.mouse.get_pos()
mx = int(mx / cell_size)
my = int(my / cell_size)
print(mx,my)
return mx,my
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# Colors
BLACK=(0,0,0)
gameOver=False
while not gameOver:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
mx,my = mouse_pos()
LIGHT = LIGHT_GREEN
DARK = DARK_GREEN
COLOR = DARK
for x in range(0,10):
for y in range(0,10):
if mx == x and my == y:
LIGHT = LIGHT_LIGHT_GREEN
DARK = LIGHT_DARK_GREEN
else:
LIGHT = LIGHT_GREEN
DARK = DARK_GREEN
if COLOR == LIGHT:
COLOR = DARK
else:
COLOR = LIGHT
pygame.draw.rect(screen,COLOR,(x*cell_size,y*cell_size,cell_size,cell_size))
if COLOR == LIGHT:
COLOR = DARK
else:
COLOR = LIGHT
pygame.display.update()
FPS.tick(60)
当您到达光标方块时,您不想中断交替的 COLOR 切换。所以,保持你的交替的东西静态,并使用一个单独的变量来设置“我为这个特定的正方形画什么”,它可以来自颜色,也可以来自你改变的颜色:
mx,my = mouse_pos()
LIGHT = LIGHT_GREEN
DARK = DARK_GREEN
COLOR = DARK
for x in range(10):
for y in range(10):
draw = COLOR
if mx == x and my == y:
if draw == LIGHT_GREEN:
draw = LIGHT_LIGHT_GREEN
else:
draw = LIGHT_DARK_GREEN
if COLOR == LIGHT:
COLOR = DARK
else:
COLOR = LIGHT
pygame.draw.rect(screen,draw,(x*cell_size,y*cell_size,cell_size,cell_size))
if COLOR == LIGHT:
COLOR = DARK
else:
COLOR = LIGHT