国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

關于“Python”的核心知識點整理大全37

這篇具有很好參考價值的文章主要介紹了關于“Python”的核心知識點整理大全37。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

關于“Python”的核心知識點整理大全37,掌握Python分類專欄:開啟智能數(shù)據(jù)處理之旅!,python,python,開發(fā)語言,筆記,pygame

目錄

13.6.2 響應外星人和飛船碰撞

game_stats.py

settings.py

alien_invasion.py

game_functions.py

ship.py

注意

13.6.3 有外星人到達屏幕底端

game_functions.py

13.6.4 游戲結束

game_stats.py

game_functions.py

13.7 確定應運行游戲的哪些部分

alien_invasion.py

13.8 小結

第14 章

記 分

14.1 添加 Play 按鈕

game_stats.py

往期快速傳送門??(在文章最后):

感謝大家的支持!歡迎訂閱收藏!專欄將持續(xù)更新!


關于“Python”的核心知識點整理大全37,掌握Python分類專欄:開啟智能數(shù)據(jù)處理之旅!,python,python,開發(fā)語言,筆記,pygame

13.6.2 響應外星人和飛船碰撞

現(xiàn)在需要確定外星人與飛船發(fā)生碰撞時,該做些什么。我們不銷毀ship實例并創(chuàng)建一個新的 ship實例,而是通過跟蹤游戲的統(tǒng)計信息來記錄飛船被撞了多少次(跟蹤統(tǒng)計信息還有助于記 分)。 下面來編寫一個用于跟蹤游戲統(tǒng)計信息的新類——GameStats,并將其保存為文件 game_stats.py:

game_stats.py
class GameStats(): 
 """跟蹤游戲的統(tǒng)計信息"""
 def __init__(self, ai_settings):
 """初始化統(tǒng)計信息"""
 self.ai_settings = ai_settings
1 self.reset_stats()
 def reset_stats(self):
 """初始化在游戲運行期間可能變化的統(tǒng)計信息"""
 self.ships_left = self.ai_settings.ship_limit

在這個游戲運行期間,我們只創(chuàng)建一個GameStats實例,但每當玩家開始新游戲時,需要重 置一些統(tǒng)計信息。為此,我們在方法reset_stats()中初始化大部分統(tǒng)計信息,而不是在__init__() 中直接初始化它們。我們在__init__()中調(diào)用這個方法,這樣創(chuàng)建GameStats實例時將妥善地設置 這些統(tǒng)計信息(見?),同時在玩家開始新游戲時也能調(diào)用reset_stats()。 當前只有一項統(tǒng)計信息——ships_left,其值在游戲運行期間將不斷變化。一開始玩家擁有 的飛船數(shù)存儲在settings.py的ship_limit中:

settings.py
 # 飛船設置
 self.ship_speed_factor = 1.5
 self.ship_limit = 3 

我們還需對alien_invasion.py做些修改,以創(chuàng)建一個GameStats實例:

alien_invasion.py
--snip--
from settings import Settings
1 from game_stats import GameStats
--snip--
def run_game():
 --snip--
 pygame.display.set_caption("Alien Invasion")
 # 創(chuàng)建一個用于存儲游戲統(tǒng)計信息的實例
2 stats = GameStats(ai_settings)
--snip--
# 開始游戲主循環(huán)
while True:
 --snip--
 gf.update_bullets(ai_settings, screen, ship, aliens, bullets)
3 gf.update_aliens(ai_settings, stats, screen, ship, aliens, bullets)
 --snip-- 

我們導入了新類GameStats( 見1),創(chuàng)建了一個名為stats的實例(見2),再調(diào)用 update_aliens()并添加了實參stats、screen和ship(見3)。在有外星人撞到飛船時,我們將使用這些實參來跟蹤玩家還有多少艘飛船,以及創(chuàng)建一群新的外星人。 有外星人撞到飛船時,我們將余下的飛船數(shù)減1,創(chuàng)建一群新的外星人,并將飛船重新放置 到屏幕底端中央(我們還將讓游戲暫停一段時間,讓玩家在新外星人群出現(xiàn)前注意到發(fā)生了碰撞, 并將重新創(chuàng)建外星人群)。 下面將實現(xiàn)這些功能的大部分代碼放到函數(shù)ship_hit()中:

game_functions.py
import sys
1 from time import sleep
import pygame
--snip--
def ship_hit(ai_settings, stats, screen, ship, aliens, bullets):
 """響應被外星人撞到的飛船"""
 # 將ships_left減1
2 stats.ships_left -= 1
 # 清空外星人列表和子彈列表
3 aliens.empty()
 bullets.empty()
 # 創(chuàng)建一群新的外星人,并將飛船放到屏幕底端中央
4 create_fleet(ai_settings, screen, ship, aliens)
 ship.center_ship()
 # 暫停
5 sleep(0.5)
6 def update_aliens(ai_settings, stats, screen, ship, aliens, bullets):
 --snip--
 # 檢測外星人和飛船碰撞
 if pygame.sprite.spritecollideany(ship, aliens):
 ship_hit(ai_settings, stats, screen, ship, aliens, bullets) 

我們首先從模塊time中導入了函數(shù)sleep(),以便使用它來讓游戲暫停(見1)。新函數(shù) ship_hit()在飛船被外星人撞到時作出響應。在這個函數(shù)內(nèi)部,將余下的飛船數(shù)減1(見2),然 后清空編組aliens和bullets(見3)。

接下來,我們創(chuàng)建一群新的外星人,并將飛船居中(見4),稍后將在Ship類中添加方法 center_ship()。最后,我們更新所有元素后(但在將修改顯示到屏幕前)暫停,讓玩家知道其 飛船被撞到了(見5)。屏幕將暫時停止變化,讓玩家能夠看到外星人撞到了飛船。函數(shù)sleep() 執(zhí)行完畢后,將接著執(zhí)行函數(shù)update_screen(),將新的外星人群繪制到屏幕上。

我們還更新了update_aliens()的定義,使其包含形參stats、screen和bullets(6),讓它 能夠在調(diào)用ship_hit()時傳遞這些值。

下面是新方法center_ship(),請將其添加到ship.py的末尾:

ship.py
def center_ship(self):
 """讓飛船在屏幕上居中"""
 self.center = self.screen_rect.centerx 

為讓飛船居中,我們將飛船的屬性center設置為屏幕中心的x坐標,而該坐標是通過屬性 screen_rect獲得的。


注意

我們根本沒有創(chuàng)建多艘飛船,在整個游戲運行期間,我們都只創(chuàng)建了一個飛船實例,并 在該飛船被撞到時將其居中。統(tǒng)計信息ships_left讓我們知道飛船是否用完。


請運行這個游戲,射殺幾個外星人,并讓一個外星人撞到飛船。游戲暫停后,將出現(xiàn)一群新 的外星人,而飛船將在屏幕底端居中。

13.6.3 有外星人到達屏幕底端

如果有外星人到達屏幕底端,我們將像有外星人撞到飛船那樣作出響應。請?zhí)砑右粋€執(zhí)行這 項任務的新函數(shù),并將其命名為update_aliens():

game_functions.py
def check_aliens_bottom(ai_settings, stats, screen, ship, aliens, bullets):
 """檢查是否有外星人到達了屏幕底端"""
 screen_rect = screen.get_rect()
 for alien in aliens.sprites():
1 if alien.rect.bottom >= screen_rect.bottom:
 # 像飛船被撞到一樣進行處理
 ship_hit(ai_settings, stats, screen, ship, aliens, bullets)
 break
def update_aliens(ai_settings, stats, screen, ship, aliens, bullets):
 --snip--
 # 檢查是否有外星人到達屏幕底端
2 check_aliens_bottom(ai_settings, stats, screen, ship, aliens, bullets)

函數(shù)check_aliens_bottom()檢查是否有外星人到達了屏幕底端。到達屏幕底端后,外星人的 屬性rect.bottom的值大于或等于屏幕的屬性rect.bottom的值(見1)。如果有外星人到達屏幕底 端,我們就調(diào)用ship_hit();只要檢測到一個外星人到達屏幕底端,就無需檢查其他外星人,因 此我們在調(diào)用ship_hit()后退出循環(huán)。

我們在更新所有外星人的位置并檢測是否有外星人和飛船發(fā)生碰撞后調(diào)用check_aliens_ bottom()(見2)?,F(xiàn)在,每當有外星人撞到飛船或抵達屏幕底端時,都將出現(xiàn)一群新的外星人。

13.6.4 游戲結束

現(xiàn)在這個游戲看起來更完整了,但它永遠都不會結束,只是ships_left不斷變成更小的負數(shù)。 下面在GameStats中添加一個作為標志的屬性game_active,以便在玩家的飛船用完后結束游戲:

game_stats.py
 def __init__(self, settings):
 --snip--
 # 游戲剛啟動時處于活動狀態(tài)
 self.game_active = True 

現(xiàn)在在ship_hit()中添加代碼,在玩家的飛船都用完后將game_active設置為False:

game_functions.py
def ship_hit(ai_settings, stats, screen, ship, aliens, bullets):
 """響應飛船被外星人撞到"""
 if stats.ships_left > 0:
 # 將ships_left減1
 stats.ships_left -= 1
 --snip--
 #暫停一會兒
 sleep(0.5)
 else:
 stats.game_active = False

ship_hit()的大部分代碼都沒變。我們將原來的所有代碼都移到了一個if語句塊中,這條if 語句檢查玩家是否至少還有一艘飛船。如果是這樣,就創(chuàng)建一群新的外星人,暫停一會兒,再接 著往下執(zhí)行。如果玩家沒有飛船了,就將game_active設置為False。

13.7 確定應運行游戲的哪些部分

在alien_invasion.py中,我們需要確定游戲的哪些部分在任何情況下都應運行,哪些部分僅在 游戲處于活動狀態(tài)時才運行:

alien_invasion.py
 # 開始游戲主循環(huán)
 while True:
 gf.check_events(ai_settings, screen, ship, bullets)
 if stats.game_active:
 ship.update()
 gf.update_bullets(ai_settings, screen, ship, aliens, bullets)
 gf.update_aliens(ai_settings, stats, screen, ship, aliens, bullets)
 gf.update_screen(ai_settings, screen, ship, aliens, bullets)

在主循環(huán)中,在任何情況下都需要調(diào)用check_events(),即便游戲處于非活動狀態(tài)時亦如此。 例如,我們需要知道玩家是否按了Q鍵以退出游戲,或單擊關閉窗口的按鈕。我們還需要不斷更 新屏幕,以便在等待玩家是否選擇開始新游戲時能夠修改屏幕。其他的函數(shù)僅在游戲處于活動狀 態(tài)時才需要調(diào)用,因為游戲處于非活動狀態(tài)時,我們不用更新游戲元素的位置。 現(xiàn)在,你運行這個游戲時,它將在飛船用完后停止不動。

13.8 小結

在本章中,你學習了:如何在游戲中添加大量相同的元素,如創(chuàng)建一群外星人;如何使用嵌 套循環(huán)來創(chuàng)建元素網(wǎng)格,還通過調(diào)用每個元素的方法update()移動了大量的元素;如何控制對象 在屏幕上移動的方向,以及如何響應事件,如有外星人到達屏幕邊緣;如何檢測和響應子彈和外 星人碰撞以及外星人和飛船碰撞;如何在游戲中跟蹤統(tǒng)計信息,以及如何使用標志game_active 來判斷游戲是否結束了。

在與這個項目相關的最后一章中,我們將添加一個Play按鈕,讓玩家能夠開始游戲,以及游 戲結束后再玩。每當玩家消滅一群外星人后,我們都將加快游戲的節(jié)奏,并添加一個記分系統(tǒng), 得到一個極具可玩性的游戲!

第14 章

記 分

14.1 添加 Play 按鈕

在本節(jié)中,我們將添加一個Play按鈕,它在游戲開始前出現(xiàn),并在游戲結束后再次出現(xiàn),讓 玩家能夠開始新游戲。 當前,這個游戲在玩家運行alien_invasion.py時就開始了。下面讓游戲一開始處于非活動狀態(tài), 并提示玩家單擊Play按鈕來開始游戲。為此,在game_stats.py中輸入如下代碼:

game_stats.py
def __init__(self, ai_settings):
 """初始化統(tǒng)計信息"""
 self.ai_settings = ai_settings
 self.reset_stats()
 # 讓游戲一開始處于非活動狀態(tài)
 self.game_active = False
 def reset_stats(self):
 --snip-- 

現(xiàn)在游戲一開始將處于非活動狀態(tài),等我們創(chuàng)建Play按鈕后,玩家才能開始游戲。


關于“Python”的核心知識點整理大全35-CSDN博客

關于“Python”的核心知識點整理大全34-CSDN博客

關于“Python”的核心知識點整理大全33-CSDN博客

關于“Python”的核心知識點整理大全32-CSDN博客

關于“Python”的核心知識點整理大全31-CSDN博客

關于“Python”的核心知識點整理大全30-CSDN博客

關于“Python”的核心知識點整理大全29-CSDN博客

關于“Python”的核心知識點整理大全28-CSDN博客

關于“Python”的核心知識點整理大全27-CSDN博客

關于“Python”的核心知識點整理大全26-CSDN博客

關于“Python”的核心知識點整理大全25-CSDN博客

關于“Python”的核心知識點整理大全12-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-764692.html

往期快速傳送門??(在文章最后):

感謝大家的支持!歡迎訂閱收藏!專欄將持續(xù)更新!

到了這里,關于關于“Python”的核心知識點整理大全37的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 關于“Python”的核心知識點整理大全46

    關于“Python”的核心知識點整理大全46

    目錄 16.1.3 提取并讀取數(shù)據(jù) highs_lows.py highs_lows.py 16.1.4 繪制氣溫圖表 highs_lows.py 16.1.5 模塊 datetime ?編輯 16.1.6 在圖表中添加日期 highs_lows.py 16.1.7 涵蓋更長的時間 highs_lows.py highs_lows.py 16.1.9 給圖表區(qū)域著色 highs_lows.py 往期快速傳送門??(在文章最后): 感謝大家的支持!歡迎

    2024年02月04日
    瀏覽(27)
  • 關于“Python”的核心知識點整理大全25

    關于“Python”的核心知識點整理大全25

    目錄 10.3.4 else 代碼塊、 10.3.5 處理 FileNotFoundError 異常 alice.py 在這個示例中,try代碼塊引發(fā)FileNotFoundError異常,因此Python找出與該錯誤匹配的 except代碼塊,并運行其中的代碼。最終的結果是顯示一條友好的錯誤消息,而不是traceback: 10.3.6 分析文本 10.3.7 使用多個文件 word_cou

    2024年02月04日
    瀏覽(25)
  • 關于“Python”的核心知識點整理大全47

    關于“Python”的核心知識點整理大全47

    目錄 16.1.10 錯誤檢查 highs_lows.py highs_lows.py 16.2 制作世界人口地圖:JSON 格式 16.2.1 下載世界人口數(shù)據(jù) 16.2.2 提取相關的數(shù)據(jù) population_data.json world_population.py 16.2.3 將字符串轉(zhuǎn)換為數(shù)字值 world_population.py 2world_population.py 16.2.4 獲取兩個字母的國別碼 countries.py country_codes.py 往期快速傳

    2024年02月03日
    瀏覽(26)
  • 關于“Python”的核心知識點整理大全29

    關于“Python”的核心知識點整理大全29

    目錄 11.2.4 方法 setUp() 注意 11.3 小結 第二部分 項目1 外星人入侵 第12 章 武裝飛船 注意 12.1 規(guī)劃項目 12.2 安裝 Pygame 注意 12.2.1 使用 pip 安裝 Python 包 注意 如果你啟動終端會話時使用的是命令python3,那么在這里應使用命令sudo python3 get-pip.py。 12.2.2 在 Linux 系統(tǒng)中安裝 Pygame 往

    2024年02月04日
    瀏覽(17)
  • 關于“Python”的核心知識點整理大全48

    關于“Python”的核心知識點整理大全48

    目錄 world_population.py 16.2.5 制作世界地圖 americas.py 16.2.6 在世界地圖上呈現(xiàn)數(shù)字數(shù)據(jù) na_populations.py 16.2.7 繪制完整的世界人口地圖 world_population.py 16.2.8 根據(jù)人口數(shù)量將國家分組 world_population.py 16.2.9 使用 Pygal 設置世界地圖的樣式 world_population.py 往期快速傳送門??(在文章最后)

    2024年01月23日
    瀏覽(25)
  • 關于“Python”的核心知識點整理大全43

    關于“Python”的核心知識點整理大全43

    目錄 ?編輯 15.2.3 使2散點圖并設置其樣式 scatter_squares.py 15.2.4 使用 scatter()繪制一系列點 scatter_squares.py 15.2.5 自動計算數(shù)據(jù) scatter_squares.py 15.2.6 刪除數(shù)據(jù)點的輪廓 15.2.7 自定義顏色 15.2.8 使用顏色映射 scatter_squares.py 注意 15.2.9 自動保存圖表 15.3 隨機漫步 15.3.1 創(chuàng)建 RandomWalk()類

    2024年02月04日
    瀏覽(22)
  • 關于“Python”的核心知識點整理大全60

    關于“Python”的核心知識點整理大全60

    目錄 19.4 小結 第 20 章 設置應用程序的樣式并對其 進行部署 20.1 設置項目“學習筆記”的樣式 20.1.1 應用程序 django-bootstrap3 settings.py settings.py 20.1.2 使用 Bootstrap 來設置項目“學習筆記”的樣式 20.1.3 修改 base.html 1. 定義HTML頭部 base.html 2. 定義導航欄 3. 定義頁面的主要部分 往期

    2024年01月17日
    瀏覽(37)
  • 關于“Python”的核心知識點整理大全26

    關于“Python”的核心知識點整理大全26

    目錄 10.3.9 決定報告哪些錯誤 10.4 存儲數(shù)據(jù) 10.4.1 使用 json.dump()和 json.load() number_writer.py number_reader.py 10.4.2 保存和讀取用戶生成的數(shù)據(jù) 對于用戶生成的數(shù)據(jù),使用json保存它們大有裨益,因為如果不以某種方式進行存儲,等程 序停止運行時用戶的信息將丟失。下面來看一個這樣

    2024年02月04日
    瀏覽(21)
  • 關于“Python”的核心知識點整理大全6

    目錄 4:操作列表 4.1 遍歷整個列表 4.1.1 深入地研究循環(huán) 4.1.2 在 for 循環(huán)中執(zhí)行更多的操作 4.1.3 在 for 循環(huán)結束后執(zhí)行一些操作 4.2 避免縮進錯誤 4.2.1 忘記縮進 4.2.2 忘記縮進額外的代碼行 4.2.3 不必要的縮進 4.2.4 循環(huán)后不必要的縮進 往期快速傳送門??(在文章最后): 你經(jīng)

    2024年02月05日
    瀏覽(18)
  • 關于“Python”的核心知識點整理大全38

    關于“Python”的核心知識點整理大全38

    由于Pygame沒有內(nèi)置創(chuàng)建按鈕的方法,我們創(chuàng)建一個Button類,用于創(chuàng)建帶標簽的實心矩形。 你可以在游戲中使用這些代碼來創(chuàng)建任何按鈕。下面是Button類的第一部分,請將這個類保存為 文件button.py: button.py 首先,我們導入了模塊pygame.font,它讓Pygame能夠?qū)⑽谋句秩镜狡聊簧稀?/p>

    2024年02月03日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包