日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

編程怎么做游戲 怎么編程游戲


編程怎么做游戲 怎么編程游戲


前言:
本期我們將制作一個(gè)拼圖小游戲 。讓我們愉快地開(kāi)始吧~~~
先來(lái)看看效果是這樣子的:
開(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)到空白塊 。
例如下圖所示:
逐步實(shí)現(xiàn):Step1:游戲初始界面
既然是游戲,總得有個(gè)初始界面吧?
OK,我們先寫(xiě)一個(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 3
elif event.key == ord('m'): return 4
elif event.key == ord('h'): return 5
pygame.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]

推薦閱讀