pygame-将表面积的滚动锁定到有限的数量

我正在玩pygame,并且正在制作记忆游戏。在我的记忆游戏中,我需要在屏幕的中下方有一个小菜单,并在屏幕顶部有一个播放器列表。游戏管理员将在屏幕的左上角输出消息。

卡片所在的可玩板应位于屏幕中央,左右两侧留有少量空白,距顶部和底部约200像素。(例如,如果屏幕的宽度和高度为1200 x 800,可玩板的宽度应为2到1998,高度应为200到600。

我对我的想法做了一个屏幕截图:

http://img1.mukewang.com/607e93f80001243112010800.jpg

我已经提出了带有卡的可滚动板的想法,尽管现在已经过硬编码了,但是我最需要的不是代码,因为我很难弄清楚它应该如何工作。


可玩的面板(屏幕截图上的游戏面板)应通过键盘(向上,向右,向下,向左箭头)移动。我想做的是允许每列多于4张卡,每行多于12张卡,这样一来,当卡数多于12 x 4时,可以移动游戏板,但不退出标记为红色的正方形在屏幕截图上(所以它是可滚动的表面)。我想将可滚动区域限制为1200的宽度和400 px的高度,但是以某种方式该区域只能在红色区域内滚动。


如果那行不通或另有计划,是否有其他方法可以不同地注册点击?假设当我以菜单区域在游戏板上的方式移动键并单击菜单时,我也不想单击菜单下的卡片。有什么方法可以锁定菜单下的内容?


在下面添加代码示例:


from pygame import *

import sys


init()

screen_width = 1200

screen_height = 800

screen = display.set_mode((screen_width, screen_height))



board_width = 2000

board_height = 1000

playable_board = Surface((board_width, board_height))

playable_board = playable_board.convert()


screen.fill((255, 255, 255))



#draw.rect(playable_board, (125, 125, 125), (2, 200, board_width, board_height))

for x in range(0, 50):

    draw.rect(playable_board, (100, 100, 100), (x * 100 + 5, 200, 90, 90))

    draw.rect(playable_board, (100, 100, 100), (x * 100 + 5, 310, 90, 90))

    draw.rect(playable_board, (100, 100, 100), (x * 100 + 5, 420, 90, 90))

    draw.rect(playable_board, (100, 100, 100), (x * 100 + 5, 530, 90, 90))

    # draw.rect(playable_board, (100, 100, 100), (x * 100 + 5, 640, 90, 90))


point_x = 0

point_y = 0

point_change = -30


animationTimer = time.Clock()

endProgram = False



while not endProgram:

    for e in event.get():

        pass

    key_pressed = key.get_pressed()

    if e.type == QUIT:

        endProgram = True

    if e.type == MOUSEBUTTONUP:

        mouse_x, mouse_y = e.pos

        display.set_caption(('Coordinates: ' + str(mouse_x + abs(point_x)) + 'x' + str(mouse_y + abs(point_y))))

        draw.rect(playable_board, (50, 200, 50), (mouse_x + abs(point_x), mouse_y + abs(point_y), 10, 10))



慕妹3146593
浏览 132回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python