Python+Pygame制作簡易版2048小游戲
導語
哈嘍!大家好,我是栗子,感謝大家的支持!

新的一天,新氣象,程序猿們的日常開始敲敲敲,改改改——今天給大家來一款簡單的小游戲!
2048小游戲——準確的來說確實是一個簡單版本的!
吶吶吶 ,主要是擔心很多小伙伴兒直接上界面版本的看不懂,所以做了這款簡單的2048,先看這篇簡單版本的吧!

正文
為了搞懂這個游戲的規(guī)則,小編去直接下載了一款2048的小游戲,上手玩了一波!
然后.........完全停不下來!23333~

玩法: 用手指或鍵盤上下左右滑動,將兩個相同的數(shù)字合并,例如:2 + 2 = 4, 4 + 4 = 8... 直到
1024 + 1024 = 2048!
主要代碼
# 練習1:定義函數(shù),將列表中0元素,移動到末尾。
# [2,0,2,0] --> [2,2,0,0]
# [0,4,2,4] --> [4,2,4,0]
# 適合零基礎同學
def zero_to_end(list_target):
# 選出非零元素 形成新列表
# [2, 0, 2, 0] --> [2, 2]
new_list = []
for item in list_target:
if item != 0:
new_list.append(item)
# 追加零元素 [2, 2] --> [2,2,0,0]
# 判斷原列表零元素數(shù)量: list_target.count(0)
for i in range(list_target.count(0)):
new_list.append(0)
# 返回新列表
return new_list
# def zero_to_end(list_target):
# # 選出非零元素 形成新列表
# # [2, 0, 2, 0] --> [2, 2]
# new_list = [item for item in list_target if item != 0]
# # 重復生成零元素 [0] * list_target.count(0)
# new_list += [0] * list_target.count(0)
# # 返回新列表
# return new_list
# 同學方法
# def zero_to_end(list_target):
# # 刪除零元素 在后面追加
# for item in list_target:
# if item == 0:
# list_target.remove(0)
# list_target.append(item)
# # 返回新列表
# return list_target
# 測試
# print(zero_to_end([1, 0, 0, 2]))
# print(zero_to_end([0, 4, 2, 4]))
# 練習2:定義合并相同(不相鄰也可以)列表元素的函數(shù)
# [2,2,0,0] --> [4,0,0,0]
# [2,0,2,0] --> [4,0,0,0]
# [2,2,2,0] --> [4,2,0,0]
# [4,2,0,4] --> [4,2,4,0]
# [0,0,2,4] --> [2,4,0,0]
# 提示:
# 0元素移動到末尾
# 相鄰相同合并
# list[0] == list[1]
def merge(list_target):
# 1.將零元素移動到末尾 [2,0,2,0] --> [2,2,0,0]
list_target = zero_to_end(list_target)
# 2. 合并
for i in range(len(list_target) - 1):
# 如果非零元素 相鄰且相同
if list_target[i] != 0 and list_target[i] == list_target[i + 1]:
# 將后一個元素累加到前一個元素上
list_target[i] += list_target[i + 1]
# 講后一個元素清零
list_target[i + 1] = 0
# 3. 將零元素移動到末尾 [2,2,2,0] --> [4,0,2,0] -->[4,2,0,0]
list_target = zero_to_end(list_target)
return list_target
# print(merge([2,2,2,0]))
# 練習3:定義在控制臺中繪制2048地圖的函數(shù) 11:33
def print_atlas(list_atlas):
# 00 01 02 03
for r in range(len(list_atlas)):
for c in range(len(list_atlas[r])):
print(list_atlas[r][c], end=" ")
print()
atlas01 = [
[2, 0, 0, 2],
[8, 0, 4, 4],
[2, 2, 0, 4],
[0, 2, 4, 0],
]
print_atlas(atlas01)
# 練習4:在控制臺中打印第二行,與第四行元素。
# 第一列,與第三列元素。
# 第二行
# for c in range(4):
# print(atlas01[1][c], end=" ")
# print()
# # 第四行
# for c in range(4):
# print(atlas01[3][c], end=" ")
# print()
# # 第一列
# for r in range(4):
# print(atlas01[r][0])
# # 第三列
# for r in range(4):
# print(atlas01[r][2])
# 練習5,定義向上移動的函數(shù)
# 提示:將二維列表每列元素形成一維列表,交給合并merge函數(shù),再還給二維列表
def move_up(atlas): # 15:30
# 將二維列表第一列元素形成一維列表,
# 00 10 20 30
for c in range(4):
list_merge = []
for r in range(4):
list_merge.append(atlas[r][c])
# 交給合并merge函數(shù)
list_merge = merge(list_merge)
# 再還給二維列表
for r in range(4):
atlas[r][c] = list_merge[r]
return atlas
# resutl = move_up(atlas01)
# print_atlas(resutl)
# 擴展作業(yè)1:定義向左移動的函數(shù)
def move_left(atlas):
for r in range(4):
# 從左到右依次獲取行
list_merge = []
for c in range(4):
# 00 01 02 03
list_merge.append(atlas[r][c])
list_merge = merge(list_merge)
for c in range(4):
atlas[r][c] = list_merge[c]
return atlas
# resutl = move_left(atlas01)
# print_atlas(resutl)
# 擴展作業(yè)2:定義向下移動的函數(shù)
# 30 20 10 00
def move_down(atlas):
for c in range(4):
list_merge = []
# 從下至上獲取二維列表列元素
for r in range(3,-1,-1):
list_merge.append(atlas[r][c])
list_merge = merge(list_merge)
# 從左至右獲取一維列表元素
# 從下至上還給二維列表
for r in range(3, -1, -1):
atlas[r][c] = list_merge[3 -r] # 0 1 2 3
return atlas
def move_right(atlas):
for r in range(4):
list_merge = []
for c in range(3, -1, -1):
list_merge.append(atlas[r][c])
list_merge=merge(list_merge)
for c in range(3, -1, -1):
atlas[r][c] = list_merge[3 - c]
return atlas
# resutl = move_down(atlas01)
# print_atlas(resutl)
# 擴展作業(yè)3:定義向右移動的函數(shù)
while True:
shell = input("請輸入玩家指令wsad:")
if shell=="w":
move_up(atlas01)
print_atlas(atlas01)
elif shell=="s":
move_down(atlas01)
print_atlas(atlas01)
elif shell=="a":
move_left(atlas01)
print_atlas(atlas01)
elif shell=="d":
move_right(atlas01)
print_atlas(atlas01)
else:
print("輸入錯誤")
效果圖

到此這篇關于Python+Pygame制作簡易版2048小游戲的文章就介紹到這了,更多相關Python Pygame 2048內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python?Requests使用Cookie的幾種方式詳解
這篇文章主要給大家介紹了關于Python?Requests使用Cookie的幾種方式,Python中的requests庫可以使用cookie來維持會話狀態(tài),實現(xiàn)登錄等操作,需要的朋友可以參考下2023-07-07
python 如何將office文件轉(zhuǎn)換為PDF
這篇文章主要介紹了python 如何將office文件轉(zhuǎn)換為PDF,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-09-09
PyTorch的深度學習入門教程之構(gòu)建神經(jīng)網(wǎng)絡
這篇文章主要介紹了PyTorch的深度學習入門教程之構(gòu)建神經(jīng)網(wǎng)絡,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-06-06
Python?數(shù)據(jù)可視化實現(xiàn)5種炫酷的動態(tài)圖
數(shù)據(jù)可以幫助我們描述這個世界、闡釋自己的想法和展示自己的成果,但如果只有單調(diào)乏味的文本和數(shù)字,我們卻往往能難抓住觀眾的眼球。而很多時候,一張漂亮的可視化圖表就足以勝過千言萬語2022-01-01

