日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python vector_50行Python代码实现经典游戏,不仅是划水神器,更是学习利器!

發布時間:2024/7/23 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python vector_50行Python代码实现经典游戏,不仅是划水神器,更是学习利器! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Free Python Games非常適合學生,它不僅具有高度的組織性和靈活性,而且能夠激發人們探索和理解能力。--Terri Furton

Free Python Games在輕松的環境中把游戲和學習結合在一起,從而減輕了編程過程中的壓力。--Brett Bymaster

...

貪吃蛇、迷宮、吃豆人、掃雷、Flappy Bird...這些游戲可以是非常經典,甚至伴隨著很多人的童年回憶。那么,你是否想過自己開發一款專屬游戲?是否思考過開發這樣一款游戲需要多少工作量?

游戲開發在互聯網行業算是一個門檻較高的方向,因此,對于非專業的游戲開發者來說,開發一款游戲一直是一件讓人望而卻步的事情,遙不可及

那么,今天要介紹的這款Python項目就可以輕松實現你成為游戲開發者的想法,實現前面提到的這些經典游戲只需要50-100代碼即可完成。

free-python-games

兩年前,我姐就曾表達了希望我能夠抽空教外甥學習編程的想法。對于這份囑托,我一直放在心上,但是卻遲遲找不到合適的方向。

  • 該從哪個方向著手教一個孩子學習編程?
  • 怎么提升一個小孩子對編程的興趣?

即便是從事幾年互聯網行業的我來說都對編程都覺得枯燥乏味,何況一個一無所知的孩子呢?

但是,free-python-games這個項目讓我眼前一亮,終于找到了一個合適的Python學習項目。當年,它對于成年人同樣適用、有價值。

我之所以介紹這款項目,不單單是它實現了讓人回到童年的經典游戲。更重要的原因是它能夠作為一個Python學習、鍛煉探索和理解能力的一款好工具。

free-python-games和我們接觸的大多數Python庫那樣讓人如同壘積木一樣去實現一項功能不同,你需要去靜下心來死鎖一款游戲的主題,同時需要去實現游戲中的每一個策略。

我覺得這樣比拿來即用的搬運工作要有趣很多,且更加具有挑戰。

以我們熟知的貪吃蛇為例,當然我們目前對于這款游戲的主題和玩法已經非常清楚了,通過方向鍵控制蛇的移動,每當吃到一顆食物蛇就會變長,如果撞到墻則游戲結束...

那么,對這款游戲進行拆解,就需要思考幾個問題:

  • 如何使蛇加速和減速?
  • 如何使蛇繞過邊緣?
  • 如何分配新產生食物的位置?
  • 游戲中的蛇如何根據鍵盤操作做出相應的反應?

看到這里你就會發現,它并不像我們大多數情況下使用Python那樣,np.linespace、plt.plot、tf.Session,它更像是LeetCode上面的算法題,需要你從零開始去實現一款游戲,用心去思考游戲實現過程中的每個細節。而在這個過程中對人的提升會非常迅速。

下面就以貪吃蛇這個游戲為例,介紹它的源碼和實現過程,來回答上述4個問題。

首先,導入需要的模塊,

from?turtle?import?*
from?random?import?randrange
from?freegames?import?square,?vector

其中turtle是一款繪圖工具,主要為了實現游戲的前端和用戶交互功能,freegames包含了一些開發游戲會用到的基本元素,random是Python中用于生成隨機數的庫,在生產新食物的過程中會遇到(回憶一下,當蛇吃了一顆食物后,會在窗口內隨機產生一顆食物)。

然后,就初始化一些變量,分別用于存儲食物、蛇的狀態,

food?=?vector(0,?0)
snake?=?[vector(10,?0)]
aim?=?vector(0,?-10)

下面就是初始化蛇的位置,已經定義蛇對于鍵盤方向鍵的響應,朝著指定的方向移動,

def?change(x,?y):
????"Change?snake?direction."
????aim.x?=?x
????aim.y?=?y

setup(420,?420,?370,?0)
hideturtle()
tracer(False)
listen()
onkey(lambda:?change(10,?0),?'Right')
onkey(lambda:?change(-10,?0),?'Left')
onkey(lambda:?change(0,?10),?'Up')
onkey(lambda:?change(0,?-10),?'Down')

接下來,我們需要判斷蛇是否在邊界框以內,如果在,則繼續移動,否則終止,

def?inside(head):
????"Return?True?if?head?inside?boundaries."
????return?-200?190?and?-200?190

最后,就是整個游戲的串聯邏輯,不斷移動蛇、不斷判斷當前狀態,然后選擇是否繼續移動,

def?move():
????"Move?snake?forward?one?segment."
????head?=?snake[-1].copy()
????head.move(aim)

????if?not?inside(head)?or?head?in?snake:
????????square(head.x,?head.y,?9,?'red')
????????update()
????????return

????snake.append(head)

????if?head?==?food:
????????print('Snake:',?len(snake))
????????food.x?=?randrange(-15,?15)?*?10
????????food.y?=?randrange(-15,?15)?*?10
????else:
????????snake.pop(0)

????clear()

????for?body?in?snake:
????????square(body.x,?body.y,?9,?'black')

????square(food.x,?food.y,?9,?'green')
????update()
????ontimer(move,?100)

到此為了,經典的貪吃蛇游戲就完成了。整款游戲的純代碼行數不足50行。但是,卻內藏錦繡,有很多需要開發者去思考和琢磨的點,對Python學習者也是一個很大的提升。

除了貪吃蛇,這個項目中還有迷宮、吃豆人、掃雷、Flappy Bird等20+款經典游戲。

當然,如果你覺得這些游戲還不夠,或者對游戲開發充滿興趣,或者有很好的游戲設計idea但開發能力受限,那么,不妨學習一下free-python-games這個項目,能夠把精力專注于游戲本身,而不需要在編程語言方面耗費太多時間。

另外,如果你僅僅希望用來劃水,這個項目同樣可以滿足你,只需要簡單的安裝之后就可以在電腦上玩這些經典游戲。

安裝

$?python3?-m?pip?install?freegames

游戲列表

$?python3?-m?freegames?list

打開游戲

$?python3?-m?freegames.snake

另外,你還可以拷貝一份游戲源碼到本地路徑,用于編輯,

$?python3?-m?freegames?copy?snake
$?python3?snake.py

推薦閱讀

  • 干貨 | 2019年共享免費資源整理(上):學習資源篇
  • 干貨 | 2019年共享免費資源整理(下):實用工具篇
  • 10款VS Code插件神器,第7款超級實用!

個人微信

歡迎各位同學添加我的個人微信,互相交流、互相學習,第一時間獲得更多冷門好用的小工具!

我整理了10T+資源進行共享,其中包括實用工具、Python電子書、Spring視頻教程、機器學習資源,掃碼關注我的公眾號“平凡而詩意”,后臺回復相應關鍵字即可獲得。除此之外,原創技術文章會第一時間推送,如果喜歡,麻煩點一下“在看”~

總結

以上是生活随笔為你收集整理的python vector_50行Python代码实现经典游戏,不仅是划水神器,更是学习利器!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。