國外神級程序員為你介紹Python當中最好玩的遊戲!

沒有哪個人是一開始就是大牛,都是從零基礎開始開始過來的 所以零基礎的小夥伴也會成為大牛的一天,程序員不是一兩天就能到達那種高度的,是寫出來的,多思考多變化。代碼多敲就熟練了,不管天賦怎樣,勤能補拙嘛,大家可以加我python交流群:58937142,裡面新手資料,框架,爬蟲。web都有,都是可以免費獲取的,還有大牛解答各種難題,不失為是一個學習的好地方,小編在這裡邀請大家加入我的大家庭。歡迎你的到來。一起交流學習!共同進步!大家最好是收藏了在看呢!

我將講一個有趣的故事 - Python中編程視頻遊戲的歷史。(Mauveweb)作

在Python中編程遊戲 Python不是計算機遊戲編程的客觀可怕語言嗎?太慢了 嗯,我想你知道這不是整個故事。Python用於處理世界上一些最大的數據集,其中應用程序的性能很重要。

這麼慢的語言可能適合大數據處理和遊戲編程?要找到答案,我們必須回顧20年,到Python 1.x的時代。

國外神級程序員為你介紹Python當中最好玩的遊戲!

對於大數據處理,這個故事始於1995年,由Jim Hugunin撰寫的一本名為Numeric的圖書館,後來被Travis Oliphant推出了一個名叫“numpy”的作品。

國外神級程序員為你介紹Python當中最好玩的遊戲!

Jim Hugunin也是負責Python第一個OpenGL庫PyOpenGL的人之一,Thomas Schwaller和David Ascher從1997年開始。

OpenGL是一個用於編寫3D圖形應用程序的API,包括遊戲。

然而,OpenGL本身不足以編寫遊戲; 它缺乏對聲音的支持,並且創建窗口並處理其輸入。

2000年3月,Mark Baker開始致力於綁定LibSDL - 簡單直接媒體層。SDL提供渲染圖形的能力,同時支持創建窗口,處理輸入設備以及播放聲音和音樂。

國外神級程序員為你介紹Python當中最好玩的遊戲!

當年晚些時候,彼得·希納斯(Peter Shinners)把這個改編成一個名為Pygame的圖書館,該圖書館於2000年10月發行,這是與Python 2.0發行的同一個月。現在可以在Python中編寫圖形遊戲了!

國外神級程序員為你介紹Python當中最好玩的遊戲!

稍後我們再來看一些Pygame代碼。

所以這就是我們如何在Python中編寫快速,圖形化的遊戲的答案。我們可以這樣做,因為我們使用Python來驅動快速,低級的庫。

在2003年左右,我第一次遇到Python。我已經教自己來編程遊戲了。我在大學學習Java。我寫了幾個Java遊戲,我嘗試用C ++中的DirectX,OpenGL和SDL編寫遊戲。

國外神級程序員為你介紹Python當中最好玩的遊戲!

但是,用這些語言進行編程是緩慢而痛苦的。Python是一種有趣的語言來編程!我正在開發一個Web開發人員/系統管理員工作人員,所以我首先使用Python。但是當然,我最終還是嘗試用這個“Pygame”的東西寫一些遊戲。我很驚訝!我寫了一個複雜的益智遊戲的一半,並繪製了大量的圖形,之前我意識到我沒有真正考慮如何使它的樂趣。

國外神級程序員為你介紹Python當中最好玩的遊戲!

國外神級程序員為你介紹Python當中最好玩的遊戲!

當我的半完成的遊戲結束時,有人建議我在Python遊戲編程比賽(Pyweek)上嘗試一下我的手。

國外神級程序員為你介紹Python當中最好玩的遊戲!

PyWeek是理查德·瓊斯(Richard Jones)於2005年啟動的。理查德也許更好地被稱為PyPI的BDFL,最初是“奶酪店”。他還撰寫了關於bugs.python.org的綜合問題跟蹤器。

國外神級程序員為你介紹Python當中最好玩的遊戲!

PyWeek挑戰參與者在一個星期內從頭開始,在Python中編寫一個遊戲。遊戲必須從頭開始 - 這意味著他們只能利用在比賽開始至少30天之前創建的已發佈的文檔庫。您可以作為個人或團隊進入; 每個類別都將獲得優勝者。

國外神級程序員為你介紹Python當中最好玩的遊戲!

在比賽前一週,有五個可能的主題被提出來審議,投票是收集的。在比賽開始的時候,總是在UTC的午夜 - 使用徑流系統挑選一個主題,編碼開始!

在比賽期間,您可以使用PyWeek網站編寫關於您進度的“日記條目”,還可以跟蹤在同一主題中創建的其他驚人項目。這也是討論您的方法和問題並獲得反饋和提示的論壇。

經過168小時的編碼,比賽結束了!你上傳你的遊戲,可能需要一個當之無愧的一兩天的休息。然後,進入遊戲的每個人都可以花兩個禮拜玩和查看條目。參賽作品有三個標準:樂趣,製作和創新。

樂趣當然是衡量遊戲玩得愉快多多。創新成績衡量遊戲是否包含原創性,在力學,主題,情節,控制系統或其他方面。給出演示的整體質量的生產分數:圖形,聲音和音樂,教程,標題和遊戲在屏幕上...如果您的遊戲包含錯誤,您可能會丟失生產點。

當然,PyWeek是成功的,自那以後每年大約有兩次。最新的比賽是23日,24日在10月份發生。

我的第一個Pyweek是2010年的Pyweek 10。在那場比賽中,主題是“Wibbly-Wobbly”。我在一個擺動搖擺的竹林裡創造了一個忍者戰鬥遊戲,就像臥虎藏龍一樣。

國外神級程序員為你介紹Python當中最好玩的遊戲!

我當時正在做一個網頁設計師,我設計的遊戲就像我設計一個網站:從模型和概念藝術開始,然後從他們構建遊戲。我編程了一個星期,第一次使用Pyglet,發現這是非常簡單的使用和有效。

國外神級程序員為你介紹Python當中最好玩的遊戲!

國外神級程序員為你介紹Python當中最好玩的遊戲!

我沒有贏 - 儘管我徹底享受了經驗。這是我迄今為止最原始和最複雜的遊戲,我在短短一個星期就寫了。人們以為我的生產價值是好的,但遊戲根本就沒那麼好玩(5/5中的2.9)。

啊,有趣,難以捉摸的元素,最重要的。創造一個遊戲是一個技術挑戰,而創新也是一些東西,但創造一些有趣的東西更難。你要花一個星期的編程,做出選擇,創造...最終玩起來真的很有趣嗎?

在所有文獻中,我已經看到了創造有趣的遊戲的藝術,我認為最好的思考方式是最大限度地提高獎勵和減少懲罰

國外神級程序員為你介紹Python當中最好玩的遊戲!

懲罰當遊戲造成負面情緒時。當Sonic與一個尖峰碰撞並丟下他的所有戒指時,這種失望的瞬間。當你在馬里奧卡丁車的時候,當這個惡魔的藍色殼爆炸了。加載屏幕的無聊,需要10秒,當你看到它每小時20次,是懲罰。在遊戲中死亡,不得不重複最後十分鐘的遊戲,重新回到你所在的地方,是非常懲罰的。

國外神級程序員為你介紹Python當中最好玩的遊戲!

獎勵遊戲中的東西,導致積極的感覺,但小。當你的紅利乘數為10倍時,腎上腺素激增,而你還活著,屏幕上有一千個敵人,你不知道你能保持多久。發現你可以結合一個冰藥水和一個箭頭來創建一個冰箭,並且你可以使用一個冰箭來停止瀑布,這樣你就可以通過。

國外神級程序員為你介紹Python當中最好玩的遊戲!

這些可以是最小的東西。當你收集硬幣時,令人滿意的“叮噹”是有意義的 - 這就是為什麼在馬里奧的人們繼續跳下這個塊,直到它不再吐出硬幣。沒有被謎題挑戰的無聊是懲罰。不得不重複同樣的點擊來打開您的庫存並消耗藥水是懲罰。

當遊戲提供不間斷的獎勵和避免過於懲罰時,遊戲很有趣。

如果你們都玩過任何大規模的商業手機遊戲,那你就會很熟悉。許多遊戲將為您提供不間斷的獎勵 - “這裡有2顆免費鑽石” - 幾乎沒有任何懲罰(你永遠不會失去)。他們在你面前糾結了獎勵,扣留了他們只是足夠長的時間來誘惑你,讓你想付出更快的收穫。

我認為這也解釋了為什麼Pyweek這樣的樂趣。Python是一種低懲罰語言。它不經常咬人 當我們搞砸時,它會以清晰的追溯而不是SIGSEGV而崩潰。這些圖書館不會帶有頭腦彎曲的系統。Python也是一種高回報的語言,因其生產力而著稱。但是,當我們面臨挑戰,發揮創造力,快速做一些事情,與他人競爭,並與他人一起,獎勵倍增。

偶爾,你可能會贏。

2012年5月,我提交的“Pyweek 14”主題為“瘋狂科學” - 是一個名為Doctor Korovic的飛行原子魷魚的物理遊戲。而且贏了!我現在給你一點點。

國外神級程序員為你介紹Python當中最好玩的遊戲!

回到Pyweek的故事 - Pyweek也被認為是一種激勵社區創造有用的工具和圖書館的方式。Pyweek的規則從任務說明開始:

PyWeek挑戰:

  1. ...

  2. ...

  • 希望增加公共機構的python遊戲工具,代碼

  • 和專長,

  • 會讓很多人真的完成一場比賽,而且

  • 可能啟發新項目(與準備好的團隊!)

  • 由於“從頭開始”的規則,從一開始,人們就會從他們的Pyweek遊戲中創建和發佈圖書館,以避免再次寫入圖書館。

    第二屆Pyweek比賽於2006年3月舉行。個人比賽由Alex Holkner贏得,一場名為Nelly's Rooftop Garden的遊戲,仍然是所有時間裡最高的Pyweek遊戲。

    國外神級程序員為你介紹Python當中最好玩的遊戲!

    當年晚些時候,Alex開始了一個Google Summer of Code項目,使用Ctypes庫創建了一個Pygame的克隆,該庫已經可用了幾年,這是在秋天的Python 2.5中被添加到Python標準庫中的。他的導師是Pygame作者Peter Shinners。

    他很快就得到了這個。在短短的幾個星期內,他已經開始實施了Pygame和ctypes,以及較低級的SDL-ctypes。然後他開始關注PyOpenGL,它在API覆蓋面上有一些差距。他開始使用ctypes綁定來彌補這些差距 - 並且很快意識到他可以比較快地為OpenGL生成完整的ctypes綁定。該項目被命名為pyglet。

    國外神級程序員為你介紹Python當中最好玩的遊戲!

    在這一點上,有史以來積極的理查德·瓊斯(Richard Jones)在理查德和亞歷克斯(Richard)和亞歷克斯(Richard)一起,將Pyglet推向了一個完整的跨平臺,無依賴關係的遊戲庫 Alex從Nelly的屋頂花園拉出文字渲染。然後,Pyglet獲得了一個特色的精靈圖書館,支持精靈的旋轉和縮放,以及顏色和透明度,以及稱為AVBin的原生聲音庫。

    Pyglet易於用於初學者,同時將基礎的OpenGL原語暴露給更有經驗的用戶。它的精靈和文本庫可以用OpenGL狀態更改來包裝,以實現複雜的效果。

    國外神級程序員為你介紹Python當中最好玩的遊戲!

    Pyglet是一個偉大的圖書館,這是我在大部分的Pyweek作品中所使用的,包括Korovic博士的飛行原子魷魚。它具有比Pygame更多的圖形功能,並且對於基礎來說可能更容易或更容易 - 但Pyglet確實以複雜性為代價提供了OpenGL的全部功能。

    在Pyglet發佈一年半之後,在阿根廷科爾多瓦附近的科科斯(Los Cocos)的PyCamp,裡卡多·奎薩達(Ricardo Quesada)和其他人開創了“洛可可科(Python Cocos)”Python遊戲引擎,這是一款基於Pyglet的高級引擎。它很快被重命名為Cocos2d。裡卡多後來把它移植到iPhone,在那裡它變得非常受歡迎。許多App Store已經寫了一個遊戲。有關於Cocos2D編程的書籍超過100本。

    國外神級程序員為你介紹Python當中最好玩的遊戲!

    所以Pyweek是一個成功的技術孵化器。

    讓我再來看一下歷史的另一個線索 - 這是Pycon英國的這個教育軌道。Pycon英國的教育軌道是由Nicholas Tollervey設立的,他之前已經在這裡進行了主題演講,他自己是前老師。

    國外神級程序員為你介紹Python當中最好玩的遊戲!

    2012年第一個教育課程邀請教師第一次參加Pycon英國。老師們在Python程序員之間“共享”,每組都有挑戰,提出課程材料。我在那裡,第一次,從我的Pyweek贏得了新鮮的,我被分類成一個小組與老師名叫本·史密斯。本是一名老師,並且熱衷於看看我能否通過遊戲介紹教孩子們編程的方法。

    我花了五分鐘左右寫一個基本的Pygame遊戲,看起來像這樣:

    國外神級程序員為你介紹Python當中最好玩的遊戲!

    看起來很簡單,對吧?但是Ben告訴我,第一次他看到它,“我不能教這個。”問題是,這只是太多的代碼行。在一個40分鐘的計算課程中,他會讓一些學生在五分鐘內進行比賽,而其他人則會努力地正確地輸入第一個“進口pygame”線。我有點吃驚,老實說。它需要比這更簡單!但是,正如他所解釋的,他需要能夠為他們提供一系列足夠小的任務,讓每個人都能趕上,繼續前進。

    自2012年以來,教育軌道每年都有運行,每次都參加。除了老師的一天,現在還有一個“孩子們的一天”,孩子們可以通過Python來學習做有趣的事情。幾年前,我在美銀美林銀行工作,並協助安排銀行資助了2014年以來所做的教育課程。贊助資金有助於為供應老師付款,以便正規老師可以來

    英國的教師在教授現代計算機課程時面臨著巨大的挑戰。許多老師本身沒有編程技能。大多數學校缺乏培訓老師,購買硬件或安裝和配置教授編程技能所需的軟件的資源。

    不過,通過Pycon英國,我遇到了許多令人驚奇的老師,以聰明才智和熱情克服了這一切。他們使編程有趣。

    2014年10月,經過幾次嘗試奪取Pyweek隊的冠軍頭銜後,我再次贏得了Pyweek獨奏大賽,並以一場名為Legend of Goblit的遊戲。主題是“One Room”,Goblit是一個LucasArts風格的冒險遊戲。它實際上是一種“冒險舞臺劇”,有許多腳本序列,暫停互動謎題。現在讓我向你展示

    國外神級程序員為你介紹Python當中最好玩的遊戲!

    Goblit可能不是那個時代最具創意的遊戲 - 但它是最有趣的。事實上,這是第三個最有趣的Pyweek遊戲,在Nelly的屋頂花園(第二)和Mortimer的Lepidoptorist(第一)之後。

    Goblit的傳奇是我在PyGame寫的幾年裡我第一個Pyweek的作品。正如我寫的那樣,我在腦海裡有一些東西 - 我想到了這個教育軌道,本史密斯對Pygame太複雜了。Goblit傳奇的一部分代碼是一個小型的基於Pygame的遊戲引擎,旨在讓完整的初學者訪問。

    那麼像往常一樣,坐了六個月,直到2015年Pycon在加拿大蒙特利爾。在衝刺的第一天,我和理查德·瓊斯坐在一起,我告訴他,我正在提出衝刺寫一個基於Pygame的遊戲引擎進行教育。那麼,正如你現在所理解的那樣,當理查德進入這個想法時,他就加入了我,在新的圖書館上衝刺,這個圖書館叫做“Pygame Zero”。這是我們在Pygame Zero的第一個剪輯中一起工作的。

    國外神級程序員為你介紹Python當中最好玩的遊戲!

    Pygame Zero是Python的零模板遊戲引擎。零樣本是什麼意思?一個空文件是一個工作的Pygame Zero程序。

    國外神級程序員為你介紹Python當中最好玩的遊戲!

    我們不用標準的口譯員來運行; 我們用pgzrun運行它。

    國外神級程序員為你介紹Python當中最好玩的遊戲!

    接下來可以添加一個draw()函數。

    國外神級程序員為你介紹Python當中最好玩的遊戲!

    國外神級程序員為你介紹Python當中最好玩的遊戲!

    您可以使用它來繪製一個Actor - 在這種情況下,從名為“rabbit.png”的文件加載的兔子精靈。

    國外神級程序員為你介紹Python當中最好玩的遊戲!

    國外神級程序員為你介紹Python當中最好玩的遊戲!

    然後我們可以寫一個on_key_down()函數來處理輸入。

    國外神級程序員為你介紹Python當中最好玩的遊戲!

    如果我們在on_key_down()函數中添加一個按鈕參數,這個值將被傳遞給該函數。

    國外神級程序員為你介紹Python當中最好玩的遊戲!

    在每個階段,我們每次只添加幾行,並獲得即時的結果。如果你回想到本·史密斯對Pygame的批評,對於他的課堂上的一個小小的工作的問題,讓所有的人趕上來,Pygame Zero解決了這個問題。

    我們使用一些魔法 - 一些額外的內建,一些元編程 - 所以我們不必在導入語句之前教導如何定義和調用一個函數。

    讓我給你別的東西。我在Pycon英國遇到的另一位老師正在寫他的第一個Pygame Zero程序,他啾啾了我“當我定義一個鼠標功能時它不起作用”。這是他寫的。

    國外神級程序員為你介紹Python當中最好玩的遊戲!

    所以現在當你運行Pygame Zero時遇到類似的錯誤,它打印出來:

    國外神級程序員為你介紹Python當中最好玩的遊戲!

    Pygame Zero有點受到打擊 - 每個地方的教育工作者都對此感到非常興奮。例如,它在每個Raspberry Pi上運送,而Raspberry Pi的創始人Eben Upton告訴我“這是非常完美的”。對於Raspberry Pi基金會工作的Mark Scott說:“它已經將年齡降低了我們可以教基於文本的編程語言幾年。“(基於文本的而不是像Scratch這樣的圖形工具)。它產生了一個分拆運動 - 現在有“零”庫用於GPIO,用於網絡,UI等。

    Pygame Zero很有趣,我剛剛才意識到為什麼。Pygame Zero可以讓您創造一個持續不斷的獎勵遊戲 - 當您獲得新的工作時,瞬間 - 通過警告潛在的陷阱,儘可能減少懲罰。

    我想看看未來一會兒。在今年的Europython中,Leblond Emmanuel宣佈已經完成了Godot遊戲引擎的Python綁定,這是一個全面的,多平臺的開源遊戲引擎。Roberto De Ioris為虛幻引擎4創建了Python綁定,這是最著名的遊戲引擎之一。

    國外神級程序員為你介紹Python當中最好玩的遊戲!

    但是你不需要一個巨大的,現代的3D遊戲引擎。Slobodan Stevic最近在Steam上發行了一個名為Switchcars的遊戲 - 用Pygame寫的遊戲。

    國外神級程序員為你介紹Python當中最好玩的遊戲!

    讓我總結一下我認為這個故事教我們的東西。

    首先,是的,你可以用Python編程遊戲。你今天可以做,你可以在商業上做到這一點。或者你可以做它的樂趣。

    其次,如果你正在創建一個新的圖書館,那就試著確保理查德·瓊斯在那裡幫忙。但是認真的 - 也許我們應該更像理查德?我們應該努力有這種無限的熱情,並且能夠快速的幫助啟動別人的項目。如果您正在開始一個新項目,特別是遊戲或遊戲圖書館,我想自願幫您。

    第三,讓它很有趣 無論你創造什麼,儘可能地獎勵人,並確保它不懲罰人。


    相關推薦

    推薦中...