我将如何跟踪用户在棋盘上的点击次数?
How would I keep track of the users clicks on the chessboard?
我正在使用 Python 3.7.4。我正在使用 Pycharm 2020 社区作为我的 IDE。我正在使用 Pygame 1.9.6 作为我的游戏解释器。
我想知道如何跟踪棋手在棋盘上的点击次数。我认为它应该在我的 main() 运行 操作中,但它在哪里?
所以在棋盘上它是一个 8x8 的棋盘,所以有 64 个方格。就像说他们点击一次正方形到 select 上面有一个棋子的正方形,然后如果正方形是空的,则单击另一个正方形将所述棋子移动到另一个正方形。我棋盘上的一个空方块是:“01”。就像我需要某种方式来获得电路板的尺寸,比如一行或一列?
我有电路板的尺寸。
WIDTH = HEIGHT = 512 # 400 is another option
DIMENSION = 8 # dimensions of a chess board are 8x8
SQ_SIZE = HEIGHT // DIMENSION
MAX_FPS = 15 # for animations later on
IMAGES = {}
def main():
p.init()
screen = p.display.set_mode((WIDTH, HEIGHT))
clock = p.time.Clock()
screen.fill(p.Color("white"))
gs = ChessEngine.GameState()
loadImages() # only do this once, before the while loop
running = True
while running:
for e in p.event.get():
if e.type == p.QUIT:
running = False
drawGameState(screen, gs)
clock.tick(MAX_FPS)
p.display.flip()
我以前从未做过鼠标点击,所以我想知道我该怎么做?
可以获取鼠标坐标除以SQ_SIZE
,但是使用floor-division(mousex//SQ_Size),使用两个除号终止小数点,你将留下董事会的索引。例如,如果您单击 (230, 213),您可以...
if pygame.mouse.get_pressed()[0]: # Is the left mouse button down
mousex, mousey = pygame.mouse.get_pos() # (230, 213)
col = mousex // SQ_SIZE # 230 // 64 = 3
row = mousey // SQ_SIZE # 213 // 64 = 3
pieceSelected = chessBoard[row][col]
这样您就可以获取用户点击的片段。
点击字段的索引可以通过//
(floor division)运算符计算。获取MOUSEBUTTONDOWN
事件(见pygame.event
)鼠标位置坐标除以SQ_SIZE
:
def main():
# [...]
while running:
for e in p.event.get():
if e.type == p.QUIT:
running = False
if e.type == p.MOUSEBUTTONDOWN:
mousePos = e.pos
column, row = mousePos[0] // SQ_SIZE, mousePos[1] // SQ_SIZE
columnName, rowName = chr(ord('a') + column), str(row+1)
print("clicked at " + columnName + rowName)
我正在使用 Python 3.7.4。我正在使用 Pycharm 2020 社区作为我的 IDE。我正在使用 Pygame 1.9.6 作为我的游戏解释器。
我想知道如何跟踪棋手在棋盘上的点击次数。我认为它应该在我的 main() 运行 操作中,但它在哪里? 所以在棋盘上它是一个 8x8 的棋盘,所以有 64 个方格。就像说他们点击一次正方形到 select 上面有一个棋子的正方形,然后如果正方形是空的,则单击另一个正方形将所述棋子移动到另一个正方形。我棋盘上的一个空方块是:“01”。就像我需要某种方式来获得电路板的尺寸,比如一行或一列? 我有电路板的尺寸。
WIDTH = HEIGHT = 512 # 400 is another option
DIMENSION = 8 # dimensions of a chess board are 8x8
SQ_SIZE = HEIGHT // DIMENSION
MAX_FPS = 15 # for animations later on
IMAGES = {}
def main():
p.init()
screen = p.display.set_mode((WIDTH, HEIGHT))
clock = p.time.Clock()
screen.fill(p.Color("white"))
gs = ChessEngine.GameState()
loadImages() # only do this once, before the while loop
running = True
while running:
for e in p.event.get():
if e.type == p.QUIT:
running = False
drawGameState(screen, gs)
clock.tick(MAX_FPS)
p.display.flip()
我以前从未做过鼠标点击,所以我想知道我该怎么做?
可以获取鼠标坐标除以SQ_SIZE
,但是使用floor-division(mousex//SQ_Size),使用两个除号终止小数点,你将留下董事会的索引。例如,如果您单击 (230, 213),您可以...
if pygame.mouse.get_pressed()[0]: # Is the left mouse button down
mousex, mousey = pygame.mouse.get_pos() # (230, 213)
col = mousex // SQ_SIZE # 230 // 64 = 3
row = mousey // SQ_SIZE # 213 // 64 = 3
pieceSelected = chessBoard[row][col]
这样您就可以获取用户点击的片段。
点击字段的索引可以通过//
(floor division)运算符计算。获取MOUSEBUTTONDOWN
事件(见pygame.event
)鼠标位置坐标除以SQ_SIZE
:
def main():
# [...]
while running:
for e in p.event.get():
if e.type == p.QUIT:
running = False
if e.type == p.MOUSEBUTTONDOWN:
mousePos = e.pos
column, row = mousePos[0] // SQ_SIZE, mousePos[1] // SQ_SIZE
columnName, rowName = chr(ord('a') + column), str(row+1)
print("clicked at " + columnName + rowName)