91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用Python+Pygame制作簡易版2048小游戲

發布時間:2022-02-07 10:38:04 來源:億速云 閱讀:191 作者:iii 欄目:開發技術

這篇文章主要介紹了怎么用Python+Pygame制作簡易版2048小游戲的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇怎么用Python+Pygame制作簡易版2048小游戲文章都會有所收獲,下面我們一起來看看吧。

正文

為了搞懂這個游戲的規則,小編去直接下載了一款2048的小游戲,上手玩了一波!

然后.........完全停不下來!23333~

怎么用Python+Pygame制作簡易版2048小游戲

玩法: 用手指或鍵盤上下左右滑動,將兩個相同的數字合并,例如:2 + 2 = 4, 4 + 4 = 8... 直到

1024 + 1024 = 2048!

主要代碼

# 練習1:定義函數,將列表中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]
    # 判斷原列表零元素數量: 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:定義合并相同(不相鄰也可以)列表元素的函數
# [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地圖的函數 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,定義向上移動的函數
# 提示:將二維列表每列元素形成一維列表,交給合并merge函數,再還給二維列表
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函數
        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)
 
 
# 擴展作業1:定義向左移動的函數
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)
 
 
# 擴展作業2:定義向下移動的函數
# 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)
 
# 擴展作業3:定義向右移動的函數
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小游戲”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“怎么用Python+Pygame制作簡易版2048小游戲”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

额济纳旗| 连江县| 汝阳县| 高安市| 江川县| 德惠市| 富阳市| 介休市| 奇台县| 武胜县| 珠海市| 准格尔旗| 孝义市| 合作市| 亚东县| 建阳市| 桦南县| 策勒县| 巴林右旗| 奎屯市| 黄浦区| 囊谦县| 佳木斯市| 嵩明县| 壶关县| 三明市| 台山市| 达孜县| 镇宁| 博野县| 临汾市| 根河市| 临安市| 徐汇区| 襄汾县| 广灵县| 离岛区| 纳雍县| 乐业县| 长汀县| 武清区|