• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Python的小恐龍游戲設(shè)計與分析

      2019-10-21 08:08:31董彧先
      現(xiàn)代信息科技 2019年12期
      關(guān)鍵詞:程序設(shè)計

      摘 ?要:Python是一種跨平臺的、開源的、免費的、解釋型的高級編程語言。它具有豐富的、強大的庫,能夠把其他語言制作的各種模塊很輕松地聯(lián)結(jié)在一起,所以Python常被稱為“膠水”語言。Python語言近幾年發(fā)展勢頭迅猛,應(yīng)用領(lǐng)域也非常廣泛,在Web編程、圖形處理、黑客編程、大數(shù)據(jù)處理、網(wǎng)絡(luò)爬蟲、科學(xué)計算和游戲編程等領(lǐng)域都能找到Python的應(yīng)用。Python語言的研究和發(fā)明主要是為了便于學(xué)習(xí)和應(yīng)用,因此Python語言是開源的,并且語法非常簡單、容易編寫和理解。本文通過對小恐龍游戲的設(shè)計與分析,掌握Python語言在游戲開發(fā)領(lǐng)域的優(yōu)勢。

      關(guān)鍵詞:Python;游戲開發(fā);計算機語言;程序設(shè)計

      中圖分類號:TP311.1 ? ? ? 文獻標(biāo)識碼:A 文章編號:2096-4706(2019)12-0081-03

      Abstract:Python is a cross-platform,open source,free,explanatory high-level programming language. It has rich and powerful libraries,which can easily connect various modules made by other languages. So Python is often called “glue” language. Python language has developed rapidly in recent years,and its application fields are also very wide. It is used in Web programming,graphics processing,hacker programming,big data processing,network crawler,scientific computing and game programming. Python language research and invention is mainly for easy learning and application,so Python language is open source,and the grammar is very simple,easy to write and understand. Through the design and analysis of small dinosaur game,we can grasp the advantages of Python language in the field of game development.

      Keywords:Python;game development;computer language;programming

      0 ?引 ?言

      Python是一種計算機程序設(shè)計語言,是一種面向?qū)ο蟮膭討B(tài)類型語言,最初被設(shè)計用于編寫自動化腳本(shell),隨著版本的不斷更新和語言新功能的添加,Python越來越多被用于獨立的大型項目的開發(fā)。Python語言在游戲開發(fā)領(lǐng)域有著自己的優(yōu)勢,可以通過相對于其他編程語言更加人性化的語法和更加少的代碼量來完成相同的任務(wù)。

      在本文設(shè)計的基于Python的游戲中會看見一只小恐龍,按下鍵盤中的空格鍵就能激活該恐龍,然后可以通過空格鍵來控制小恐龍的跳躍進行障礙物的躲避,并且躲避障礙物的數(shù)量進行分?jǐn)?shù)的統(tǒng)計。

      1 ?Python小恐龍游戲的設(shè)計流程

      在游戲主窗體下完成顯示小恐龍、顯示滾動地圖、隨機顯示障礙物。在顯示小恐龍的同時編寫小恐龍的跳躍功能和音效。同時判斷游戲中移動的障礙物是否與小恐龍發(fā)生碰撞。如果小恐龍與障礙物發(fā)生碰撞則播放碰撞音效、顯示游戲結(jié)束畫面、顯示游戲積分。如果小恐龍沒有與障礙物發(fā)生碰撞,則只顯示跳過障礙物后的積分變化。

      2 ?小恐龍游戲主窗體的實現(xiàn)

      在Python游戲開發(fā)中,主要使用Pygame模塊,這樣可以使小恐龍游戲的開發(fā)變得簡單很多。創(chuàng)建名稱為dinsosaur的文件夾,該文件夾用于保存小恐龍游戲的項目文件,然后在該文件夾中分別創(chuàng)建兩個文件夾,一個命名為audio,用于保存游戲中的音頻文件,另一個命名為image,用于保存游戲中所使用的圖片資源。最后在dinosaur文件夾中創(chuàng)建dinosaur.py文件,在該文件中保存實現(xiàn)小恐龍游戲的代碼。首先導(dǎo)入Pygame庫與Pygame中的常量庫,然后定義窗體的寬度與高度。

      其次,創(chuàng)建mainGame()方法,在該方法中首先進行Pygame的初始化工作,然后創(chuàng)建時間對象用于更新窗體中的畫面,再創(chuàng)建窗體實例并設(shè)置窗體的標(biāo)題文字,最后通過循環(huán)實現(xiàn)窗體的顯示與刷新,經(jīng)過初始化以后就可以盡情地使用Pygame了。使用Pygame時鐘之前,必須先創(chuàng)建Clock對象的一個實例,從而控制每個循環(huán)多長時間運行一次。通常來說需要先創(chuàng)建一個窗體,方便程序員與代碼交互。

      在實現(xiàn)一個可以循環(huán)滾動的地圖時,首先需要渲染兩張地圖的背景圖片,然后地圖1的背景圖片展示在窗體中,而另一張地圖2的背景圖片需要在窗體的外面進行準(zhǔn)備,如圖1所示。

      然后兩張地圖同時以相同的速度向左移動,此時窗體外的地圖2背景圖片將跟隨地圖1背景圖片進入窗體中,這樣就完成了地圖的循環(huán)播放,如圖2所示。

      當(dāng)?shù)貓D1完全離開窗體的時候,將該圖片的坐標(biāo)設(shè)置為準(zhǔn)備狀態(tài)的坐標(biāo)位置。通過不斷顛倒兩張圖片的位置,然后再進行平移,就可以在用戶的視覺中形成一張不斷滾動的地圖。通過代碼實現(xiàn)滾動地圖的具體步驟如下:

      (1)創(chuàng)建一個名稱為KongLongMap的滾動地圖類,然后在該類的初始化方法中加載背景圖片、定義X與Y的坐標(biāo)。

      (2)在KongLongMap類中創(chuàng)建名為rolling()的方法,在該方法中根據(jù)地圖背景圖片的X坐標(biāo)判斷圖片是否移出窗體,如果移出就給圖片設(shè)置一個新的坐標(biāo)點,否則按照每次6個像素的跨度向左移動。

      (3)在KongLongMap類中創(chuàng)建名為update()的方法,這樣就可以實現(xiàn)地圖無限滾動的效果。

      (4)在mainGame()方法中,設(shè)置標(biāo)題文字代碼,在下面創(chuàng)建兩個背景圖片對象。

      (5)在mainGame()方法中循環(huán),實現(xiàn)無限循環(huán)滾動的地圖。

      3 ?可以跳躍的小恐龍

      在實現(xiàn)小恐龍?zhí)S時,首先需要設(shè)置小恐龍在地圖上默認(rèn)的固定位置,然后判斷是否按下了鍵盤中的空格鍵。如果按下了就開啟小恐龍的跳躍開關(guān),讓小恐龍以6個像素的距離向上移動。當(dāng)小恐龍到達窗體的頂部邊緣時,讓小恐龍以6個像素的距離向下移動,回到地面后關(guān)閉跳躍的開關(guān)。具體的實現(xiàn)步驟如下:

      (1)導(dǎo)入迭代工具,創(chuàng)建一個名稱為Dinosaur的恐龍類,然后在該類的初始化方法中首先定義小恐龍?zhí)S時所需要的變量,然后加載小恐龍跑動的三張圖片,最后加載小恐龍?zhí)S時的音效并設(shè)置小恐龍默認(rèn)顯示的坐標(biāo)位置。

      (2)在Dinosaur類中創(chuàng)建Jump()方法,通過該方法實現(xiàn)開啟跳躍的開關(guān)。

      (3)在Dinosaur類中創(chuàng)建Move()方法,該方法先判斷小恐龍的跳躍開關(guān)是否開啟,再判斷小恐龍是否在地面上,如果滿足了上面的兩個條件,小恐龍就以6個像素的距離向上移動。當(dāng)小恐龍到達窗體頂部時會以6個像素的距離向下移動,當(dāng)小恐龍回到地面后關(guān)閉跳躍開關(guān)。

      (4)在Dinosaur類中創(chuàng)建dinosaur()方法,在該方法中首先匹配小恐龍跑步的動圖,然后進行小恐龍的繪制。

      (5)在mainGame()方法中,在創(chuàng)建地圖對象的代碼下面創(chuàng)建小恐龍。

      (6)在mainGame()方法的while循環(huán)中,判斷關(guān)閉窗體的下面判斷是否按下了空格鍵,如果按下了就可以開啟小恐龍開關(guān),并且播放跳躍音效。

      (7)在mainGame()方法中繪制地圖代碼下面實現(xiàn)小恐龍的移動與繪制功能。

      4 ?障礙物的出現(xiàn)

      在實現(xiàn)障礙物的出現(xiàn)時,首先需要考慮到障礙物的大小以及障礙物的不同,如果每次出現(xiàn)的障礙物都是相同的,那么該游戲?qū)⑹ビ螒虻臉啡?。所以,需要加載兩個大小不同的障礙物圖片,然后隨機抽選并顯示。此外,還需要通過計算來設(shè)置多久出現(xiàn)一個障礙物并將其顯示在主窗體中。具體的實現(xiàn)步驟如下:

      (1)導(dǎo)入隨機數(shù),創(chuàng)建一個名稱為Obstacle的障礙物類,在該類中定義一個分?jǐn)?shù),然后在初始化方法中加載障礙物圖片、分?jǐn)?shù)圖片以及加分音效。創(chuàng)建0至1的隨機數(shù)數(shù)字,根據(jù)該數(shù)字抽選障礙物是石頭還是仙人掌,最后根據(jù)圖片的寬高創(chuàng)建障礙物矩形的大小,并且設(shè)置障礙物的繪制坐標(biāo)。

      (2)在Obstacle類中首先創(chuàng)建move()方法用于實現(xiàn)障礙物的移動,然后創(chuàng)建Obstacle()方法用于實現(xiàn)繪制障礙物。

      (3)在mainGame()方法中創(chuàng)建恐龍對象的代碼,下面定義添加障礙物的時間與障礙物對象列表。

      (4)在mainGame()方法中繪制恐龍的代碼下面,計算障礙物出現(xiàn)的間隔時間。

      (5)在mainGame()方法中計算障礙物間隔時間代碼的下面,循環(huán)遍歷障礙物并進行障礙物的繪制。

      (6)在mainGame()方法中更新整個窗體代碼的上面,增加障礙物時間。

      5 ?碰撞與積分

      在實現(xiàn)碰撞與積分時,首先需要判斷小恐龍與障礙物的兩個矩形圖片是否發(fā)生了碰撞,如果發(fā)生了碰撞就證明該游戲已經(jīng)結(jié)束,否則判斷小恐龍是否越過了障礙物,確認(rèn)躍過后就可以進行加分操作,并將分?jǐn)?shù)顯示在窗體頂部中間的位置了。具體步驟如下:

      (1)在Obstacle類中,Obstacle()方法的下面創(chuàng)建getscore()方法用于獲取分?jǐn)?shù)并播放加分音效,然后創(chuàng)建showScore()方法用于在窗體頂部中間的位置顯示分?jǐn)?shù)。

      (2)在mainGame()方法的上面創(chuàng)建game_over()方法,在該方法中首先需要加載與播放撞擊的音效,然后獲取窗體的寬度與高度,最后加載游戲結(jié)束的圖片并將該圖片顯示在窗體的中間位置。

      (3)在mainGame()方法中,繪制障礙物代碼的下面判斷小恐龍與障礙物是否發(fā)生碰撞,如果發(fā)生了碰撞,就開啟游戲結(jié)束的開關(guān),并調(diào)用game_over()方法顯示游戲結(jié)束的圖片;否則判斷小恐龍是否跳過了障礙物,躍過就進行分?jǐn)?shù)的增加并顯示當(dāng)前得分。

      (4)為了實現(xiàn)在游戲結(jié)束后再按下空格鍵時重新啟動游戲,需要在mainGame()方法中播放小恐龍?zhí)S音效代碼的下面判斷游戲結(jié)束的開關(guān)是否開啟,如果開啟,則重新調(diào)用mainGame()方法重新啟動游戲。

      6 ?結(jié) ?論

      隨著人工智能的發(fā)展,Python語言的應(yīng)用變得越來越普遍。通過Python語言中的Pygame模塊來設(shè)計小恐龍游戲,可以發(fā)現(xiàn)Python語言在開發(fā)游戲方面非常簡便,相比其他語言用了更少的代碼量完成了相同的功能。Python擁有一個強大的標(biāo)準(zhǔn)庫。Python語言的核心只包含數(shù)字、字符串、列表、字典、文件等常見類型和函數(shù),而由Python標(biāo)準(zhǔn)庫提供了系統(tǒng)管理、網(wǎng)絡(luò)通信、文本處理、數(shù)據(jù)庫接口、圖形系統(tǒng)、XML處理等額外的功能。Python標(biāo)準(zhǔn)庫命名接口清晰、文檔良好,很容易學(xué)習(xí)和使用。

      參考文獻:

      [1] 鄧亞君,楊剛,翁文斌,等.基于Python的網(wǎng)絡(luò)聊天室設(shè)計 [J].電子技術(shù)與軟件工程,2019(5):35-36.

      [2] 蔡敏.Python語言的Web開發(fā)應(yīng)用分析 [J].無線互聯(lián)科技,2019,16(4):27-28.

      [3] 耿穎.使用Python語言的GUI可視化編程設(shè)計 [J].單片機與嵌入式系統(tǒng)應(yīng)用,2019,19(2):20-22+24.

      作者簡介:董彧先(1981-),男,漢族,山東聊城人,講師,碩士研究生,研究方向:網(wǎng)絡(luò)安全、嵌入式系統(tǒng)設(shè)計。

      猜你喜歡
      程序設(shè)計
      基于Visual Studio Code的C語言程序設(shè)計實踐教學(xué)探索
      計算機教育(2020年5期)2020-07-24 08:52:56
      從細(xì)節(jié)入手,談PLC程序設(shè)計技巧
      電子制作(2019年9期)2019-05-30 09:42:04
      高職高專院校C語言程序設(shè)計教學(xué)改革探索
      OBE理念下基于Greenfoot的Java程序設(shè)計課程教學(xué)改革
      PLC梯形圖程序設(shè)計技巧及應(yīng)用
      三級甲等公立醫(yī)院績效考核程序設(shè)計
      馆陶县| 化德县| 偏关县| 杨浦区| 潜山县| 宜宾市| 华宁县| 台中县| 大连市| 章丘市| 信阳市| 淮阳县| 焦作市| 三亚市| 江安县| 贵德县| 台东市| 昌图县| 寿阳县| 平乡县| 山阴县| 河曲县| 安龙县| 梁平县| 儋州市| 仙桃市| 漯河市| 永康市| 莫力| 德钦县| 灵丘县| 宁蒗| 凤冈县| 上虞市| 保定市| 黑河市| 疏附县| 团风县| 涞水县| 金乡县| 融水|