AI4CODE】3 Trae 錘一個貪吃蛇的小游戲

【AI4CODE】目錄

【AI4CODE】1 Trae CN 錐安裝配置與遷移

【AI4CODE】2 Trae 錘一個 To-Do-List


這次還是采用 HTML/CSS/JAVASCRIPT 技術棧 Trae 錘一個貪吃蛇的小游戲。
在這里插入圖片描述

1 環境準備

創建一個 Snake 的子文件夾,清除以前的會話記錄。
在這里插入圖片描述

2 開始構建

2.1 輸入會話提詞

比如:

用html/css/javascript技術棧構建一個簡潔美觀的貪吃蛇小游戲,要求有開始游戲按鈕,保存最高得分記錄到本地

2.2 思考過程

在這里插入圖片描述

2.3 構建過程

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

2.4 Live Server 啟動服務試試

畫面出來了,開始游戲發現,蛇的移動數據太快了,修改一下移動速度。
在這里插入圖片描述
輸入提詞:蛇的移動數據太快了

了解您希望調整貪吃蛇的移動速度。當前游戲邏輯使用requestAnimationFrame實現循環,可以通過添加移動間隔控制機制來調節速度。建議在update函數中增加時間間隔判斷,例如每200毫秒更新一次蛇的位置。同時保留原有動畫幀調用以保證畫面流暢。這樣既能保持畫面渲染流暢度,又能獨立控制蛇的移動速度。

現在為貪吃蛇游戲添加移動間隔控制機制來降低移動速度。將在game.js中新增lastMoveTime變量和時間間隔判斷邏輯,保持畫面流暢的同時實現速度控制。

2.5 OK 可以玩了

在這里插入圖片描述
蛇的移動移動速度,也可以自己修改 game.js的

const moveInterval = 300;

這里的單位是毫秒。

3 代碼貼出來

所有的代碼都 Trae 自動錘出來的,我沒有寫一行代碼,共三個代碼文件:index.html/game.js/style.css

3.1 Index.html

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>經典貪吃蛇</title><link rel="stylesheet" href="style.css">
</head>
<body><div class="game-container"><canvas id="gameCanvas" width="400" height="400"></canvas><div class="control-panel"><button id="startBtn" class="game-btn">開始游戲</button><div class="score-board"><span>當前得分:<span id="currentScore">0</span></span><span>最高得分:<span id="highScore">0</span></span></div></div></div><script src="game.js"></script>
</body>
</html>

3.2 Style.css

body {display: flex;justify-content: center;align-items: center;min-height: 100vh;margin: 0;background: #2c3e50;font-family: Arial, sans-serif;
}.game-container {position: relative;background: #ecf0f1;padding: 20px;border-radius: 10px;box-shadow: 0 0 20px rgba(0,0,0,0.3);
}#gameCanvas {border: 2px solid #34495e;
}.control-panel {margin-top: 20px;display: flex;flex-direction: column;align-items: center;
}.game-btn {padding: 12px 30px;font-size: 18px;background: #27ae60;color: white;border: none;border-radius: 5px;cursor: pointer;transition: background 0.3s;
}.game-btn:hover {background: #219a52;
}.score-board {margin-top: 15px;font-size: 16px;color: #2c3e50;display: flex;gap: 20px;
}@media (max-width: 480px) {#gameCanvas {width: 300px;height: 300px;}
}

3.3 Game.js

const canvas = document.getElementById('gameCanvas');
const ctx = canvas.getContext('2d');
const startBtn = document.getElementById('startBtn');
const currentScoreSpan = document.getElementById('currentScore');
const highScoreSpan = document.getElementById('highScore');const gridSize = 20;
let snake = [];
let food = {};
let direction = 'right';
let nextDirection = 'right';
let gameLoop;
let score = 0;
let highScore = localStorage.getItem('snakeHighScore') || 0;highScoreSpan.textContent = highScore;function initGame() {snake = [{x: 5, y: 5}];score = 0;currentScoreSpan.textContent = score;direction = 'right';nextDirection = 'right';generateFood();
}function generateFood() {food = {x: Math.floor(Math.random() * (canvas.width/gridSize)),y: Math.floor(Math.random() * (canvas.height/gridSize))};// 防止食物生成在蛇身上while(snake.some(segment => segment.x === food.x && segment.y === food.y)) {food = {x: Math.floor(Math.random() * (canvas.width/gridSize)),y: Math.floor(Math.random() * (canvas.height/gridSize))};}
}function update() {const head = {...snake[0]};direction = nextDirection;switch(direction) {case 'up': head.y--; break;case 'down': head.y++; break;case 'left': head.x--; break;case 'right': head.x++; break;}// 碰撞檢測if (head.x < 0 || head.x >= canvas.width/gridSize || head.y < 0 || head.y >= canvas.height/gridSize ||snake.some(segment => segment.x === head.x && segment.y === head.y)) {gameOver();return;}snake.unshift(head);// 吃食物if (head.x === food.x && head.y === food.y) {score += 10;currentScoreSpan.textContent = score;generateFood();} else {snake.pop();}
}function draw() {// 清空畫布ctx.fillStyle = '#ecf0f1';ctx.fillRect(0, 0, canvas.width, canvas.height);// 繪制蛇ctx.fillStyle = '#27ae60';snake.forEach(segment => {ctx.fillRect(segment.x*gridSize, segment.y*gridSize, gridSize-2, gridSize-2);});// 繪制食物ctx.fillStyle = '#e74c3c';ctx.fillRect(food.x*gridSize, food.y*gridSize, gridSize-2, gridSize-2);
}function gameOver() {cancelAnimationFrame(gameLoop);startBtn.textContent = '開始游戲';if (score > highScore) {highScore = score;localStorage.setItem('snakeHighScore', highScore);highScoreSpan.textContent = highScore;}
}// 事件監聽
let lastMoveTime = 0;
const moveInterval = 300;function animate(timestamp) {if (!lastMoveTime) {lastMoveTime = timestamp;}const elapsed = timestamp - lastMoveTime;if (elapsed >= moveInterval) {update();lastMoveTime = timestamp;}draw();gameLoop = requestAnimationFrame(animate);
}// 修改游戲啟動邏輯
startBtn.addEventListener('click', () => {if (!gameLoop) {initGame();startBtn.textContent = '暫停游戲';lastMoveTime = 0; // 重置計時器gameLoop = requestAnimationFrame(animate);} else {cancelAnimationFrame(gameLoop);gameLoop = null;startBtn.textContent = '繼續游戲';}
});// 鍵盤控制
document.addEventListener('keydown', (e) => {switch(e.key.toLowerCase()) {case 'arrowup':case 'w':if (direction !== 'down') nextDirection = 'up';break;case 'arrowdown':case 's':if (direction !== 'up') nextDirection = 'down';break;case 'arrowleft':case 'a':if (direction !== 'right') nextDirection = 'left';break;case 'arrowright':case 'd':if (direction !== 'left') nextDirection = 'right';break;}
});

本文完

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

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

相關文章

【簡答題002】Java變量簡答題

博主會經常補充完善這里面問題的答案。希望可以得到大家的一鍵三連支持&#xff0c;你的鼓勵是我堅持下去的最大動力&#xff01;謝謝&#xff01; 001 什么是Java變量&#xff1f; Java變量是用來存儲數據并在程序中引用的命名空間。 002 Java變量有哪些類型&#xff1f; J…

從零開發Chrome廣告攔截插件:開發、打包到發布全攻略

從零開發Chrome廣告攔截插件&#xff1a;開發、打包到發布全攻略 想打造一個屬于自己的Chrome插件&#xff0c;既能攔截煩人的廣告&#xff0c;又能優雅地發布到Chrome Web Store&#xff1f;別擔心&#xff0c;這篇教程將帶你從零開始&#xff0c;動手開發一個功能強大且美觀…

基于騰訊云高性能HAI-CPU的跨境電商客服助手全鏈路解析

跨境電商的背景以及痛點 根據Statista數據&#xff0c;2025年全球跨境電商市場規模預計達6.57萬億美元&#xff0c;年增長率保持在12.5% 。隨著平臺規則趨嚴&#xff08;如亞馬遜封店潮&#xff09;&#xff0c;更多賣家選擇自建獨立站&#xff0c;2024年獨立站占比已達35%。A…

maven的項目構建

常用構建命令 命令說明mvn clean清理編譯結果&#xff08;刪掉target目錄&#xff09;mvn compile編譯核心代碼&#xff0c;生成target目錄mvn test-compile編譯測試代碼&#xff0c;生成target目錄mvn test執行測試方法mvn package打包&#xff0c;生成jar或war文件mvn insta…

定時任務和分布式任務框架

文章目錄 一 Spring Task1.@Scheduled注解介紹2 基本用法(1)使用@EnableScheduling修飾啟動類(2)創建定時任務的類(3)fixedDelay(4)fixedRate(5)cron3 執行多個任務4 設置異步執行5 @Async使用自定義線程池6 缺點二 xxl-job介紹架構圖與其他任務調度平臺的比較運行調…

git安裝,配置SSH公鑰(查看版本、安裝路徑,更新版本)git常用指令

目錄 一、git下載安裝 1、下載git 2、安裝Git?&#xff1a; 二、配置SSH公鑰 三、查看安裝路徑、查看版本、更新版本 四、git常用指令 1、倉庫初始化與管理 2、配置 3、工作區與暫存區管理 4、提交 5、分支管理 6、遠程倉庫管理 7、版本控制 8、其他高級操作 一…

[Web]ServletContext域(Application)

簡介 Web應用的Application域的實現是通過ServletContext對象實現的。整個Web應用程序的所有資源共享這個域。生命周期與Web應用程序相同&#xff0c;即當前Web應用程序啟動時&#xff08;以服務器視角而非訪客視角&#xff09;出生&#xff0c;Web應用服務程序關閉時停止。 通…

qt c++ 進程和線程

在Qt C開發中&#xff0c;進程&#xff08;Process&#xff09;和線程&#xff08;Thread&#xff09;是兩種不同的并發模型&#xff0c;各有適用場景和實現方式。以下是詳細對比和實際開發中的用法總結&#xff1a; 一、進程&#xff08;Process&#xff09; 進程是操作系統資…

【鴻蒙開發】OpenHarmony調測工具hdc使用教程(設備開發者)

00. 目錄 文章目錄 00. 目錄01. OpenHarmony概述02. hdc簡介03. hdc獲取04. option相關的命令05. 查詢設備列表的命令06. 服務進程相關命令07. 網絡相關的命令08. 文件相關的命令09. 應用相關的命令10. 調試相關的命令11. 常見問題12. 附錄 01. OpenHarmony概述 OpenHarmony是…

手寫簡易Tomcat核心實現:深入理解Servlet容器原理

目錄 一、Tomcat概況 1. tomcat全局圖 2.項目結構概覽 二、實現步驟詳解 2.1 基礎工具包&#xff08;com.qcby.util&#xff09; 2.1.1 ResponseUtil&#xff1a;HTTP響應生成工具 2.1.2 SearchClassUtil&#xff1a;類掃描工具 2.1.3 WebServlet&#xff1a;自定義注解…

【Java開發指南 | 第三十四篇】IDEA沒有Java Enterprise——解決方法

讀者可訂閱專欄&#xff1a;Java開發指南 |【CSDN秋說】 文章目錄 1、新建Java項目2、單擊項目名&#xff0c;并連續按兩次shift鍵3、在搜索欄搜索"添加框架支持"4、勾選Web應用程序5、最終界面6、添加Tomcat 1、新建Java項目 2、單擊項目名&#xff0c;并連續按兩次…

在MATLAB中實現PID控制仿真

在MATLAB中實現PID控制仿真可以通過代碼編程或Simulink圖形化建模兩種方式完成。以下是兩種方法的詳細操作步驟和示例&#xff1a; 方法1&#xff1a;使用MATLAB腳本編程&#xff08;基于控制系統工具箱&#xff09; 步驟1&#xff1a;定義被控對象的數學模型 假設被控對象是…

Conda常用命令匯總

Conda 是一個流行的包管理器和環境管理工具&#xff0c;廣泛應用于數據科學、機器學習等領域。它可以幫助我們管理 Python 包以及不同版本的環境&#xff0c;避免包沖突&#xff0c;提升項目的可復現性。以下是一些常用的 Conda 命令&#xff0c;涵蓋環境創建、管理、包安裝等常…

大數據實時分析:ClickHouse、Doris、TiDB 對比分析

1. 引言 在大數據分析領域,實時分析需求越來越重要。ClickHouse、Doris 和 TiDB 作為當前流行的實時分析數據庫,各自針對不同的應用場景和數據特性進行了優化。本文將對比它們的核心架構、適用場景以及查詢優化方法,幫助數據開發人員選擇合適的工具。 2. 核心架構對比 2.…

藍橋杯歷年真題題解

1.軌道炮&#xff08;數學模擬&#xff09; #include <iostream> #include <map> using namespace std; const int N1010; int x[N],y[N],v[N]; char d[N]; int main() {int n;int ans-100;cin>>n;for(int i1;i<n;i)cin>>x[i]>>y[i]>>v…

Pytorch的一小步,昇騰芯片的一大步

Pytorch的一小步&#xff0c;昇騰芯片的一大步 相信在AI圈的人多多少少都看到了最近的信息&#xff1a;PyTorch最新2.1版本宣布支持華為昇騰芯片&#xff01; 1、 發生了什么事兒&#xff1f; 在2023年10月4日PyTorch 2.1版本的發布博客上&#xff0c;PyTorch介紹的beta版本…

嵌入式硬件篇---手柄控制控制麥克納姆輪子

文章目錄 前言1. 變量定義2. 搖桿死區設置3. 模式檢查4. 搖桿數據處理4.1 右搖桿垂直值&#xff08;psx_buf[7]&#xff09;4.2 右搖桿水平值&#xff08;psx_buf[8]&#xff09;4.3 左搖桿水平值&#xff08;psx_buf[5]&#xff09;4.4 左搖桿垂直值&#xff08;psx_buf[6]&am…

阿里千問大模型(Qwen2.5-VL-7B-Instruct)部署

參考鏈接 知乎帖子 B站視頻 huggingface 鏡像網站&#xff08;不太全&#xff0c;比如 Qwen/Qwen2.5-VL-7B-Instruct就沒有&#xff09; huggingface 5種下載方式匯總 通過huggingface-cli下載模型 不一樣的部分是預訓練權重的下載和demo 首先安裝huggingface_hub pip insta…

Jenkins在Windows上的使用(二):自動拉取、打包、部署

&#xff08;一&#xff09;Jenkins全局配置 訪問部署好的Jenkins服務器網址localhost:8080&#xff0c;完成默認插件的安裝后&#xff0c;接下來將使用SSH登錄遠程主機以實現自動化部署。 1. 配置插件 選擇dashboard->Manage Jenkins->plugins 安裝下面兩個插件  …

群暉DS 223 Docker:開啟私有云

群暉DS 223 Docker&#xff1a;開啟私有云的無限可能 引言 在數據存儲與管理的不斷演進中&#xff0c;群暉 DS 223 憑借其出色的性能和豐富的功能&#xff0c;成為眾多用戶搭建私有云的熱門選擇。而當它與 Docker 技術相遇&#xff0c;猶如為數據管理的舞臺添上了絢麗多彩的燈…