DeepSeek飛機大戰小游戲HTML5(附源碼)

用DeepSeek幫忙生成的飛機大戰小游戲網頁版,基于HTML5。
提示詞prompt
幫我做一個網頁版的飛機大戰游戲 html5的

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

游戲功能說明

玩家控制:
使用鍵盤方向鍵或WASD移動飛機
空格鍵發射子彈
移動設備支持觸摸控制
游戲機制:
敵機會從屏幕頂部隨機位置出現
擊中敵機獲得10分
隨著分數增加,敵機出現頻率會提高
碰到敵機游戲結束
界面:
開始界面
游戲界面(顯示當前分數)
結束界面(顯示最終分數)
如有需要,可進一步改進游戲。
將上述代碼保存為HTML文件,用瀏覽器打開即可開始游戲。
飛機大戰小游戲源碼如下:

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>飛機大戰</title><style>body {margin: 0;padding: 0;display: flex;justify-content: center;align-items: center;height: 100vh;background-color: #222;overflow: hidden;font-family: Arial, sans-serif;}#gameContainer {position: relative;width: 400px;height: 600px;background-color: #000;overflow: hidden;}#gameCanvas {background-color: #000;}#startScreen, #gameOverScreen {position: absolute;top: 0;left: 0;width: 100%;height: 100%;display: flex;flex-direction: column;justify-content: center;align-items: center;color: white;background-color: rgba(0, 0, 0, 0.7);}#gameOverScreen {display: none;}h1 {color: #ffcc00;margin-bottom: 30px;text-shadow: 0 0 10px #ff6600;}button {padding: 10px 20px;font-size: 18px;background-color: #ff6600;color: white;border: none;border-radius: 5px;cursor: pointer;transition: all 0.3s;}button:hover {background-color: #ff9900;transform: scale(1.05);}#scoreDisplay {position: absolute;top: 10px;left: 10px;color: white;font-size: 20px;z-index: 100;}</style>
</head>
<body><div id="gameContainer"><canvas id="gameCanvas" width="400" height="600"></canvas><div id="scoreDisplay">分數: 0</div><div id="startScreen"><h1>飛機大戰</h1><button id="startButton">開始游戲</button></div><div id="gameOverScreen"><h1>游戲結束</h1><p id="finalScore">最終分數: 0</p><button id="restartButton">重新開始</button></div></div><script>// 游戲變量const canvas = document.getElementById('gameCanvas');const ctx = canvas.getContext('2d');const startScreen = document.getElementById('startScreen');const gameOverScreen = document.getElementById('gameOverScreen');const startButton = document.getElementById('startButton');const restartButton = document.getElementById('restartButton');const scoreDisplay = document.getElementById('scoreDisplay');const finalScoreDisplay = document.getElementById('finalScore');let gameRunning = false;let score = 0;// 玩家飛機const player = {x: canvas.width / 2 - 25,y: canvas.height - 80,width: 50,height: 50,speed: 5,color: '#3498db',isMovingLeft: false,isMovingRight: false,isMovingUp: false,isMovingDown: false};// 子彈數組let bullets = [];const bulletSpeed = 7;const bulletSize = 5;// 敵機數組let enemies = [];const enemySpeed = 2;let enemySpawnRate = 60; // 幀數// 游戲循環變量let animationId;let frameCount = 0;// 初始化游戲function initGame() {score = 0;scoreDisplay.textContent = `分數: ${score}`;bullets = [];enemies = [];frameCount = 0;player.x = canvas.width / 2 - 25;player.y = canvas.height - 80;gameRunning = true;startScreen.style.display = 'none';gameOverScreen.style.display = 'none';gameLoop();}// 游戲主循環function gameLoop() {if (!gameRunning) return;update();render();animationId = requestAnimationFrame(gameLoop);}// 更新游戲狀態function update() {// 移動玩家if (player.isMovingLeft && player.x > 0) {player.x -= player.speed;}if (player.isMovingRight && player.x < canvas.width - player.width) {player.x += player.speed;}if (player.isMovingUp && player.y > 0) {player.y -= player.speed;}if (player.isMovingDown && player.y < canvas.height - player.height) {player.y += player.speed;}// 移動子彈for (let i = bullets.length - 1; i >= 0; i--) {bullets[i].y -= bulletSpeed;// 移除超出屏幕的子彈if (bullets[i].y < 0) {bullets.splice(i, 1);}}// 生成敵機frameCount++;if (frameCount % enemySpawnRate === 0) {spawnEnemy();// 隨著分數增加,敵機生成速度加快if (enemySpawnRate > 20) {enemySpawnRate = Math.max(20, 60 - Math.floor(score / 10));}}// 移動敵機for (let i = enemies.length - 1; i >= 0; i--) {enemies[i].y += enemies[i].speed;// 移除超出屏幕的敵機if (enemies[i].y > canvas.height) {enemies.splice(i, 1);}}// 檢測碰撞:子彈和敵機for (let i = bullets.length - 1; i >= 0; i--) {for (let j = enemies.length - 1; j >= 0; j--) {if (checkCollision(bullets[i], enemies[j])) {// 移除子彈和敵機bullets.splice(i, 1);enemies.splice(j, 1);// 增加分數score += 10;scoreDisplay.textContent = `分數: ${score}`;break;}}}// 檢測碰撞:玩家和敵機for (let i = enemies.length - 1; i >= 0; i--) {if (checkCollision(player, enemies[i])) {gameOver();break;}}}// 渲染游戲function render() {// 清空畫布ctx.clearRect(0, 0, canvas.width, canvas.height);// 繪制背景ctx.fillStyle = '#000033';ctx.fillRect(0, 0, canvas.width, canvas.height);// 繪制星星背景drawStars();// 繪制玩家drawPlayer();// 繪制子彈drawBullets();// 繪制敵機drawEnemies();}// 繪制玩家飛機function drawPlayer() {ctx.fillStyle = player.color;// 機身ctx.beginPath();ctx.moveTo(player.x + player.width / 2, player.y);ctx.lineTo(player.x + player.width, player.y + player.height);ctx.lineTo(player.x, player.y + player.height);ctx.closePath();ctx.fill();// 機翼裝飾ctx.fillStyle = '#2980b9';ctx.beginPath();ctx.moveTo(player.x + player.width / 2, player.y + 10);ctx.lineTo(player.x + player.width - 10, player.y + player.height - 10);ctx.lineTo(player.x + 10, player.y + player.height - 10);ctx.closePath();ctx.fill();}// 繪制子彈function drawBullets() {ctx.fillStyle = '#ffcc00';bullets.forEach(bullet => {ctx.beginPath();ctx.arc(bullet.x, bullet.y, bullet.size, 0, Math.PI * 2);ctx.fill();});}// 繪制敵機function drawEnemies() {enemies.forEach(enemy => {ctx.fillStyle = enemy.color;// 機身ctx.beginPath();ctx.moveTo(enemy.x, enemy.y);ctx.lineTo(enemy.x + enemy.width, enemy.y);ctx.lineTo(enemy.x + enemy.width / 2, enemy.y + enemy.height);ctx.closePath();ctx.fill();// 機翼裝飾ctx.fillStyle = '#c0392b';ctx.beginPath();ctx.moveTo(enemy.x + 5, enemy.y + 5);ctx.lineTo(enemy.x + enemy.width - 5, enemy.y + 5);ctx.lineTo(enemy.x + enemy.width / 2, enemy.y + enemy.height - 5);ctx.closePath();ctx.fill();});}// 繪制星星背景function drawStars() {ctx.fillStyle = 'white';for (let i = 0; i < 100; i++) {const x = Math.random() * canvas.width;const y = (frameCount + i * 100) % canvas.height;const size = Math.random() * 2;ctx.beginPath();ctx.arc(x, y, size, 0, Math.PI * 2);ctx.fill();}}// 生成敵機function spawnEnemy() {const size = 30 + Math.random() * 20;const enemy = {x: Math.random() * (canvas.width - size),y: -size,width: size,height: size,speed: enemySpeed + Math.random() * 2,color: '#e74c3c'};enemies.push(enemy);}// 發射子彈function fireBullet() {if (!gameRunning) return;const bullet = {x: player.x + player.width / 2,y: player.y,size: bulletSize};bullets.push(bullet);}// 碰撞檢測function checkCollision(obj1, obj2) {return obj1.x < obj2.x + obj2.width &&obj1.x + (obj1.width || obj1.size) > obj2.x &&obj1.y < obj2.y + obj2.height &&obj1.y + (obj1.height || obj1.size) > obj2.y;}// 游戲結束function gameOver() {gameRunning = false;cancelAnimationFrame(animationId);finalScoreDisplay.textContent = `最終分數: ${score}`;gameOverScreen.style.display = 'flex';}// 事件監聽startButton.addEventListener('click', initGame);restartButton.addEventListener('click', initGame);// 鍵盤控制document.addEventListener('keydown', (e) => {if (!gameRunning) return;switch (e.key) {case 'ArrowLeft':case 'a':player.isMovingLeft = true;break;case 'ArrowRight':case 'd':player.isMovingRight = true;break;case 'ArrowUp':case 'w':player.isMovingUp = true;break;case 'ArrowDown':case 's':player.isMovingDown = true;break;case ' ':fireBullet();break;}});document.addEventListener('keyup', (e) => {switch (e.key) {case 'ArrowLeft':case 'a':player.isMovingLeft = false;break;case 'ArrowRight':case 'd':player.isMovingRight = false;break;case 'ArrowUp':case 'w':player.isMovingUp = false;break;case 'ArrowDown':case 's':player.isMovingDown = false;break;}});// 觸摸控制(移動設備)let touchX = 0;canvas.addEventListener('touchstart', (e) => {if (!gameRunning) return;e.preventDefault();touchX = e.touches[0].clientX;// 觸摸屏幕上半部分發射子彈if (e.touches[0].clientY < canvas.height / 2) {fireBullet();}});canvas.addEventListener('touchmove', (e) => {if (!gameRunning) return;e.preventDefault();const newTouchX = e.touches[0].clientX;const deltaX = newTouchX - touchX;player.x += deltaX;// 限制玩家不超出屏幕if (player.x < 0) player.x = 0;if (player.x > canvas.width - player.width) {player.x = canvas.width - player.width;}touchX = newTouchX;});// 點擊屏幕發射子彈(移動設備)canvas.addEventListener('click', (e) => {if (!gameRunning) return;// 點擊屏幕上半部分發射子彈if (e.clientY < canvas.height / 2) {fireBullet();}});</script>
</body>
</html>

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

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

相關文章

全素山藥開發指南:從防癢處理到高可用食譜架構

摘要&#xff1a;本文系統性解析山藥的化學特性&#xff08;黏液蛋白/皂苷致癢機制&#xff09;及全素場景下的烹飪解決方案&#xff0c;提供6種高內聚低耦合的食譜實現&#xff0c;附完整防氧化與黏液控制技術方案。一、核心問題分析&#xff1a;山藥處理中的“痛點”致癢物質…

OpenLayers 入門指南:序言

本專欄旨在幫助零GIS基礎的開發人員系統掌握OpenLayers這一強大的開源Web地圖庫&#xff0c;通過 “理論實戰” 結合的方式&#xff0c;逐步實現從創建地圖到構建一個基礎地圖應用模版。無論你是前端開發者、GIS愛好者&#xff0c;都可以通過此專欄零基礎開始用OpenLayers開發一…

WebRTC輕量學習 libdatachannel

最近想了解一些在瀏覽器中推送音視頻流&#xff0c;尋找很多版本的代碼&#xff0c;C、Go、Python等語言實現的webRTC協議。 按照搭建難度和快速實現首選Python版本的WebRTC&#xff0c;這種是最適合原型開發的。 選型&#xff1a;C的開源庫libdatachannel Python的開源庫Ai…

Vue2中的keep-alive:組件狀態緩存與性能優化實戰指南

目錄 一、什么是keep-alive&#xff1f; 與普通組件切換的對比 二、核心用法詳解 1. 基礎用法&#xff1a;動態組件緩存 2. 路由視圖緩存 3. 生命周期鉤子 三、進階配置與優化 1. 精準控制緩存組件 &#xff08;1&#xff09;include/exclude屬性 &#xff08;2&…

FastAPI安全加固:密鑰輪換、限流策略與安全頭部如何實現三重防護?

url: /posts/f96ba438de34dc197fd2598f91ae133d/ title: FastAPI安全加固:密鑰輪換、限流策略與安全頭部如何實現三重防護? date: 2025-07-02T22:05:04+08:00 lastmod: 2025-07-02T22:05:04+08:00 author: cmdragon summary: FastAPI框架安全加固方案包括密鑰輪換自動化、請…

NeighborGeo:基于鄰居的IP地理定位(五)

NeighborGeo:基于neighbors的IP地理定位 X. Wang, D. Zhao, X. Liu, Z. Zhang, T. Zhao, NeighborGeo: IP geolocation based on neighbors, Comput. Netw. 257 (2025) 110896, 5. Case analysis 為了說明NeighborGeo在優化圖結構和利用鄰居信息進行預測方面的優勢,將目標I…

Ethernet IP與Profinet共舞:網關驅動綠色工業的智慧脈動

Ethernet IP與Profinet共舞&#xff1a;驅動綠色工業的智慧脈動 光伏建筑一體化&#xff0c;建筑碳中和&#xff0c;在全球氣候變化、國家碳達峰碳中和戰略大背景下&#xff0c;敬畏生活、生產與自然和諧共處&#xff0c;確立自身資源循環高效利用的倒計時和路線圖。 在全球氣…

衡石科技破解指標管理技術難題:語義層建模如何實現業務與技術語言對齊?

在數字化轉型的深水區&#xff0c;企業指標管理體系普遍面臨一個核心矛盾&#xff1a;業務部門需要敏捷的數據洞察支撐決策&#xff0c;而IT部門卻受困于復雜的數據架構和冗長的需求響應周期。這種矛盾的本質&#xff0c;是傳統指標管理體系中“技術語言”與“業務語言”的割裂…

正品庫拍照PWA應用的實現與性能優化|得物技術

一、 背景與難點 背景 目前得物ERP主要鑒別流程&#xff0c;是通過鑒別師鑒別提需到倉庫&#xff0c;倉庫庫工去進行商品補圖拍照&#xff0c;現有正品庫59%的人力投入在線下商品借取/歸還業務的操作端&#xff0c;目前&#xff0c;線下借取的方式會占用商品資源&#xff0c…

如何使用python識別出文件夾中全是圖片合成的的PDF,并將其移動到指定文件夾

引言 在現代數字化工作流程中&#xff0c;無論是為機器學習模型處理數據&#xff0c;還是進行數字歸檔&#xff0c;區分原生文本 PDF&#xff08;例如&#xff0c;由文字處理器生成的報告&#xff09;和基于圖像的 PDF&#xff08;例如&#xff0c;掃描的發票、檔案文件&#…

淘系怎么做?

首先&#xff0c;要明確一點就是&#xff0c;補單不是“刷/單”&#xff0c;補單是為了給買家營造一個良好的購物氛圍&#xff0c;畢竟再好的產品沒有排名、沒有權重&#xff0c;買家根本都沒有機會看到你的產品&#xff0c;而且只有讓淘寶感覺的產品有扶持必要它才會給你對應的…

網安系列【6】之[特殊字符] SQL注入揭秘:從入門到防御實戰指南

文章目錄一 真實案例二 SQL注入三 為什么危害堪比核彈&#xff1f;四 深入解剖攻擊原理&#x1f3af; 4.1&#xff1a;探測SQL漏洞的存在&#x1f3af; 4.2&#xff1a;數據庫信息探測&#x1f3af; 4.3&#xff1a;數據庫信息探測&#x1f3af; 4.4&#xff1a;數據庫信息進一…

Windows內核并發優化

Windows內核并發優化通過多層次技術手段提升多核環境下的系統性能&#xff0c;以下是關鍵技術實現方案&#xff1a; 一、內核鎖機制優化? 精細化鎖策略? 采用自旋鎖&#xff08;Spinlock&#xff09;替代信號量處理短臨界區&#xff0c;減少線程切換開銷 對共享資源實施讀…

【數據結構】 排序算法

【數據結構】 排序算法 一、排序1.1 排序是什么&#xff1f;1.2 排序的應用1.3 常見排序算法二、常見排序算法的實現2.1 插入排序2.1.1 直接插入排序2.1.2 希爾排序2.2 選擇排序2.2.1 直接選擇排序2.2.1.1 方法12.2.1.1 方法22.2.2 堆排序&#xff08;數組形式&#xff09;2.3 …

NumPy-核心函數np.matmul()深入解析

NumPy-核心函數np.matmul深入解析 一、矩陣乘法的本質與np.matmul()的設計目標1. 數學定義&#xff1a;從二維到多維的擴展2. 設計目標 二、np.matmul()核心語法與參數解析函數簽名核心特性 三、多維場景下的核心運算邏輯1. 二維矩陣乘法&#xff1a;基礎用法2. 一維向量與二維…

突破政務文檔理解瓶頸:基于多模態大模型的智能解析系統詳解

重磅推薦專欄&#xff1a; 《大模型AIGC》 《課程大綱》 《知識星球》 本專欄致力于探索和討論當今最前沿的技術趨勢和應用領域&#xff0c;包括但不限于ChatGPT、DeepSeek、Stable Diffusion等。我們將深入研究大型模型的開發和應用&#xff0c;以及與之相關的人工智能生成內容…

深入探討支持向量機(SVM)在乳腺癌X光片分類中的應用及實現

?? 博主簡介:CSDN博客專家、CSDN平臺優質創作者,高級開發工程師,數學專業,10年以上C/C++, C#, Java等多種編程語言開發經驗,擁有高級工程師證書;擅長C/C++、C#等開發語言,熟悉Java常用開發技術,能熟練應用常用數據庫SQL server,Oracle,mysql,postgresql等進行開發應用…

九、K8s污點和容忍

九、K8s污點和容忍 文章目錄九、K8s污點和容忍1、污點&#xff08;Taint&#xff09;和容忍&#xff08;Toleration&#xff09;1.1 什么是污點&#xff08;Taint&#xff09;&#xff1f;1.2 什么是容忍&#xff08;Toleration&#xff09;&#xff1f;1.3 污點的影響效果&…

基于開源AI智能名片鏈動2+1模式S2B2C商城小程序的超級文化符號構建路徑研究

摘要&#xff1a;在數字技術重構文化傳播生態的背景下&#xff0c;超級文化符號的塑造已突破傳統IP運營框架。本文以開源AI智能名片鏈動21模式與S2B2C商城小程序的融合創新為切入點&#xff0c;結合"嶼光生活"體驗館、快手燒烤攤主等典型案例&#xff0c;提出"技…

QT 日志 - qInstallMessageHandler將qDebug()打印內容輸出到文件

在編程開發中&#xff0c;日志功能至關重要&#xff0c;對于在開發期間或者是程序上線后&#xff0c;都有助于排查問題&#xff1b; 對于C/C和QT方向&#xff0c;日志庫有log4cpp、plog、log4qt等&#xff0c;本篇文章將使用qt自帶的日志方式去實現。 定義日志函數&#xff1a…