为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕妹3146593 2021-03-29 13:14:06
我正在玩pygame,并且正在制作记忆游戏。在我的记忆游戏中,我需要在屏幕的中下方有一个小菜单,并在屏幕顶部有一个播放器列表。游戏管理员将在屏幕的左上角输出消息。卡片所在的可玩板应位于屏幕中央,左右两侧留有少量空白,距顶部和底部约200像素。(例如,如果屏幕的宽度和高度为1200 x 800,可玩板的宽度应为2到1998,高度应为200到600。我对我的想法做了一个屏幕截图:我已经提出了带有卡的可滚动板的想法,尽管现在已经过硬编码了,但是我最需要的不是代码,因为我很难弄清楚它应该如何工作。可玩的面板(屏幕截图上的游戏面板)应通过键盘(向上,向右,向下,向左箭头)移动。我想做的是允许每列多于4张卡,每行多于12张卡,这样一来,当卡数多于12 x 4时,可以移动游戏板,但不退出标记为红色的正方形在屏幕截图上(所以它是可滚动的表面)。我想将可滚动区域限制为1200的宽度和400 px的高度,但是以某种方式该区域只能在红色区域内滚动。如果那行不通或另有计划,是否有其他方法可以不同地注册点击?假设当我以菜单区域在游戏板上的方式移动键并单击菜单时,我也不想单击菜单下的卡片。有什么方法可以锁定菜单下的内容?在下面添加代码示例:from pygame import *import sysinit()screen_width = 1200screen_height = 800screen = display.set_mode((screen_width, screen_height))board_width = 2000board_height = 1000playable_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 = 0point_y = 0point_change = -30animationTimer = time.Clock()endProgram = Falsewhile 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))
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号