我正在玩pygame,并且正在制作記憶游戲。在我的記憶游戲中,我需要在屏幕的中下方有一個(gè)小菜單,并在屏幕頂部有一個(gè)播放器列表。游戲管理員將在屏幕的左上角輸出消息。卡片所在的可玩板應(yīng)位于屏幕中央,左右兩側(cè)留有少量空白,距頂部和底部約200像素。(例如,如果屏幕的寬度和高度為1200 x 800,可玩板的寬度應(yīng)為2到1998,高度應(yīng)為200到600。我對(duì)我的想法做了一個(gè)屏幕截圖:我已經(jīng)提出了帶有卡的可滾動(dòng)板的想法,盡管現(xiàn)在已經(jīng)過(guò)硬編碼了,但是我最需要的不是代碼,因?yàn)槲液茈y弄清楚它應(yīng)該如何工作。可玩的面板(屏幕截圖上的游戲面板)應(yīng)通過(guò)鍵盤(pán)(向上,向右,向下,向左箭頭)移動(dòng)。我想做的是允許每列多于4張卡,每行多于12張卡,這樣一來(lái),當(dāng)卡數(shù)多于12 x 4時(shí),可以移動(dòng)游戲板,但不退出標(biāo)記為紅色的正方形在屏幕截圖上(所以它是可滾動(dòng)的表面)。我想將可滾動(dòng)區(qū)域限制為1200的寬度和400 px的高度,但是以某種方式該區(qū)域只能在紅色區(qū)域內(nèi)滾動(dòng)。如果那行不通或另有計(jì)劃,是否有其他方法可以不同地注冊(cè)點(diǎn)擊?假設(shè)當(dāng)我以菜單區(qū)域在游戲板上的方式移動(dòng)鍵并單擊菜單時(shí),我也不想單擊菜單下的卡片。有什么方法可以鎖定菜單下的內(nèi)容?在下面添加代碼示例: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))
添加回答
舉報(bào)
0/150
提交
取消