Python實例題:pygame開發打飛機游戲

目錄

Python實例題

題目

pygame-aircraft-game使用 Pygame 開發的打飛機游戲腳本

代碼解釋

初始化部分:

游戲主循環:

退出部分:

運行思路

注意事項

Python實例題

題目

pygame開發打飛機游戲

pygame-aircraft-game使用 Pygame 開發的打飛機游戲腳本

import pygame
import random# 初始化 Pygame
pygame.init()# 定義屏幕尺寸
SCREEN_WIDTH = 480
SCREEN_HEIGHT = 650# 創建屏幕對象
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("打飛機游戲")# 定義顏色
WHITE = (255, 255, 255)# 加載玩家飛機圖片
player_img = pygame.image.load("player.png")  # 請確保該圖片存在
player_rect = player_img.get_rect()
player_rect.centerx = SCREEN_WIDTH // 2
player_rect.bottom = SCREEN_HEIGHT - 10# 玩家飛機移動速度
player_speed = 5# 加載敵機圖片
enemy_img = pygame.image.load("enemy.png")  # 請確保該圖片存在
enemies = []# 敵機生成間隔和計時器
ENEMY_SPAWN_INTERVAL = 1000
enemy_spawn_timer = 0# 加載子彈圖片
bullet_img = pygame.image.load("bullet.png")  # 請確保該圖片存在
bullets = []# 子彈移動速度
bullet_speed = 8# 游戲主循環
running = True
clock = pygame.time.Clock()while running:# 控制游戲幀率clock.tick(60)# 處理事件for event in pygame.event.get():if event.type == pygame.QUIT:running = Falseelif event.type == pygame.KEYDOWN:if event.key == pygame.K_SPACE:# 發射子彈bullet_rect = bullet_img.get_rect()bullet_rect.centerx = player_rect.centerxbullet_rect.top = player_rect.topbullets.append(bullet_rect)# 獲取按鍵狀態keys = pygame.key.get_pressed()if keys[pygame.K_LEFT] and player_rect.left > 0:player_rect.x -= player_speedif keys[pygame.K_RIGHT] and player_rect.right < SCREEN_WIDTH:player_rect.x += player_speedif keys[pygame.K_UP] and player_rect.top > 0:player_rect.y -= player_speedif keys[pygame.K_DOWN] and player_rect.bottom < SCREEN_HEIGHT:player_rect.y += player_speed# 生成敵機enemy_spawn_timer += clock.get_time()if enemy_spawn_timer > ENEMY_SPAWN_INTERVAL:enemy_rect = enemy_img.get_rect()enemy_rect.x = random.randint(0, SCREEN_WIDTH - enemy_rect.width)enemy_rect.y = -enemy_rect.heightenemies.append(enemy_rect)enemy_spawn_timer = 0# 移動敵機for enemy in enemies[:]:enemy.y += 3if enemy.top > SCREEN_HEIGHT:enemies.remove(enemy)# 移動子彈for bullet in bullets[:]:bullet.y -= bullet_speedif bullet.bottom < 0:bullets.remove(bullet)# 檢測子彈和敵機的碰撞for bullet in bullets[:]:for enemy in enemies[:]:if bullet.colliderect(enemy):bullets.remove(bullet)enemies.remove(enemy)# 繪制背景screen.fill(WHITE)# 繪制玩家飛機screen.blit(player_img, player_rect)# 繪制敵機for enemy in enemies:screen.blit(enemy_img, enemy)# 繪制子彈for bullet in bullets:screen.blit(bullet_img, bullet)# 更新顯示pygame.display.flip()# 退出 Pygame
pygame.quit()

代碼解釋

  • 初始化部分

    • 初始化pygame庫,設置屏幕尺寸和標題。
    • 加載玩家飛機、敵機和子彈的圖片,并設置玩家飛機的初始位置。
    • 定義敵機生成間隔和計時器,以及子彈的移動速度。
  • 游戲主循環

    • 控制游戲幀率為 60 幀每秒。
    • 處理事件,包括關閉窗口事件和發射子彈事件。
    • 根據按鍵狀態移動玩家飛機。
    • 按一定間隔生成敵機,并移動敵機和子彈。
    • 檢測子彈和敵機的碰撞,若碰撞則移除對應的子彈和敵機。
    • 繪制背景、玩家飛機、敵機和子彈,并更新顯示。
  • 退出部分

    • 當用戶關閉窗口時,退出pygame

運行思路

  • 安裝依賴庫:確保已經安裝了pygame庫,若未安裝,可使用以下命令進行安裝:
pip install pygame
  • 準備圖片:準備好player.pngenemy.pngbullet.png三張圖片,并將其放在與代碼文件相同的目錄下。
  • 運行腳本:將上述代碼保存為aircraft_game.py文件,在終端中運行:
python aircraft_game.py
  • 開始游戲:使用上下左右鍵移動玩家飛機,按空格鍵發射子彈,嘗試擊落敵機。

注意事項

  • 請確保圖片文件的路徑和名稱正確,否則會出現加載圖片失敗的錯誤。
  • 此代碼只是一個簡單的示例,你可以根據需求對游戲進行擴展,如添加音效、計分系統、關卡設計等。

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

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

相關文章

Gin 框架入門

Gin 框架入門 一、響應數據 JSON 響應 在 Web 開發中&#xff0c;JSON 是一種常用的數據交換格式。Gin 提供了簡便的方法來響應 JSON 數據。 package mainimport ("github.com/gin-gonic/gin" )func main() {r : gin.Default()r.GET("/json", func(c *…

Flink實時數倉數據突變時,如何快速排查原因

在大數據時代,數據的價值已經被無數企業和組織深刻認識到,而實時數倉作為數據處理和分析的重要基礎設施,正在逐漸成為推動業務增長和決策優化的核心引擎。想象一下,電商平臺在雙十一大促期間需要實時監控訂單量、用戶行為,甚至庫存變化,以便及時調整營銷策略和物流調度;…

視頻人像摳圖技術選型--截止2025年4月

前言&#xff1a;我是一名算法工程師&#xff0c;經常需要對某個AI功能做技術調研和輸出技術選型報告&#xff0c;在過去多年的工作當中&#xff0c;積累了很多內容&#xff0c;我會陸陸續續將這些內容整理出來分享給大家&#xff0c;希望大家喜歡&#xff0c;感謝您的閱讀&…

docker compose ps 命令

docker compose ps 命令用于列出與 Docker Compose 項目相關的容器及其狀態。 docker compose ps 能顯示當前項目中所有服務容器的運行狀態、端口映射等信息。 語法 docker compose ps [OPTIONS] [SERVICE…] SERVICE&#xff08;可選&#xff09;&#xff1a;指定要查看狀態…

C語言 字符函數和字符串函數(1)

目錄 1.字符分類函數 2.字符轉換函數 3.strlen的使用和模擬實現 4.strcpy的使用和模擬實現 在編程的過程中&#xff0c;我們經常要處理字符和字符串&#xff0c;為了方便操作字符和字符串&#xff0c;C語言標準庫中提 供了一系列庫函數&#xff0c;接下來我們就學習一下這…

MySQL 中如何進行 SQL 調優?

在MySQL中進行SQL調優是一個系統性工程&#xff0c;需結合索引優化、查詢改寫、性能分析工具、數據庫設計及硬件配置等多方面策略。以下是具體優化方法及案例說明&#xff1a; 一、索引優化&#xff1a;精準提速的關鍵 索引類型選擇 普通索引&#xff1a;加速頻繁查詢的列&…

OpenCV圖像金字塔詳解:原理、實現與應用

一、什么是圖像金字塔&#xff1f; 圖像金字塔是圖像處理中一種重要的多尺度表示方法&#xff0c;它通過對圖像進行重復的平滑和降采樣&#xff08;或上采樣&#xff09;操作&#xff0c;生成一系列分辨率逐漸降低&#xff08;或升高&#xff09;的圖像集合。這種結構形似金字…

收集飛花令碎片——C語言分支與循環語句(上)

前言 Hello,各位碼友&#xff0c;本章將會給大家帶來C語言的分支與循環整章串講&#xff0c;這一張的內容分為基礎知識和程序練習兩個部分 希望通過這一章能夠帶大家更好地去掌握C語言的分支與循環語句 大家一起努力吧 C語言分支與循環語句&#xff08;基礎知識&#xff09; C…

嵌入式硬件篇---TOF|PID

文章目錄 前言1. 硬件準備主控芯片ToF模塊1.VL53L0X2.TFmini 執行機構&#xff1a;電機舵機其他 2. 硬件連接(1) VL53L0X&#xff08;IC接口&#xff09;(2) TFmini&#xff08;串口通信&#xff09; 3. ToF模塊初始化與數據讀取(1) VL53L0X&#xff08;基于HAL庫&#xff09;(…

PCB設計實踐(十二)PCB設計電容選型:功能、材質、規則

在PCB設計中&#xff0c;電容作為基礎元件承擔著濾波、儲能、去耦、耦合等核心功能。其分類與使用規則直接影響電路穩定性、抗干擾能力和信號完整性。本文從工程實踐角度系統梳理PCB設計中電容的五大分類、選型規范及布局布線規則&#xff0c;幫助設計者構建科學的電容應用體系…

vue2關閉eslint

在項目根目錄下找到 vue.config.js 文件。如果沒有該文件&#xff0c;可以直接在項目根目錄創建一個。 2. 添加 lintOnSave: false 配置 module.exports {lintOnSave: false };

MyBatis 一對多關聯映射在Spring Boot中的XML配置

在Spring Boot中使用MyBatis實現一對多關系時&#xff0c;可以通過XML映射文件來配置。下面我將詳細介紹幾種實現方式。 基本概念 一對多關系指的是一個實體對象包含多個子對象集合的情況&#xff0c;例如&#xff1a; 一個部門有多個員工一個訂單有多個訂單項一個博客有多個…

基于Stable Diffusion XL模型進行文本生成圖像的訓練

基于Stable Diffusion XL模型進行文本生成圖像的訓練 flyfish export MODEL_NAME"stabilityai/stable-diffusion-xl-base-1.0" export VAE_NAME"madebyollin/sdxl-vae-fp16-fix" export DATASET_NAME"lambdalabs/naruto-blip-captions"acceler…

基于React的高德地圖api教程001:初始化地圖

文章目錄 1、初始化地圖1.1 創建react項目1.2 可視化地圖1.3 設置衛星地圖1.4 添加開關開啟3D地圖1.5 代碼下載1、初始化地圖 1.1 創建react項目 創建geodeapi項目: npx create-react-app gaodeapi安裝高德地圖包: npm install @amap/amap-jsapi-loader1.2 可視化地圖 在…

uniapp使用npm下載

uniapp的項目在使用HBuilder X創建時是不會有node_modules文件夾的&#xff0c;如下圖所示&#xff1a; 但是uni-app不管基于哪個框架&#xff0c;它內部一定是有node.js的&#xff0c;否則沒有辦法去實現框架層面的一些東西&#xff0c;只是說它略微有點差異。具體差異表現在…

輕量在線工具箱系統源碼 附教程

源碼介紹 輕量在線工具箱系統源碼,直接扔服務器 修改config/config.php文件里面的數據庫 后臺賬號admin 密碼admin123 本工具是AI寫的 所以工具均是第三方接口直接寫的。 需要加工具直接自己找接口寫好扔到goju目錄 后臺自動讀取 效果預覽 源碼獲取 輕量在線工具箱系統源…

圖解gpt之Seq2Seq架構與序列到序列模型

今天深入探討如何構建更強大的序列到序列模型&#xff0c;特別是Seq2Seq架構。序列到序列模型&#xff0c;顧名思義&#xff0c;它的核心任務就是將一個序列映射到另一個序列。這個序列可以是文本&#xff0c;也可以是其他符號序列。最早&#xff0c;人們嘗試用一個單一的RNN來…

mac M2能安裝的虛擬機和linux系統系統

能適配MAC M2芯片的虛擬機下Linux系統的搭建全是深坑&#xff0c;目前網上的資料能搜到的都是錯誤的&#xff0c;自己整理并分享給坑友們~ 網上搜索到的推薦安裝的改造過的centos7也無法進行yum操作&#xff0c;我這邊建議安裝centos8 VMware Fusion下載地址&#xff1a; htt…

「國產嵌入式仿真平臺:高精度虛實融合如何終結Proteus時代?」——從教學實驗到低空經濟,揭秘新一代AI賦能的產業級教學工具

引言&#xff1a;從Proteus到國產平臺的范式革新 在高校嵌入式實驗教學中&#xff0c;仿真工具的選擇直接影響學生的工程能力培養與創新思維發展。長期以來&#xff0c;Proteus作為經典工具占據主導地位&#xff0c;但其設計理念已難以滿足現代復雜系統教學與國產化技術需求。…

【Linux】在Arm服務器源碼編譯onnxruntime-gpu的whl

服務器信息&#xff1a; aarch64架構 ubuntu20.04 nvidia T4卡 編譯onnxruntime-gpu前置條件&#xff1a; 已經安裝合適的cuda已經安裝合適的cudnn已經安裝合適的cmake 源碼編譯onnxruntime-gpu的步驟 1. 下載源碼 git clone --recursive https://github.com/microsoft/o…