Python游戲編程之賽車游戲6-3

1 “敵人”汽車類的創建

在創建玩家汽車類之后,接下來創建“敵人”汽車類。“敵人”汽車類與玩家類一樣,也是包含兩個方法,一個是__init__(),另一個是move()。

1.1 __init__()方法

“敵人”汽車類的__init__()方法代碼如圖1所示。

圖1 “敵人”汽車類的__init__()方法代碼

其中,“敵人”汽車類名是Enemy,該類也是pygame.sprite.Sprite類的子類。在__init__()方法中,第37行代碼調用了其父類也就是pygame.sprite.Sprite類的__init__()方法,完成精靈類的初始化;第38行代碼導入“敵人”汽車的圖片;第39行代碼獲取“敵人”汽車圖片的位置及大小信息;第40行代碼設置“敵人”汽車的初始位置,因為其初始位置在屏幕的最上方,所以其縱坐標的值是0,橫坐標是一個隨機值,可以保證“敵人”汽車出現的隨機性,原理如圖2所示。

圖2 “敵人”汽車的初始位置原理圖

其中,汽車圖片寬度的一半是40,因此其中心位置的橫坐標最小值是40,最大值是屏幕寬度-40。第40行代碼中使用random.randint()函數生成從40到WIDTH-40之間的一個隨機值作為汽車圖片中心位置的橫坐標。

注意1 需要導入random模塊。

1.2 move()方法

“敵人”汽車類的move()方法用于控制“敵人”汽車的移動,代碼如圖3所示。

圖3 “敵人”汽車類的move()方法代碼

其中,第43行代碼將變量SCORE聲明為全局變量,SCORE表示玩家的分數,當玩家成功躲避了一輛敵人的汽車,則分數加1,該變量在“敵人”汽車類之外定義,因為要在類內對其進行修改,需要將其設置為global;第44行代碼通過rect.move_ip()函數實現“敵人”汽車圖片的移動,因為“敵人”汽車是從屏幕上方向下方移動,只需要在垂直方向移動圖片,水平方向無需移動,SPEED表示“敵人”汽車的速度,在“敵人”汽車類之外定義;第45-48行代碼的作用是當“敵人”汽車移動到屏幕下方之后的處理,當rect.bottom大于HEIGHT,表示“敵人”汽車移動到屏幕下方,此時表示玩家成功躲避了一輛敵人的汽車,第46行代碼將玩家分數加1,第47-48行代碼重新設置“敵人”汽車的位置,使其重新回到屏幕的上方,并隨機設置其水平位置。

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

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

相關文章

TCP/UDP調試工具推薦:Socket通信圖解教程

TCP/UDP調試工具推薦:Socket通信圖解教程 一、引言二、串口調試流程三、下載鏈接 SocketTool 調試助手是一款旨在協助程序員和網絡管理員進行TCP和UDP協議調試的網絡通信工具。TCP作為一種面向連接、可靠的協議,具有諸如連接管理、數據分片與重組、流量和…

神經網絡 - 神經元

人工神經元(Artificial Neuron),簡稱神經元(Neuron),是構成神經網絡的基本單元,其主要是模擬生物神經元的結構和特性,接收一組輸入信號并產生輸出。 生物學家在 20 世紀初就發現了生物神經元的結構。一個生物神經元通常具有多個樹…

藍橋杯備考:貪心算法之矩陣消除游戲

這道題是牛客上的一道題,它呢和我們之前的排座位游戲非常之相似,但是,排座位問題選擇行和列是不會改變元素的值的,這道題呢每每選一行都會把這行或者這列清零,所以我們的策略就是先用二進制把選擇所有行的情況全部枚舉…

DeepSeek系統架構的逐層分類拆解分析,從底層基礎設施到用戶端分發全鏈路

一、底層基礎設施層 1. 硬件服務器集群 算力單元: GPU集群:基于NVIDIA H800/H100 GPU構建,單集群規模超10,000卡,采用NVLink全互聯架構實現低延遲通信。國產化支持:適配海光DCU、寒武紀MLU等國產芯片,通過…

ktransformers 上的 DeepSeek-R1 671B open-webui

ktransformers 上的 DeepSeek-R1 671B open-webui 一、下載GGUF模型1. 創建目錄2. 魔塔下載 DeepSeek-R1-Q4_K_M3. 安裝顯卡驅動和cuda4. 顯卡 NVIDIA GeForce RTX 4090 二、安裝ktransformers1. 安裝依賴2. 安裝uv工具鏈3. 下載源碼4. 創建python虛擬環境 三、編譯ktransforme…

smolagents學習筆記系列(五)Tools-in-depth-guide

這篇文章鎖定官網教程中的 Tools-in-depth-guide 章節,主要介紹了如何詳細構造自己的Tools,在之前的博文 smolagents學習筆記系列(二)Agents - Guided tour 中我初步介紹了下如何將一個函數或一個類聲明成 smolagents 的工具&…

形式化數學編程在AI醫療中的探索路徑分析

一、引言 1.1 研究背景與意義 在數字化時代,形式化數學編程和 AI 形式化醫療作為前沿領域,正逐漸改變著我們的生活和醫療模式。形式化數學編程是一種運用數學邏輯和嚴格的形式化語言來描述和驗證程序的技術,它通過數學的精確性和邏輯性,確保程序的正確性和可靠性。在軟件…

C#初級教程(3)——變量與表達式:從基礎到實踐

一、為什么使用變量 計算機程序本質上是對數據的操作,數字、文字、圖片等在計算機中都屬于數據。而變量,就是數據在計算機內存中的 “棲息地”。我們可以把變量想象成一個個小盒子,這些盒子能存放各種數據,需要時還能隨時取出。 二…

【深度學習神經網絡學習筆記(三)】向量化編程

向量化編程 向量化編程前言1、向量化編程2、向量化優勢3、正向傳播和反向傳播 向量化編程 前言 向量化編程是一種利用專門的指令集或并行算法來提高數據處理效率的技術,尤其在科學計算、數據分析和機器學習領域中非常常見。它允許通過一次操作處理整個數組或矩陣的…

海康威視攝像頭RTSP使用nginx推流到服務器直播教程

思路: 之前2020年在本科的時候,由于項目的需求需要將海康威視的攝像頭使用推流服務器到網頁進行直播。這里將自己半個月琢磨出來的步驟給大家發一些。切勿轉載!!!! 使用網絡攝像頭中的rtsp協議---------通…

鴻蒙開發深入淺出03(封裝通用LazyForEach實現懶加載)

鴻蒙開發深入淺出03(封裝通用LazyForEach實現懶加載) 1、效果展示2、ets/models/BasicDataSource.ets3、ets/models/HomeData.ets4、ets/api/home.ets5、ets/pages/Home.ets6、ets/views/Home/SwiperLayout.ets7、后端代碼 1、效果展示 2、ets/models/Ba…

【Rust中級教程】2.8. API設計原則之靈活性(flexible) Pt.4:顯式析構函數的問題及3種解決方案

喜歡的話別忘了點贊、收藏加關注哦(加關注即可閱讀全文),對接下來的教程有興趣的可以關注專欄。謝謝喵!(・ω・) 說句題外話,這篇文章一共5721個字,是我截至目前寫的最長的一篇文章&a…

一周學會Flask3 Python Web開發-Jinja2模板過濾器使用

鋒哥原創的Flask3 Python Web開發 Flask3視頻教程: 2025版 Flask3 Python web開發 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 在Jinja2中,過濾器(filter)是一些可以用來修改和過濾變量值的特殊函數,過濾器和變量用一個豎線 | &a…

數據庫 安裝initializing database不通過

出現一下情況時: 處理方法: 將自己的電腦名稱 中文改成英文 即可通過

嵌入式開發:傅里葉變換(5):STM32和Matlab聯調驗證FFT

目錄 1. MATLAB獲取 STM32 的原始數據 2. 將數據上傳到電腦 3. MATLAB 接收數據并驗證 STM32進行傅里葉代碼 結果分析 STM32 和 MATLAB 聯調是嵌入式開發中常見的工作流程,通常目的是將 STM32 采集的數據或控制信號傳輸到 MATLAB 中進行實時處理、分析和可視化…

Mobaxterm服務器常用命令(持續更新)

切換文件夾 cd path # for example, cd /gpu03/deeplearning/進入不同GPU ssh mgmt ssh gpu01 ssh gpu03尋找文件位置 find /path -name file_name #for example, find / -name lib #在根目錄下搜尋名為lib文件 #for example, find /home/deeplearning -name "lib"…

MFC文件和注冊表的操作

MFC文件和注冊表的操作 日志、操作配置文件、ini、注冊表、音視頻的文件存儲 Linux下一切皆文件 C/C操作文件 const char* 與 char* const const char* 常量指針,表示指向的內容為常量。指針可以指向其他變量,但是內容不能再變了 char szName[6]&qu…

微信小程序源碼逆向 MacOS

前言 日常工作中經常會遇到對小程序的滲透測試,微信小程序的源碼是保存在用戶客戶端本地,在滲透的過程中我們需要提取小程序的源碼進行問題分析,本篇介紹如何在蘋果電腦 MacOS 系統上提取微信小程序的源碼。 0x01 微信小程序提取 在蘋果電…

ubuntu-24.04.1-desktop 中安裝 QT6.7

ubuntu-24.04.1-desktop 中安裝 QT6.7 1 環境準備1.1 安裝 GCC 和必要的開發包:1.2 Xshell 連接 Ubuntu2 安裝 Qt 和 Qt Creator:2.1 下載在線安裝器2.2 在虛擬機中為文件添加可執行權限2.3 配置鏡像地址運行安裝器2.4 錯誤:libxcb-xinerama.so.0: cannot open shared objec…

告別 Freetype,擁抱高效字體處理新方案 - 純c#解析字體庫

在當今數字化的時代,字體處理在眾多領域中都扮演著至關重要的角色,無論是平面設計、網頁開發,還是移動應用、游戲制作,合適的字體選擇與精準的處理都能極大地提升用戶體驗。而在字體處理的技術領域,Freetype 庫一直是開…