Marscode AI辅助编程

直接使用Marscode的云服务来开发,也是很方便的,不用担心配置环境的问题,很适合初步学习,在任何设备都能开发。

番茄钟

请你基于html、tailwind css和javascript,帮我设计一个“番茄时钟”。要求UI简洁美观大方,同时具有呼吸感,点击开始计时、点击暂停计时和重置计时的功能能够完美实现

使用这个提示词就能在网页上运行一个自己的番茄钟

点击各个按钮,看是否都正常运作,确实可以

井字棋

请你基于html、tailwind css和javascript,帮我设计一个“井字棋游戏”。要求UI简洁美观大方,同时具有呼吸感,人类玩家以及电脑玩家放置棋子,游戏胜负平局判定条件能够完美实现

没有出现bug,那我们就可以继续加功能了

大家跑出来的功能电脑下棋能力,可能是随机找空位下棋。

我们可以设置电脑玩家的逻辑,比如堵住我们不让我们三连。

新规则

我这里想要更新的玩法

我希望减少平局的消失,场上只会同时存在n个棋子,多余的棋子按时间顺序消失。先输入n的数值,然后开始游戏

发现他用python而不是html了,我们选中代码,右键和ai助手聊天

结果失败了。我决定重新整理提示词再发送一遍。

请你基于html、tailwind css和javascript,帮我设计一个“井字棋游戏”。要求UI简洁美观大方,同时具有呼吸感,人类玩家以及电脑玩家放置棋子,游戏胜负平局判定条件能够完美实现。我希望减少平局的消失,场上只会同时存在n个棋子,多余的棋子按时间顺序消失。先输入n的数值,然后开始游戏

失败了,我设置n=8,八个棋子就不让下了

请你把设置n值解释清楚,然后放在更显目的位置,未设置则是普通模式

出现了错误内容,我们可以把不要的内容点击删除,重新发送即可

我发现目前过长的程序会导致格式错乱

再解决了问题后,又发现了AI理解提示词的问题

这时候要重新强调自己想要做的东西

最终提示词(新规则井字棋)

(marscode目前一次性生成还是有点困难的,大家可以试试看能不能做出来一个完整的游戏哦)

你是一个大厂程序员,请仔细思考后,一步一步帮我完成这个代码,禁止给我不完整的代码。在每个功能后面要写上注释。# 井字棋游戏## 游戏设置界面(要求UI简洁美观大方,)
- **输入框**:提供一个输入框让用户输入`n`的数值(5到8),确定棋盘上同时存在的棋子数量。
- **规则说明**:第`n+1`个棋子放下时,第1个棋子会被清除;依次类推,第`n+2`个棋子放下时,第2个棋子会被清除,以此类推。
- **设置说明**:设置成功显示后,刷新游戏重新开始## 棋盘设计
- **网格系统**:创建一个3x3的棋盘。
- **颜色交替**:棋盘格子应该有交替的颜色,以提高可读性。
- **动画效果**:棋盘应该有动画效果,比如棋子放置时的放大或缩小,以增加呼吸感。## 棋子设计
- **棋子区分**:设计两种棋子,一种代表人类玩家,另一种代表电脑玩家。
- **按钮样式**:使棋子具有现代感。## 游戏逻辑
- **JavaScript处理**:使用JavaScript来处理游戏逻辑,包括棋子的放置、消失规则以及胜负平局的判定。
- **自主下棋**:电脑玩家能够根据预设策略自主下棋。## 交互设计
- **流畅交互**:确保用户和电脑玩家的交互流畅,棋子的放置应该具有呼吸感。
- **电脑策略**:电脑玩家的棋子放置应该有随机性,但也要有一定的策略。## 胜负平局判定
- **判定函数**:实现一个函数来判断游戏的胜负平局条件。
- **结果通知**:当游戏结束时,显示一个模态框通知用户结果。

参考代码(新规则井字棋)

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="styles.css">
</head>
<body><!-- 游戏设置区域 --><div class="settings-container"><h1>高级井字棋</h1><div class="settings-form"><label for="pieceCount">同时存在的棋子数量(5-8):</label><input type="number" id="pieceCount" min="5" max="8" value="5"><button id="startGame">开始游戏</button></div><div class="rules"><h3>游戏规则:</h3><p>1. 设置N个同时存在的棋子(5-8个)</p><p>2. 放下第N+1个棋子时,第1个棋子会消失</p><p>3. 三子连成一线即可获胜</p></div></div><!-- 游戏主区域 --><div class="game-container" style="display: none;"><div class="board"><div class="cell" data-index="0"></div><div class="cell" data-index="1"></div><div class="cell" data-index="2"></div><div class="cell" data-index="3"></div><div class="cell" data-index="4"></div><div class="cell" data-index="5"></div><div class="cell" data-index="6"></div><div class="cell" data-index="7"></div><div class="cell" data-index="8"></div></div><button id="resetGame">重新开始</button></div><!-- 游戏结果弹窗 --><div id="gameResult" class="modal"><div class="modal-content"><h2 id="resultText"></h2><button id="playAgain">再玩一次</button></div></div><script src="script.js"></script>
</body>
</html> 

JavaScript

class TicTacToe {constructor() {// 初始化游戏状态this.currentPlayer = 'x'; // x代表玩家,o代表电脑this.board = Array(9).fill('');this.moveHistory = []; // 记录移动历史this.maxPieces = 5; // 默认同时存在的棋子数量this.gameActive = false;// 获取DOM元素this.cells = document.querySelectorAll('.cell');this.modal = document.getElementById('gameResult');this.resultText = document.getElementById('resultText');// 绑定事件处理器this.initializeEventListeners();}// 初始化事件监听器initializeEventListeners() {// 开始游戏按钮document.getElementById('startGame').addEventListener('click', () => {const pieceCount = document.getElementById('pieceCount').value;this.startGame(parseInt(pieceCount));});// 棋盘点击事件this.cells.forEach(cell => {cell.addEventListener('click', () => {if (this.gameActive) {this.handleCellClick(cell);}});});// 重新开始按钮document.getElementById('resetGame').addEventListener('click', () => {this.resetGame();});// 再玩一次按钮document.getElementById('playAgain').addEventListener('click', () => {this.modal.style.display = 'none';this.resetGame();});}// 开始新游戏startGame(pieceCount) {if (pieceCount >= 5 && pieceCount <= 8) {this.maxPieces = pieceCount;this.gameActive = true;document.querySelector('.settings-container').style.display = 'none';document.querySelector('.game-container').style.display = 'block';this.resetGame();} else {alert('请输入5-8之间的数字!');}}// 处理玩家点击棋格handleCellClick(cell) {const index = cell.dataset.index;if (this.board[index] === '' && this.currentPlayer === 'x') {this.makeMove(index);// 检查游戏状态if (this.checkWinner()) {this.endGame('恭喜你赢了!');return;}// 电脑回合setTimeout(() => {if (this.gameActive) {this.computerMove();}}, 500);}}// 执行移动makeMove(index) {this.board[index] = this.currentPlayer;this.cells[index].classList.add(this.currentPlayer);this.moveHistory.push(index);// 检查是否需要移除最早的棋子if (this.moveHistory.length > this.maxPieces) {const removeIndex = this.moveHistory.shift();this.board[removeIndex] = '';this.cells[removeIndex].classList.remove('x', 'o');}this.currentPlayer = this.currentPlayer === 'x' ? 'o' : 'x';}// 电脑移动策略computerMove() {// 寻找最佳移动位置const bestMove = this.findBestMove();if (bestMove !== -1) {this.makeMove(bestMove);if (this.checkWinner()) {this.endGame('电脑赢了!');return;}}}// 查找最佳移动位置findBestMove() {// 首先检查是否能赢for (let i = 0; i < 9; i++) {if (this.board[i] === '') {this.board[i] = 'o';if (this.checkWinner()) {this.board[i] = '';return i;}this.board[i] = '';}}// 检查是否需要阻止玩家赢for (let i = 0; i < 9; i++) {if (this.board[i] === '') {this.board[i] = 'x';if (this.checkWinner()) {this.board[i] = '';return i;}this.board[i] = '';}}// 随机选择一个空位const emptyPositions = this.board.map((cell, index) => cell === '' ? index : -1).filter(index => index !== -1);if (emptyPositions.length > 0) {return emptyPositions[Math.floor(Math.random() * emptyPositions.length)];}return -1;}// 检查获胜条件checkWinner() {const winPatterns = [[0, 1, 2], [3, 4, 5], [6, 7, 8], // 横向[0, 3, 6], [1, 4, 7], [2, 5, 8], // 纵向[0, 4, 8], [2, 4, 6] // 对角线];return winPatterns.some(pattern => {const [a, b, c] = pattern;return this.board[a] && this.board[a] === this.board[b] && this.board[a] === this.board[c];});}// 结束游戏endGame(message) {this.gameActive = false;this.resultText.textContent = message;this.modal.style.display = 'flex';}// 重置游戏resetGame() {this.board = Array(9).fill('');this.moveHistory = [];this.currentPlayer = 'x';this.gameActive = true;this.cells.forEach(cell => {cell.classList.remove('x', 'o', 'win');});}
}// 初始化游戏
document.addEventListener('DOMContentLoaded', () => {new TicTacToe();
}); 

css

/* 全局样式 */
* {margin: 0;padding: 0;box-sizing: border-box;
}body {font-family: Arial, sans-serif;display: flex;flex-direction: column;align-items: center;min-height: 100vh;background-color: #f0f2f5;padding: 20px;
}/* 设置区域样式 */
.settings-container {background: white;padding: 20px;border-radius: 10px;box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);margin-bottom: 20px;text-align: center;
}.settings-form {margin: 20px 0;
}input[type="number"] {padding: 8px;margin: 0 10px;border: 1px solid #ddd;border-radius: 4px;
}button {padding: 10px 20px;background-color: #4CAF50;color: white;border: none;border-radius: 4px;cursor: pointer;transition: background-color 0.3s;
}button:hover {background-color: #45a049;
}/* 游戏棋盘样式 */
.game-container {background: white;padding: 20px;border-radius: 10px;box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}.board {display: grid;grid-template-columns: repeat(3, 1fr);gap: 10px;background-color: #34495e;padding: 10px;border-radius: 10px;
}.cell {width: 100px;height: 100px;background-color: white;border-radius: 8px;cursor: pointer;display: flex;align-items: center;justify-content: center;font-size: 40px;transition: all 0.3s ease;
}.cell:hover {background-color: #f5f5f5;
}/* 棋子样式 */
.cell.x::before {content: "×";color: #e74c3c;
}.cell.o::before {content: "○";color: #3498db;
}/* 胜利时的动画效果 */
.cell.win {background-color: #2ecc71;color: white;
}/* 模态框样式 */
.modal {display: none;position: fixed;top: 0;left: 0;width: 100%;height: 100%;background-color: rgba(0, 0, 0, 0.5);align-items: center;justify-content: center;
}.modal-content {background-color: white;padding: 20px;border-radius: 10px;text-align: center;
}/* 动画效果 */
@keyframes place-piece {0% { transform: scale(0); }100% { transform: scale(1); }
}.cell.x::before,
.cell.o::before {animation: place-piece 0.3s ease-out;
} 

总结

用AI编程,做些有意思的小项目真是又简单又快捷,只需要做好提示词工程就可以了!

课程来源:Datawhale冬令营

Datawhale-AI活动

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/494754.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Debian 12 安装配置 fail2ban 保护 SSH 访问

背景介绍 双十一的时候薅羊毛租了台腾讯云的虚机, 是真便宜, 只是没想到才跑了一个月, 系统里面就收集到了巨多的 SSH 恶意登录失败记录. 只能说, 互联网真的是太不安全了. 之前有用过 fail2ban 在 CentOS 7 上面做过防护, 不过那已经是好久好久之前的故事了, 好多方法已经不…

idea2024创建JavaWeb项目以及配置Tomcat详解

今天呢&#xff0c;博主的学习进度也是步入了JavaWeb&#xff0c;目前正在逐步杨帆旗航&#xff0c;迎接全新的狂潮海浪。 那么接下来就给大家出一期有关JavaWeb的配置教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正…

Canoe E2E校验自定义Checksum算法

文章目录 一、添加 DBC文件二、导入要仿真的ECU节点三、编写 CAPL脚本1. 创建 .can 文件2. 设置counter递增3. 设置 CRC 算法&#xff0c;以profile01 8-bit SAE J1850 CRC校验为例 四、开始仿真五、运行结果CRC在线校验 当E2E的 CRC算法非常规算法&#xff0c;则需要自己编写代…

PyTorch 神经网络回归(Regression)任务:关系拟合与优化过程

PyTorch 神经网络回归&#xff08;Regression&#xff09;任务&#xff1a;关系拟合与优化过程 本教程介绍了如何使用 PyTorch 构建一个简单的神经网络来实现关系拟合&#xff0c;具体演示了从数据准备到模型训练和可视化的完整过程。首先&#xff0c;利用一维线性空间生成带噪…

【uni-app】2025最新uni-app一键登录保姆级教程(包含前后端获取手机号方法)(超强避坑指南)

前言&#xff1a; 最近在配置uni-app一键登录时遇到了不少坑&#xff0c;uni-app的配套文档较为混乱&#xff0c;并且有部分更新的内容也没有及时更改在文档上&#xff0c;导致部分开发者跟着uni-app配套文档踩坑&#xff01;而目前市面上的文章质量也层次不齐&#xff0c;有的…

干货分享:ISO 20000认证的适用范围、认证资料清单、认证流程等问题详解

编辑&#xff1a;石芸姗 审核&#xff1a;贺兆普 在当今这个数字化时代&#xff0c;信息技术&#xff08;IT&#xff09;已成为企业运营与发展的核心驱动力。随着技术的不断进步和业务需求的日益复杂&#xff0c;企业对IT服务的质量、效率及安全性提出了更高要求。 信息技术服…

Element-plus表格使用总结

这里我使用的是Vue工程进行开发学习&#xff0c;安装需要通过包管理器进行下载 npm install element-plus --save 然后在main.js中配置文件即可使用&#xff0c;如果在引入index.css时没有提示&#xff0c;无需担心&#xff0c;直接写index.css即可导入样式。 Table表格 表格…

CNN和Transfomer介绍

文章目录 CNN和Transfomer介绍CNN和Transfomer的区别1. **基本概念**2. **数据处理方式**3. **模型结构差异**4. **应用场景区别** 自注意力机制1. **自注意力机制的概念**2. **自注意力机制的实现步骤**3. **自注意力机制的优势** Transformer结构组成1. **多头注意力层&#…

如何解决 ‘adb‘ 不是内部或外部命令,也不是可运行的程序或批处理文件的问题

在cmd中输入 adb &#xff0c;显示 ‘adc‘ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件的问题 解决办法&#xff1a;在环境变量中添加adb所在的路径 1、找到 adb.exe 的所在的文件路径&#xff0c;一般在 Android 安装目录下 \sdk\platform-tools\adb.exe…

数据结构---------二叉树前序遍历中序遍历后序遍历

以下是用C语言实现二叉树的前序遍历、中序遍历和后序遍历的代码示例&#xff0c;包括递归和非递归&#xff08;借助栈实现&#xff09;两种方式&#xff1a; 1. 二叉树节点结构体定义 #include <stdio.h> #include <stdlib.h>// 二叉树节点结构体 typedef struct…

网络架构与IP技术:4K/IP演播室制作的关键支撑

随着科技的不断发展&#xff0c;广播电视行业也在不断迭代更新&#xff0c;其中4K/IP演播室技术的应用成了一个引人注目的焦点。4K超高清技术和IP网络技术的结合&#xff0c;不仅提升了节目制作的画质和效果&#xff0c;还为节目制作带来了更高的效率和灵活性。那么4K超高清技术…

MySQL 8.0:explain analyze 分析 SQL 执行过程

介绍 MySQL 8.0.16 引入一个实验特性&#xff1a;explain formattree &#xff0c;树状的输出执行过程&#xff0c;以及预估成本和预估返 回行数。在 MySQL 8.0.18 又引入了 EXPLAIN ANALYZE&#xff0c;在 formattree 基础上&#xff0c;使用时&#xff0c;会执行 SQL &#…

观察者模式(sigslot in C++)

大家&#xff0c;我是东风&#xff0c;今天抽点时间整理一下我很久前关注的一个不错的库&#xff0c;可以支持我们在使用标准C的时候使用信号槽机制进行观察者模式设计&#xff0c;sigslot 官网&#xff1a; http://sigslot.sourceforge.net/ 本文较为详尽探讨了一种观察者模…

【已解决】黑马点评项目Redis版本替换过程中误删数据库后前端显示出现的问题

为了实现基于Redis的Stream结构作为消息队列&#xff0c;实现异步秒杀下单的功能&#xff0c;换Redis版本 Redis版本太旧了&#xff0c;所以从3.2.1换成了5.0.14 此时犯了一个大忌&#xff0c;因为新的Redis打开后&#xff0c;没有缓存&#xff0c;不知道出了什么问题&#xf…

基于Spring Boot的九州美食城商户一体化系统

一、系统背景与目标 随着美食城行业的快速发展&#xff0c;传统的管理方式已经难以满足日益增长的管理需求和用户体验要求。因此&#xff0c;九州美食城商户一体化系统应运而生&#xff0c;旨在通过信息化、智能化的管理方式&#xff0c;实现美食城的商户管理、菜品管理、订单…

springboot vue 会员营销系统

springboot vue 会员营销系统介绍 演示地址&#xff1a; 开源版本&#xff1a;http://8.146.211.120:8083/ 完整版本&#xff1a;http://8.146.211.120:8086/ 移动端 http://8.146.211.120:8087/ 简介 欢迎使用springboot vue会员营销系统。本项目包含会员储值卡、套餐卡、计…

HarmonyOS NEXT 技术实践-基于意图框架服务实现智能分发

在智能设备的交互中&#xff0c;如何准确理解并及时响应用户需求&#xff0c;成为提升用户体验的关键。HarmonyOS Next 的意图框架服务&#xff08;Intents Kit&#xff09;为这一目标提供了强大的技术支持。本文将通过一个项目实现的示例&#xff0c;展示如何使用意图框架服务…

sfnt-pingpong -测试网络性能和延迟的工具

sfnt-pingpong 是一个用于测试网络性能和延迟的工具&#xff0c;通常用于测量不同网络环境下的数据包传输性能、吞吐量、延迟等指标。 它通常是基于某种网络协议&#xff08;如 TCP&#xff09;执行“ping-pong”式的测试&#xff0c;即客户端和服务器之间相互发送数据包&…

前端下载文件的几种方式使用Blob下载文件

前端下载文件的几种方式 使用Blob下载文件 在前端下载文件是个很通用的需求&#xff0c;一般后端会提供下载的方式有两种&#xff1a; 1.直接返回文件的网络地址&#xff08;一般用在静态文件上&#xff0c;比如图片以及各种音视频资源等&#xff09; 2.返回文件流&#xff08;…

智能座舱进阶-应用框架层-Jetpack主要组件

Jetpack的分类 1. DataBinding&#xff1a;以声明方式将可观察数据绑定到界面元素&#xff0c;通常和ViewModel配合使用。 2. Lifecycle&#xff1a;用于管理Activity和Fragment的生命周期&#xff0c;可帮助开发者生成更易于维护的轻量级代码。 3. LiveData: 在底层数据库更…