首页
/
每日頭條
/
遊戲
/
pygame遊戲實例
pygame遊戲實例
更新时间:2025-08-20 20:34:02
導語

- Sep,29,2021 -

哈喽!大家好,我是木木子,感謝大家的支持!

pygame遊戲實例(Pygame簡易版2048小遊戲超詳細解說)1

新的一天,新氣象,程序猿們的日常開始敲敲敲,改改改——今天給大家來一款簡單的小遊戲!

2048小遊戲——準确地來說确實是一個簡單版本的——下一篇就是有界面版本的2048啦!

呐呐呐 ,主要是擔心很多小夥伴兒直接上界面版本的看不懂,所以做了兩款2048,先看這篇簡單版本的吧!

pygame遊戲實例(Pygame簡易版2048小遊戲超詳細解說)2

正文

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

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

pygame遊戲實例(Pygame簡易版2048小遊戲超詳細解說)3

玩法: 用手指或鍵盤上下左右滑動,将兩個相同的數字合并,例如: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("輸入錯誤")

​效果如下:

pygame遊戲實例(Pygame簡易版2048小遊戲超詳細解說)4

pygame遊戲實例(Pygame簡易版2048小遊戲超詳細解說)5

​總結

好啦好啦!不慌不慌,這款簡單的2048其實沒什麼趣味性滴,下一篇的話給大家上2048小遊戲的界面化版本呢~

好玩界面還很還原~無限接近原版,嘿嘿,如果你喜歡玩遊戲的話可以關注小編哦~往期還有很多遊戲源碼啦!

pygame遊戲實例(Pygame簡易版2048小遊戲超詳細解說)6

免費源碼領取處:

如需完整的項目源碼 素材源碼基地見:#私信小編06#即可獲取免費的福利!

你們的支持是我最大的動力!!記得三連哦~mua 歡迎大家閱讀往期的文章哦~

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
王者榮耀s15安琪拉加強介紹
王者榮耀s15安琪拉加強介紹
王者榮耀國際服已經在測試了,雖然全是國人在玩,對比國内版本,一些改動還是挺有意思的,小喬安琪拉長大,頭像變雲纓,還聯動了aov。國服一直再說小喬像個沒發育的大頭娃娃,皮膚越改越魔怔,你仔細看都有種鬼片的氣息,王者榮耀情侶皮一直出,小喬的大頭...
2025-08-20
王者榮耀體驗服如何申請資格8月
王者榮耀體驗服如何申請資格8月
昨天給小夥伴公布了體驗服開放資格搶号的事情,還教給了大家申請資格的方法,不知道小夥伴都去了沒?是今天10點開始的哦,不過現在去也許還是可以申請到資格的,你們可以去試試。一些小夥伴申請到了資格後也一直在問我怎麼不能搶号,可能這些朋友都是第一次...
2025-08-20
悟飯遊戲廳介紹最好的遊戲
悟飯遊戲廳介紹最好的遊戲
悟飯遊戲廳彙聚千萬深度玩家,曆時兩年,成為國内最大的經典遊戲對戰社區。在2017年第四個季度,為了讓更多的粉絲了解和喜歡悟飯遊戲廳,特别攜手咪咕G客,在共青團、中央電視台的指導下,将在上海、濟南、西安、杭州、成都、福州和廣州7大城市開展高校...
2025-08-20
策劃角度分析這款遊戲為什麼好玩
策劃角度分析這款遊戲為什麼好玩
作為各大遊戲市場榜單上的常駐熱門,超休閑小遊戲始終以簡單易懂的玩法和獨特的魔性體驗吸引着許多玩家的目光,近乎占據了全球遊戲市場下載量的三分之一。繁榮的超休閑遊戲市場無疑引得衆多廠商在這一賽道上争相拼搶,盡管玩法看似簡單,但這并不意味着開發這...
2025-08-20
淘寶怎麼領取遊戲皮膚
淘寶怎麼領取遊戲皮膚
淘寶怎麼領取遊戲皮膚?打開手機淘寶-我的淘寶,打開“查看全部工具”;,我來為大家講解一下關于淘寶怎麼領取遊戲皮膚?跟着小編一起來看一看吧!淘寶怎麼領取遊戲皮膚打開手機淘寶-我的淘寶,打開“查看全部工具”;頁面往下拉會看到“主題換膚”,點擊進...
2025-08-20
Copyright 2023-2025 - www.tftnews.com All Rights Reserved