游戲開發如此簡單?我直接創建了一個游戲場景【python 游戲實戰 02】

前言

本系列文章將會以通俗易懂的對話方式進行教學,對話中將涵蓋了新手在學習中的一般問題。此系列將會持續更新,包括別的語言以及實戰都將使用對話的方式進行教學,基礎編程語言教學適用于零基礎小白,之后實戰課程也將會逐步更新。

若有想學習的內容可以在評論區留言,根據大家的要求持續更新。點贊過十萬就算化成灰我也更新下一篇。(肯定不到,也會更的。)

有問題也可以在評論區留言,也可以私聊我加我好友共同交流一起進步~

我的其它教程

教程點擊進去將會有目錄

《看聊天記錄都學不會C語言?太菜了吧(1)我在大佬群里問基礎問題沒人理?——學習建議

《大學生C語言作業、習題100例白話詳解》

目錄

《看聊天記錄都學不會Python到游戲實戰?太菜了吧》python 寫游戲好簡單啊,我用鍵盤可以隨意控制角色了【python 游戲實戰 04】—— 鍵盤控制角色移動

《看聊天記錄都學不會Python到游戲實戰?太菜了吧》游戲角色開始動起來了,真帥!【python 游戲實戰 03】—— 角色移動

《看聊天記錄都學不會Python到游戲實戰?太菜了吧》這是我第一次使用代碼創建出一個窗口【python 游戲實戰 02】—— 創建游戲場景

《看聊天記錄都學不會Python到游戲實戰?太菜了吧》這是我第一次使用代碼創建出一個窗口【python 游戲實戰 01】—— 創建窗口

《看聊天記錄都學不會Python到游戲實戰?太菜了吧》(12)python 的列表我從沒想過會那么好用—— 列表

《看聊天記錄都學不會Python到游戲實戰?太菜了吧》(11)python里面while到底有多少知識點—— break continue

《看聊天記錄都學不會Python到游戲實戰?太菜了吧》(10)無底洞的循環—— 循環初窺

《看聊天記錄都學不會Python到游戲實戰?太菜了吧》(9)集萬家之長不死 python—— 導包

《看聊天記錄都學不會Python到游戲實戰?太菜了吧》(8)我們開始做一個數字小游戲吧—— 數字游戲開始做 導包

《看聊天記錄都學不會Python到游戲實戰?太菜了吧》(7)我用函數寫了個特洛伊木馬—— 自定義函數

《看聊天記錄都學不會Python到游戲實戰?太菜了吧》(6)不會這個知識點代碼越寫越難—— and or 邏輯運算

《看聊天記錄都學不會Python到游戲實戰?太菜了吧》(5)用前朝的劍斬今朝的官——if…else

《看聊天記錄都學不會Python到游戲實戰?太菜了吧》(4)小白不知道這個知識點將會錯漏百出——if 與 層級

《看聊天記錄都學不會Python到游戲實戰?太菜了吧》(3)都說123是字符不是數字——輸入與類型

《看聊天記錄都學不會Python到游戲實戰?太菜了吧》(2)在python中加號竟然如此善變——變量與運算

《看聊天記錄都學不會Python到游戲實戰?太菜了吧》(1)裝載Python神器!亮劍!——helloworld


作者簡介

作者名:1_bit

簡介:CSDN博客專家,2020年博客之星TOP5,藍橋簽約作者。15-16年曾在網上直播,帶領一批程序小白走上程序員之路。歡迎各位小白加我咨詢我相關信息,迷茫的你會找到答案。

博客地址:https://i1bit.blog.csdn.net


🐰小C:小媛,上一節創建了一個黑框框開不開心?

👸小媛:開…不,不開心,才創建一個黑框框我能有啥開心的。

🐰小C:話不能這樣說,畢竟你已經開始可以創建一個黑框框了。

👸小媛:不不不,不做完游戲我不開心。

🐰小C:行,那這一節就讓你創建一個場景吧。

👸小媛:趕緊的,我覺得你是在想水字數才說那么多的話。

🐰小C:畢竟學習這種枯燥的技術要給大家營造一種輕松的氛圍嘛。

👸小媛:趕緊吧,我等著了。

🐰小C:首先我們把上一節的等待給加一下。在游戲中,等待其實是有一個主循環,一直對游戲中發生的事情進行監聽。

👸小媛:所以我們就是需要在下面價格循環喲?

🐰小C:是的,我們在下面添加一個 while 循環,這個 while 循環內一直對游戲的事件進行監聽,這樣我們就知道用戶做了什么事情,例如用戶按下了什么鍵。

👸小媛:明白,請繼續。

🐰小C:我們在循環中需要一直獲取游戲中發生的事件,這個時候可以使用一個一個方法 pygame.event.get()。pygame 中使用 event 屬性調用 get 方法可以獲取一個列表,這個列表的內容為這個游戲中所發生的事件集。我們通過一個 for 循環對這個列表進行遍歷,此時根據當前列表已經遍歷出來的元素做判斷,若是用戶點擊了窗口的右上角叉叉進行退出,我們就給一個退出響應即可。

👸小媛:那怎么做呢?

🐰小C:你看下面的代碼。

import pygamepygame.init()
screen=pygame.display.set_mode((600,800))
pygame.display.set_caption("這是一個飛機游戲")
icon=pygame.image.load(r'E:\2dsrc\src\img\hero1.png')
pygame.display.set_icon(icon)
#游戲主循環
while True:#事件遍歷for event in pygame.event.get():if event.type==pygame.QUIT:exit()

👸小媛:你意思是說主循環我們直接使用 True 作為條件就好了,然后在主循環內有一個 for 循環用來遍歷 pygame 游戲中的事件?那 for 循環中的代碼是什么意思呢?

🐰小C:里面其實就是用 if 判斷已經遍歷到的元素 event 的類型,也就是判斷 type 屬性是否等于 pygame 中的 QUIT 退出。pygame 中的 QUIT 就表示一個退出的意思,如果是這個事件點擊到了有關退出的按鈕,那么就執行 exit()。exit() 可退出整個程序。

👸小媛:唔,我懂了,我運行出來了。但是是一個黑屏幕我想加一個游戲場景怎么辦?

🐰小C:很簡單,我們使用 screen 對象調用 blit 方法 screen.blit()。在這個方法中第一個傳入的是圖片參數,第二個傳入的是要從哪里開始繪制的坐標。

👸小媛: 那圖片怎么獲得呢?

🐰小C:直接使用 pygame.image.load() 就可以了,就跟你之前用來設置圖片獲取的圖片一樣,但是要注意,我們需要把圖片繪制放到主循環中,因為為了保持有動畫效果每一幀都需要進行繪制新的內容,就跟你那個畫在書上的小人動畫一樣,代碼如下。

import pygamepygame.init()
screen=pygame.display.set_mode((600,800))
pygame.display.set_caption("這是一個飛機游戲")
icon=pygame.image.load(r'E:\2dsrc\src\img\hero1.png')
bg=pygame.image.load(r'E:\2dsrc\src\img\bg.png')
pygame.display.set_icon(icon)
#游戲主循環
while True:#事件遍歷for event in pygame.event.get():if event.type==pygame.QUIT:exit()screen.blit(bg,(0,0))

👸小媛:那個 0,0 意思就是表示在左上角開始從頭繪制是吧?

🐰小C:是的,其實哪一個代碼少了一個很關鍵的內容你知道是啥嗎?

👸小媛:我。。。忘記了。

🐰小C:少了一個屏幕更新,我們應該在每次循環的時候都應該刷新屏幕,因為我們每次都需要繪制一些游戲元素到這個窗口中。

import pygamepygame.init()
screen=pygame.display.set_mode((600,800))
pygame.display.set_caption("這是一個飛機游戲")
icon=pygame.image.load(r'E:\2dsrc\src\img\hero1.png')
bg=pygame.image.load(r'E:\2dsrc\src\img\bg.png')
pygame.display.set_icon(icon)
#游戲主循環
while True:#事件遍歷for event in pygame.event.get():if event.type==pygame.QUIT:exit()screen.blit(bg,(0,0))pygame.display.update()


👸小媛:我點了右上角后確實退出了,賊棒。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287014.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287014.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287014.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【三維激光掃描】第五章:基于點云數據的三維建模

第一節 繪制立面圖 1. 打開CAD 2014,新建一個文件,模板選擇acadiso.dwt,如下圖。 2. 點擊插入→創建點云。

Flutter之基本數據類型測試

1、Flutter的數據基本類型 Dart語言里一切皆為對象,所以如果沒有將變初始化,那么它的默認值為null Number(int、doubkle)StringBoolean(bool) List Map2、測試代碼 void testData() {//Number包含了int和doubleint a 4;int b 8;print(a b);int a1;if (a null)…

清北·NOIP2017濟南考前沖刺班 DAY1 morning

立方數(cubic) Time Limit:1000ms Memory Limit:128MB 題目描述 LYK定義了一個數叫“立方數”,若一個數可以被寫作是一個正整數的3次方,則這個數就是立方數,例如1,8,27就是最小的3個立方數。 現在給定一個數P,LYK想要知道這個數…

2020美國紐約大學計算機科學排名,2020美國紐約大學排名第幾

紐約大學在2020年《美國新聞與世界報道》美國全國性大學排名中排名第29名,在2020年QS世界大學排名中排名第39名。紐約大學專業排名QS世界大學生命科學與醫學專業排名 2020年 第40名QS世界大學醫學專業排名 2020年 第34名QS世界大學牙科專業排名 2020年 第14名QS世界…

saltstack 安裝nginx

1. 目錄結構[rootqing salt]# tree /srv/salt/nginx//srv/salt/nginx/-- config.sls-- files| -- nginx| -- nginx-1.0.15.tar.gz| -- nginx.conf| -- nginx_log_cut.sh| -- nginx-upstream-jvm-route-0.1.tar.gz-- init.sls-- install.sls1 directory, 8 files2. [r…

ArcGIS實驗教程——實驗三十一:ArcGIS構建泰森多邊形(Thiessen Polygon)實例精解

泰森多邊形是進行快速插值和分析地理實體影響區域的常用工具。例如,用離散點的性質描述多邊形區域的性質,用離散點的數據計算泰森多邊形區域的數據。泰森多邊形可用于定性分析、統計分析和臨近分析等。 ArcGIS實驗視頻教程合集:《ArcGIS實驗教程從入門到精通》(附配套實驗…

Python的魔法方法 .

基本行為和屬性 __init__(self[,....])構造函數 . 在實例化對象的時候會自動運行 __del__(self)析構函數 . 在對象被回收機制回收的時候會被調用 __str__(self)輸出函數 . 在實例對象請求輸出的時候會被調用. __repr__(self). 當直接調用實例對象的時候會被調用 __new__(cls,[,…

游戲角色開始動起來了,真帥!【python 游戲實戰 03】

前言 本系列文章將會以通俗易懂的對話方式進行教學,對話中將涵蓋了新手在學習中的一般問題。此系列將會持續更新,包括別的語言以及實戰都將使用對話的方式進行教學,基礎編程語言教學適用于零基礎小白,之后實戰課程也將會逐步更新…

如何讓 ASP.NET Core 支持綁定查詢字符串中的數組

前言有網友在交流群中詢問,如何讓 ASP.NET Core 支持綁定查詢字符串中的數組:據說,在 .NET 7 中已經支持了:但是,在這之前的 .NET 版本能實現相同功能嗎?ByteArrayModelBinder這時,群里的網友提…

Docker Storm開發環境搭建

2019獨角獸企業重金招聘Python工程師標準>>> 1. compose文件 storm-stack.yml version: 3.1services:zookeeper:image: zookeepercontainer_name: zookeeperrestart: alwaysports:- 2181:2181nimbus:image: stormcontainer_name: nimbuscommand: storm nimbusdepend…

Android之解決YouTubePlayerView啟動在Android5.0左右的手機出現奔潰問題

1 問題 用YouTubePlayerView(https://github.com/PierfrancescoSoffritti/android-youtube-player)在部分Android5.0手機上初始化的時候出現手機奔潰,錯誤提示如下 關鍵日志如下: Error inflating class com.pierfrancescosoffritti.androidyoutubeplayer.core.player.v…

重慶大學計算機課程設計,計算機組成原理課程設計報告重慶大學.doc

計算機組成原理課程設計報告重慶大學計算機組成原理課程設計報告題目:微程序設計專業:計算機科學與技術班級:指導老師:目錄一、摘要二、設計要求三、微程序控制器原理四、總體設計五、測試六、結論七、參考文獻目錄八、 個人總結重…

一些服務器編程的概念

IO線程:有Event loop的線程,每個線程有且有一個loop,用per thread變量記錄這個loop的對象地址,如果這個變量非空可以知道這個線程是IO線程 Channel:綁定到一個且只能一個loop,即某個IO線程,負責…

南方方洲號無人測量船系統簡介

南方智能測量船系統由小型無人船、自動導航模塊、聲納探測模塊、外圍傳感模塊、岸基操控終端、無人船專用軟件等部分組成。將先進的衛星定位、聲納、傳感器與智能導航控制等眾多技術相結合,提出了高精度、智能化、集成化、機動化、網絡化的勘測解決方案。該系統能自主航行并完…

1小時1篇文學會python再做個飛機大戰游戲

注: 想慢慢學習的同學可以看我的 《python 入門到游戲實戰專欄》(更新中) 想學 C 的同學可以看《大話系列之C語言》(基本更新完) 想學 C 的同學可以看《大話C》(更新中) 想做習題的可以看《大學…

Android之app作為服務器解決跨域問題

1 問題 APP用socket寫了服務器,然后PC發送請求到APP出現跨域問題。 2 解決辦法 在APP用socket服務器返回頭里面添加如下關鍵代碼 header="Content-Type: "+ JSON_TYPE + "; charset=utf-8 \r\n"+ "Connection: close\r\n"+ "Access-Cont…

如何優雅的編寫git的提交信息

前言在公司的日常工作當中或者個人的開源項目,將代碼提交到代碼庫時。都會遇到下面這樣的對話框,通常都會隨便寫點內容在里面。當遇到問題需要回溯的時候就成了給自己造成的麻煩,因為無法通過commit message來非常直觀的看到這一次提交了什么…

android快捷開發之Retrofit網絡加載框架的簡單使用

大家都知道,安卓最大的特點就是開源化,這自然會產生很多十分好用的第三方API,而基本每一個APP都會與網絡操作和緩存處理機制打交道,當然,你可以自己通過HttpUrlConnection再通過返回數據進行解析解決,而我們…

如何線性求乘法逆元

ny[i](ny[p%i]*(p-p/i))%p;不如背一發板子?轉載于:https://www.cnblogs.com/paozi/p/7788640.html

打開計算機無法顯示工具欄,任務欄不顯示打開的窗口怎么辦教程

我們在使用電腦的時候,打開很多程序的時候,會最小化某些窗口,只留在用的窗口,而最小化都是縮小為一個圖標放入屏幕下方的任務欄的,但有時候不知道為什么任務欄不顯示打開的窗口了,這時候也就無法直接用鼠標…