亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

Python制作游戲原來(lái)這么簡(jiǎn)單 如何自制游戲

前言: 本期我們將制作一個(gè)拼圖小游戲 。讓我們愉快地開(kāi)始吧~~~
先來(lái)看看效果是這樣子的:

Python制作游戲原來(lái)這么簡(jiǎn)單 如何自制游戲

文章插圖


開(kāi)發(fā)工具 **Python版本:**3.6.4
私信小編01即可獲取大量python學(xué)習(xí)資源
相關(guān)模塊: pygame模塊;
以及一些Python自帶的模塊
環(huán)境搭建 安裝Python并添加到環(huán)境變量 , pip安裝需要的相關(guān)模塊即可 。
原理介紹 游戲簡(jiǎn)介: 將圖像分為m×n個(gè)矩形塊 , 并將圖像右下角的矩形塊替換為空白塊后 , 將這些矩形塊隨機(jī)擺放成原圖像的形狀 。游戲目標(biāo)為通過(guò)移動(dòng)非空白塊將隨機(jī)擺放獲得的圖像恢復(fù)成原圖像的模樣 , 且規(guī)定移動(dòng)操作僅存在于非空白塊移動(dòng)到空白塊 。
例如下圖所示:
Python制作游戲原來(lái)這么簡(jiǎn)單 如何自制游戲

文章插圖


逐步實(shí)現(xiàn): Step1:游戲初始界面 既然是游戲 , 總得有個(gè)初始界面吧?
OK , 我們先寫一個(gè)游戲初始界面:
'''顯示游戲開(kāi)始界面'''def ShowStartInterface(screen, width, height): screen.fill(cfg.BACKGROUNDCOLOR) tfont = pygame.font.Font(cfg.FONTPATH, width//4) cfont = pygame.font.Font(cfg.FONTPATH, width//20) title = tfont.render('拼圖游戲', True, cfg.RED) content1 = cfont.render('按H或M或L鍵開(kāi)始游戲', True, cfg.BLUE) content2 = cfont.render('H為5*5模式, M為4*4模式, L為3*3模式', True, cfg.BLUE) trect = title.get_rect() trect.midtop = (width/2, height/10) crect1 = content1.get_rect() crect1.midtop = (width/2, height/2.2) crect2 = content2.get_rect() crect2.midtop = (width/2, height/1.8) screen.blit(title, trect) screen.blit(content1, crect1) screen.blit(content2, crect2) while True:for event in pygame.event.get():if (event.type == pygame.QUIT) or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE):pygame.quit()sys.exit()elif event.type == pygame.KEYDOWN:if event.key == ord('l'): return 3elif event.key == ord('m'): return 4elif event.key == ord('h'): return 5pygame.display.update()復(fù)制代碼 根據(jù)玩家自身水平 , 可以選擇不同難度的拼圖游戲 。
Step2:定義移動(dòng)操作 定義移動(dòng)操作的目的是為了移動(dòng)拼圖(好像是廢話T_T) , 具體實(shí)現(xiàn)起來(lái)十分簡(jiǎn)單:
'''將空白Cell左邊的Cell右移到空白Cell位置'''def moveR(board, blank_cell_idx, num_cols): if blank_cell_idx % num_cols == 0: return blank_cell_idx board[blank_cell_idx-1], board[blank_cell_idx] = board[blank_cell_idx], board[blank_cell_idx-1] return blank_cell_idx - 1'''將空白Cell右邊的Cell左移到空白Cell位置'''def moveL(board, blank_cell_idx, num_cols): if (blank_cell_idx+1) % num_cols == 0: return blank_cell_idx board[blank_cell_idx+1], board[blank_cell_idx] = board[blank_cell_idx], board[blank_cell_idx+1] return blank_cell_idx + 1'''將空白Cell上邊的Cell下移到空白Cell位置'''def moveD(board, blank_cell_idx, num_cols): if blank_cell_idx < num_cols: return blank_cell_idx board[blank_cell_idx-num_cols], board[blank_cell_idx] = board[blank_cell_idx], board[blank_cell_idx-num_cols] return blank_cell_idx - num_cols'''將空白Cell下邊的Cell上移到空白Cell位置'''def moveU(board, blank_cell_idx, num_rows, num_cols): if blank_cell_idx >= (num_rows-1) * num_cols: return blank_cell_idx board[blank_cell_idx+num_cols], board[blank_cell_idx] = board[blank_cell_idx], board[blank_cell_idx+num_cols] return blank_cell_idx + num_cols復(fù)制代碼


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問(wèn)題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!

「愛(ài)刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助: