vue猜词游戏
说明:我希望用vue实现猜词游戏
Vue Wordle 游戏规则总结
核心规则
单词选择
目标单词从预设词库(DEFAULT_WORDS)中随机选取,均为5字母单词(如apple、zebra等)。
输入要求
长度限制:必须输入恰好5个字母
有效性验证:单词需存在于预设词库中
输入方式:通过文本输入框输入,按回车键提交
尝试次数
最多允许 6次猜测,用尽后游戏失败。
颜色反馈机制
每个字母根据匹配状态显示不同颜色:
绿色:字母位置完全正确
黄色:字母存在但位置错误
灰色:字母不在目标单词中
效果图:
step1:C:\Users\wangrusheng\PycharmProjects\untitled3\src\views\Wordle.vue
<template><div class="container"><div v-if="!gameStarted" class="start-screen"><button class="start-btn" @click="startGame">Start New Game</button></div><div v-else><div class="game-board"><div v-for="(guess, index) in guesses" :key="index" class="guess-row"><divv-for="(char, charIndex) in guess.chars":key="charIndex":class="['char-box', colorClass(guess.results[charIndex])]">{{ char }}</div></div></div><div v-if="!gameOver" class="input-area"><inputv-model="currentGuess"@keyup.enter="submitGuess"maxlength="5"placeholder="Enter 5-letter word"class="guess-input"autocomplete="off"/><p v-if="message" class="message">{{ message }}</p></div><div v-else class="game-over"><h3 v-if="isWin" class="result-text">🎉 Congratulations! You won!</h3><h3 v-else class="result-text">😞 Game Over! The word was: {{ targetWord.toUpperCase() }}</h3><button class="play-again-btn" @click="startGame">Play Again</button></div></div></div>
</template><script setup>
import { ref, reactive } from 'vue'const DEFAULT_WORDS = ['apple', 'brain', 'chair', 'dance', 'earth','flame', 'grape', 'happy', 'igloo', 'jelly','koala', 'lemon', 'music', 'noble', 'ocean','piano', 'quiet', 'river', 'smile', 'tiger','urban', 'vivid', 'water', 'xenon', 'yacht', 'zebra'
]// 游戏状态
const gameStarted = ref(false)
const gameOver = ref(false)
const isWin = ref(false)
const currentGuess = ref('')
const guesses = reactive([])
const message = ref('')// 游戏数据
const targetWord = ref('')
const words = ref(DEFAULT_WORDS)const COLOR = {GREEN: 'green',YELLOW: 'yellow',GRAY: 'gray'
}const startGame = () => {gameStarted.value = truegameOver.value = falseisWin.value = falsecurrentGuess.value = ''guesses.splice(0)message.value = ''targetWord.value = words.value[Math.floor(Math.random() * words.value.length)]
}const colorClass = (result) => ({[COLOR.GREEN]: result === COLOR.GREEN,[COLOR.YELLOW]: result === COLOR.YELLOW,[COLOR.GRAY]: result === COLOR.GRAY
})const validateWord = (word) => words.value.includes(word.toLowerCase())const calculateResults = (guess) => {const results = Array(5).fill(COLOR.GRAY)const targetChars = [...targetWord.value]const guessChars = [...guess]// 第一遍检查正确位置(绿色)guessChars.forEach((char, i) => {if (char === targetChars[i]) {results[i] = COLOR.GREENtargetChars[i] = null}})// 第二遍检查存在但位置错误(黄色)guessChars.forEach((char, i) => {if (results[i] !== COLOR.GREEN) {const foundIndex = targetChars.findIndex(c => c === char)if (foundIndex > -1) {results[i] = COLOR.YELLOWtargetChars[foundIndex] = null}}})return results
}const submitGuess = () => {const guess = currentGuess.value.toLowerCase().trim()if (guess.length !== 5) {message.value = 'Word must be 5 letters'return}if (!validateWord(guess)) {message.value = 'Not in word list'return}message.value = ''const results = calculateResults(guess)guesses.push({chars: [...guess.toUpperCase()],results})// 检查胜利条件if (results.every(r => r === COLOR.GREEN)) {isWin.value = truegameOver.value = true} else if (guesses.length >= 6) {gameOver.value = true}currentGuess.value = ''
}
</script><style scoped>
.container {max-width: 600px;margin: 2rem auto;padding: 2rem;background: #f8f9fa;border-radius: 16px;box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12);font-family: 'Arial', sans-serif;
}h1 {color: #2c3e50;margin-bottom: 2rem;font-size: 2.5rem;text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1);
}.game-board {background: white;padding: 1.5rem;border-radius: 12px;box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);margin: 1.5rem 0;
}.guess-row {display: flex;justify-content: center;gap: 0.75rem;margin: 0.75rem 0;
}.char-box {width: 60px;height: 60px;border: 2px solid #d3d6da;border-radius: 10px;display: flex;align-items: center;justify-content: center;font-size: 2rem;font-weight: bold;background: white;transition: all 0.3s ease;box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}.char-box.green {background: #6aaa64;border-color: #6aaa64;color: white;
}.char-box.yellow {background: #c9b458;border-color: #c9b458;color: white;
}.char-box.gray {background: #787c7e;border-color: #787c7e;color: white;
}.input-area {margin: 2rem 0;
}.guess-input {padding: 1rem;font-size: 1.2rem;border: 2px solid #d3d6da;border-radius: 8px;width: 220px;text-align: center;transition: all 0.3s ease;text-transform: lowercase;
}.guess-input:focus {outline: none;border-color: #6aaa64;box-shadow: 0 0 8px rgba(106, 170, 100, 0.3);
}button {padding: 1rem 2rem;font-size: 1.1rem;border: none;border-radius: 8px;cursor: pointer;background: #4a90e2;color: white;transition: all 0.2s ease;box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}button:hover {background: #357abd;transform: translateY(-2px);box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
}.start-btn {background: #6aaa64;
}.start-btn:hover {background: #5a9c54;
}.message {color: #e74c3c;margin-top: 1rem;font-weight: 500;min-height: 1.5rem;
}.game-over {margin-top: 2rem;padding: 1.5rem;background: white;border-radius: 12px;box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
}.result-text {margin: 1rem 0;color: #2c3e50;font-size: 1.2rem;
}.play-again-btn {background: #6aaa64;margin-top: 1rem;
}.play-again-btn:hover {background: #5a9c54;
}
</style>
end
相关文章:
vue猜词游戏
说明:我希望用vue实现猜词游戏 Vue Wordle 游戏规则总结 核心规则 单词选择 目标单词从预设词库(DEFAULT_WORDS)中随机选取,均为5字母单词(如apple、zebra等)。 输入要求 长度限制:必须…...
SQL ②-库操作 | 数据类型
这里是Themberfue SQL语法 数据库术语 DATABASE:数据库,保存有组织的数据的容器(通常是一个文件或一组文件)。TABLE:表,某种特定类型数据的结构化清单。SCHEMA:模式,关于数据库和表…...
云轴科技ZStack CTO王为@中国GenAI大会:AI原生实践重构AI Infra新范式
4月1-2日,2025中国生成式AI大会(GenAICon 2025)在北京举办,该会议已成为国内AI领域最具影响力的产业峰会之一。来自学术界与产业界的50位嘉宾围绕GenAI应用、大模型、AI智能体、具身智能、DeepSeek R1与推理模型等话题,…...
处理甘特图启动依赖报错。
处理甘特图启动报错 一、修改甘特图下载地址1.1 配置修改1.2 修改地址(https://registry.npmmirror.com) 二、安装依赖1.1 安装sass-loader1.2 适配安装dhtmlx-gantt 一、修改甘特图下载地址 1.1 配置修改 npm config get registry1.2 修改地址(https://registry.npmmirror.c…...
JSX、支持HTML标签、Ref的使用、虚拟DOM的使用
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…...
leetcode376-摆动序列
leetcode 376 思路 变量定义: prediff:记录上一次相邻元素的差值。用于判断当前差值与上一个差值的关系curdiff:记录当前相邻元素的差值result:记录当前的摆动序列的长度,初始化为 1,因为至少一个元素就…...
内网渗透(杂项集合) --- 中的多协议与漏洞利用技术(杂项知识点 重点) 持续更新
目录 1. NetBIOS 名称的网络协议在局域网中内网渗透中起到什么作用 2. 使用 UDP 端口耗尽技术强制所有 DNS 查找失败,这个技术如何应用在局域网内网渗透测试中 3. 在本地创建一个 HTTP 服务来伪造 WPAD 服务器 什么是 WPAD 服务器?这个服务器是干嘛的…...
14-产品经理-维护计划
产品经理的另一个职责是制定计划。古人云,凡事预则立,不预则废。 产品需要做规划,才能有轻重缓急,才能正确的做事。因此对于产品经理而言,计划是必需的。 对于产品经理自己而言,发布计划可以帮助他规划产…...
12-产品经理-维护模块
需求模块是帮助产品经理进行需求的分类和维护。 1. 维护模块 在具体产品的“研发需求”页面左侧,点击“维护模块”。也可以在具体产品的“设置”-“模块”下进行维护。 点击保存后,返回模块页面。还可以点击“子模块”对已有模块进行子模块的维护。 点击…...
解析HiveQL的ALTER TABLE ADD/REPLACE COLUMNS语句
阅读以下ALTER TABLE的ADD/REPLACE COLUMNS语句的语法,用C#编写解析函数,一个一个字符解析,所有关键字不区分大小写,一个或多个空格、Tab和换行的组合都可以是关键词之间的分隔,表名和字段名可能包含空格和Tab…...
MySQL-SQL-DML语句、INSER添加数据、UPDATE更新数据、DELETE删除数据
一. DML 1. DML的英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。 2. 添加数据(INSERT);修改数据(UPDATE);删除数据(DELETE) 二. DML-INSER添加数据 -- DML insert -- 指定字段添加数…...
学透Spring Boot — 017. 处理静态文件
这是我的《学透Spring Boot》专栏的第17篇文章,了解更多内容请移步我的专栏: Postnull CSDN 学透 Spring Boot 目录 静态文件 静态文件的默认位置 通过配置文件配置路径 通过代码配置路径 静态文件的自动配置 总结 静态文件 以前的传统MVC的项目…...
Linux进程间通信——共享内存
1.概念 共享内存(Shared Memory)就是允许多个进程访问同一个内存空间,是在多个进程之间共享和传递数据最高效的方式。操作系统将不同进程之间共享内存安排为同一段物理内存,进程可以将共享内存连接到它们自己的地址空间中&#x…...
如何在大型项目中组织和管理 Vue 3 Hooks?
众所周知,Vue Hooks(通常指 Composition API 中的功能)是 Vue 3 引入的一种代码组织方式,用于更灵活地组合和复用逻辑。但是在项目中大量使用这种写法该如何更好的搭建结构呢?以下是可供参考实践的案例。 一、Hooks 组织原则 单一职责每个 Hook 应专注于完成单一功能,避…...
前后端开发的未来趋势
随着技术的不断进步,前后端开发模式也在不断演变。未来,微服务架构、Serverless、前后端融合(GraphQL、BFF)等趋势将深刻影响开发方式,使应用更高效、灵活、可扩展。 1. 微服务架构与 Serverless 1.1 微服务架构(Microservices Architecture) 微服务是一种软件架构模式…...
产品经理课程
原型工具 一、土耳其机器人 这个说法来源于 1770 年出现的一个骗局,一个叫沃尔夫冈冯肯佩伦(Wolfgang von Kempelen)的人为了取悦奥地利女皇玛丽娅特蕾莎(Maria Theresia),“制造”了一个会下国际象棋的机…...
【开源宝藏】30天学会CSS - DAY12 第十二课 从左向右填充的文字标题动画
用伪元素搞定文字填充动效:一行 JS 不写,效果炸裂 你是否曾经在设计页面标题时,觉得纯文字太寡淡?或者想做一个有动感的文字特效,但又不想引入 JS 甚至 SVG? 在这篇文章中,我们将通过 一段不到…...
Nginx 负载均衡案例配置
负载均衡案例 基于 docker 进行 案例测试 1、创建三个 Nginx 实例 创建目录结构 为每个 Nginx 实例创建单独的目录,用于存储 HTML 文件和配置文件 mkdir -p data/nginx1/html mkdir -p data/nginx2/html mkdir -p data/nginx3/html添加自定义 HTML 文件 在每个…...
Golang系列 - 内存对齐
Golang系列-内存对齐 常见类型header的size大小内存对齐空结构体类型参考 摘要: 本文将围绕内存对齐展开, 包括字符串、数组、切片等类型header的size大小、内存对齐、空结构体类型的对齐等等内容. 关键词: Golang, 内存对齐, 字符串, 数组, 切片 常见类型header的size大小 首…...
nginx中的limit_req 和 limit_conn
在 Nginx 中,limit_req 和 limit_conn 是两个用于限制客户端请求的指令,它们分别用于限制请求速率和并发连接数。 limit_req limit_req 用于限制请求速率,防止客户端发送过多请求影响服务器性能。它通过 limit_req_zone 指令定义一个共享内存…...
Python Cookbook-5.4 根据对应值将键或索引排序
任务 需要统计不同元素出现的次数,并且根据它们的出现次数安排它们的顺序——比如,你想制作一个柱状图。 解决方案 柱状图,如果不考虑它在图形图像上的含义,实际上是基于各种不同元素(用Python的列表或字典很容易处理)出现的次…...
U535982 J-A 小梦的AB交换
U535982 J-A 小梦的AB交换 - 洛谷 题目描述 小梦有一个长度为 2⋅n 的 AB 串 s,即 s 中只包含 "A" 和 "B" 两种字符,且其中恰好有 n 个 "A" 和 n 个 "B"。 他可以对 s 执行以下操作: 选择 i,j (…...
2025高频面试算法总结篇【排序】
文章目录 直接刷题链接直达把数组排成最小的数删除有序数组中的重复项求两个排序数组的中位数求一个循环递增数组的最小值数组中的逆序对如何找到一个无序数组的中位数链表排序从一大段文本中找出TOP K 的高频词汇 直接刷题链接直达 把一个数组排成最大的数 剑指 Offer 45. 把…...
计算机视觉基础4——特征点及其描述子
一、特征点检测 (一)特征点定义 图像中具有独特局部性质的点。 (二)特征点性质 具有局部性(对遮挡和混乱场景鲁棒)、数量足够多(一幅图像可产生成百上千个)、独特性(…...
React 初学者进阶指南:从环境搭建到部署上线
概览 环境搭建 核心概念 TodoList 实战 部署上线 一、快速搭建 React 开发环境 1. 选型:Vite 或 Create React App Vite:轻量、热更新速度快、可定制度高,适合追求更高效率的开发者。Create React App (CRA):社区支持全面,文档丰富,适合初学者上手。我使用的是Vite 提示…...
docker加docker compose实现软件快速安装启动
docker 下载镜像官网页面:https://hub.docker.com/ docker是什么? 加速应用构建、分享、运行 docker命令 镜像操作 容器操作 docker ps:查看运行中的容器 docker ps -a: 查看所有容器,包括停止的 除了docker run和docker exec两个命令其余执…...
使用人工智能大模型腾讯元宝,如何免费快速做工作总结?
今天我们学习使用人工智能大模型腾讯元宝,如何免费快速做工作总结? 手把手学习视频地址:https://edu.csdn.net/learn/40402/666429 第一步在腾讯元宝对话框中输入如何协助老师做工作总结,通过提问,我们了解了老师做工…...
【小兔鲜】day03 Home模块与一级分类
【小兔鲜】day03 Home模块与一级分类 1. Home-整体结构搭建和分类实现1.1 页面结构 2. Home-banner轮播图功能实现 1. Home-整体结构搭建和分类实现 1.1 页面结构 分类实现 2. Home-banner轮播图功能实现 轮播图实现 在HomeBanner.vue中写出轮播图的结构 在apis目录下新建h…...
c++使用gstreamer录屏+声音
说明: c使用gstreamer完成录制电脑桌面的功能 我希望用gstreamer录屏,默认10秒,自动保存录屏文件到本地 这里是不带声音的版本,仅录屏, step1:C:\Users\wangrusheng\source\repos\CMakeProject1\CMakeProject1\CMakeL…...
PowerToys:Windows高效工具集
Microsoft PowerToys 是微软官方推出的 免费开源效率工具集,专为 Windows 系统设计,通过模块化功能解决高频操作痛点,提升用户生产力。支持 Windows 10/11 系统,覆盖开发者、设计师及普通办公场景。 一、核心功能亮点 高…...
pulsar中的延迟队列使用详解
Apache Pulsar的延迟队列支持任意时间精度的延迟消息投递,适用于金融交易、定时提醒等高时效性场景。其核心设计通过堆外内存索引队列与持久化分片存储实现,兼顾灵活性与可扩展性。以下从实现原理、使用方式、优化策略及挑战展开解析: 一、核…...
import torch 失败
1. 使用 PyTorch 官方 Conda 频道安装 运行以下命令(根据你的 CUDA 版本选择): # CPU 版本 conda install pytorch torchvision torchaudio cpuonly -c pytorch# CUDA 11.8 版本 conda install pytorch torchvision torchaudio pytorch-cud…...
什么是异步?
什么是异步? 异步是一个术语,用于描述不需要同时行动或协调就能独立运行的流程。这一概念在技术和计算领域尤为重要,它允许系统的不同部分按自己的节奏运行,而无需等待同步信号或事件。在区块链技术中,异步是指网络中…...
Llama 4 家族:原生多模态 AI 创新新时代的开启
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
情感语音的“开源先锋”!网易开源
语音合成技术近年来取得了显著进步,特别是在语音克隆、语音助手、配音服务和有声读物等领域。然而,如何让合成的语音更具情感,更贴近人类的真实表达,一直是这一领域的重要研究方向。今天,我们将为大家介绍一款由网易有…...
消息队列基础概念及选型,常见解决方案包括消息可靠性、消息有序、消息堆积、重复消费、事务消息
前言 是时候总结下消息队列相关知识点啦!我搓搓搓搓 本文包括消息队列基础概念介绍,常见解决方案包括消息可靠性、消息有序、消息堆积、重复消费、事务消息 参考资料: Kafka常见问题总结 | JavaGuide RocketMQ常见问题总结 | JavaGuide …...
子类是否能继承
继承 父类: 子 类 构造方法 非私有 不能继承 私有(private)不能继承 成员变量 非私有 能继承 私有&…...
计算机系统--- BIOS(基本输入输出系统)
一、BIOS的定义与核心定位 BIOS(Basic Input/Output System)是计算机启动时运行的底层固件,存储在主板的ROM芯片中。它是连接硬件与操作系统的桥梁,负责初始化硬件、加载启动程序,并提供基础配置界面。其核心目标是&a…...
Ollama 与 llama.cpp 深度对比
Ollama 与 llama.cpp 深度对比 1. 定位与架构 维度llama.cppOllama核心定位Meta LLaMA 的 C 推理框架,专注底层优化基于 llama.cpp 的高层封装工具,提供一站式服务技术栈纯 C 实现,支持量化/内存管理/硬件指令集优化(AVX/NEON/M…...
C++ —— 智能指针
C ——智能指针 智能指针存在的必要性1. 解决内存泄漏问题2. 避免悬垂指针(Dangling Pointer)3. 异常安全性 std::unique_ptr (独占所有权)代码功能说明关键点解析内存管理流程对比传统指针为何使用 make_unique? uniq…...
Go语言的测试框架
Go语言测试框架详解 Go语言(Golang)自发布以来,因其简洁、高效和并发支持而受到广泛欢迎。在软件开发过程中,测试是确保代码质量与稳定性的重要环节。Go语言内置的测试框架为开发者提供了灵活而强大的测试工具,使得编…...
配置多区域集成IS-IS和抓包分析
基本概念 IS-IS区域结构: 使用两级层次结构:Level 1(区域内)和Level 2(区域间) Level 1路由器了解本区域拓扑 Level 2路由器在不同区域间传输流量 Level 1-2路由器同时执行两种功能 NSAP地址ÿ…...
网络原理 - HTTP/HTTPS
1. HTTP 1.1 HTTP是什么? HTTP (全称为 “超文本传输协议”) 是⼀种应用非常广泛的应用层协议. HTTP发展史: HTTP 诞生于1991年. 目前已经发展为最主流使用的⼀种应用层协议 最新的 HTTP 3 版本也正在完善中, 目前 Google / Facebook 等公司的产品已经…...
JavaScript逆向WebSocket协议解析与动态数据抓取
在JavaScript逆向工程中,WebSocket协议的解析和动态数据抓取是关键技能。本文将结合Fiddler、Charles Proxy和APIfox工具,详细讲解如何解析WebSocket协议并抓取动态数据。 一、WebSocket协议解析 (一)WebSocket协议的基本概念 …...
过滤震荡行行策略思路
本文讨论的是如何识别和过滤金融市场中的震荡行情,特别是对于趋势交易者来说,如何避免在震荡行情中频繁止损和资金回撤。 主要观点 震荡行情的定义 - 行情在有序与无序之间的中间状态,由多空力量不足导致的横盘。 震荡行情的分类 - 宽幅震…...
消息队列(kafka 与 rocketMQ)
为什么要使用消息队列?作用1: 削峰填谷(突发大请求量问题)作用2: 解耦(单一原则)作用3: 异步(减少处理时间) 如何选择消息队列(kafka&RocketMQ)成本功能性能选择 rocketMQ是参考kafka进行实现的为什么rocketMQ与kafka性能差距很大呢?kafka 的底层数据储存实现rocketMQ 的…...
Invalid bean definition with name ‘employeeMapper‘ defined in file。解决问题
求解决方法: Error starting ApplicationContext. To display the condition evaluation report re-run your application with debug enabled. 2025-04-06T15:23:24.87308:00 ERROR 30192 --- [ main] o.s.boot.SpringApplication : Appli…...
使用NVM管理nodejs
使用NVM管理nodejs 前言1. 先清空本地安装的node.js版本2. 下载nvm管理工具3. 安装nvm管理工具4. 输入命令查看nvm版本号5. 查看node.js版本号6. 安装对应版本6.1安装命令6.2使用命令(可以快速切换node版本)6.3成功之后就可以查看本地的node版本了 7. 查…...
第11课:Tiled DiffusionVAE高分辨率放大应用
文章目录 Part.01 Tiled Diffusion原理与基本操作Part.02 Tiled Diffusion超高分辨率升级Part.03 与ControlNet Tile配合使用显存和图片大小的对应关系 Part.01 Tiled Diffusion原理与基本操作 降低显存负担,用不到一半的显存消耗实现同一张大图的绘制,提高超过50%的出图效…...
APS相关知识
MRP 在系统中实现 MRP(物料需求计划) 的逻辑,需要基于 数据库 和 算法 进行自动计算,确保物料按时到达,以满足生产需求。以下是 MRP 的核心逻辑和实现步骤: 📌 MRP 系统实现流程 数据输入&…...