uni app 写的 小游戏,文字拼图?文字拼写?不知道叫啥
从下方的偏旁部首中选在1--3个组成上面文章中的文字,完成的文字标红
不喜勿喷
《满江红》 其中用到了两个文件 strdata.json parameters.json 这两个文件太大 放到资源中了
资源文件
<template><view class="wenzi_page_main"><view class="wenzi_main_view"><view v-for="(item,index) in words" :key="index"><text :style="{color:item.color}">{{item.name}}</text></view></view><view class="bushou_main_view"><view class="mall"><view v-for="(item,index) in ppbslist" :key="index" class="item" :class="item.disabled ? 'disabled' :''"@click="move(item,index)" :id="item.id" :style="{width: size+'rpx',height: size+'rpx',left: item.left + 'rpx',top: item.top + 'rpx'}"><image :style="{width: (size-6)+'rpx',height: (size-6)+'rpx',borderRadius: '8rpx',backgroundColor: '#fff',border: '2rpx solid #71a419',borderBottom: '10rpx solid #71a419'}" :src="item.src"></image></view></view></view><view class="yixuan_main_view"><view v-for="(item,index) in select" :key="index"><image :src="item.src" class="item_image"></image></view></view><view class="add_button_view"><text class="add_button" @click="spick_click"> 满江红</text><text class="add_button" @click="spick_click"> 开始</text></view></view>
</template><script>import strdata from './strdata.json'import parameters from './parameters.json'// 以下功能库请按需使用export default {data() {return {allppbslist: [],ppbslist: [],words: [],strword: '怒发冲冠,凭阑处、潇潇雨歇。抬望眼,仰天长啸,壮怀激烈。三十功名尘与土,八千里路云和月。莫等闲、白了少年头,空悲切。靖康耻,犹未雪。臣子恨,何时灭。驾长车,踏破贺兰山缺。壮志饥餐胡虏肉,笑谈渴饮匈奴血。待从头、收拾旧山河,朝天阙。',select: [],isover: false,layerCount: 5, //绘制4层//行rows: 7,//列cols: 7,//卡片大小size: 70,canMove: true}},onLoad() {},onShow() {},onReady() {},methods: {move(item, index) {if (this.isover || item.disabled || item.click) {return}item.left = 800item.top = 10000item.id = item.id + '-move'item.click = truethis.select.push(JSON.parse(JSON.stringify(item)))this.pipei()},getppbs: function(str, id) {let strdatas = strdata[str]var word = {isbj: false,id: id,name: str,childcodes: [],color: "#666"}if (strdatas) {var valuearr = strdatas[strdatas.length - 1]for (let j = 0; j < valuearr.length; j++) {word.childcodes.push(this.convertTextToUnicode(valuearr[j]))}} else {word.childcodes.push(this.convertTextToUnicode(str))}this.words.push(word)},convertTextToUnicode: function(text) {return ("" + text).charCodeAt(0).toString(16).toUpperCase().toLowerCase();},init: function() {var ppbslist = JSON.parse(JSON.stringify(this.allppbslist))this.ppbslist = this.convertToArray5x7x7(ppbslist)this.checkDisabled()},convertToArray5x7x7: function(flatArray) {const cellHtml = []//整理//第一步画表格//先绘制 最上面一层 然后 从顶层到底层绘制 进行行和列的 数据循环for (let ly = this.layerCount - 1; ly >= 0; ly--) {for (let i = 0; i < this.rows; i++) {for (let j = 0; j < this.cols; j++) {let pyStep = (ly + 1) % 2 === 0 ? this.size / 2 : 0 //给偏移量和不给偏移量 实现错开的效果//进行 图层的渲染 id 是必要的 这个定义了 第几层ly 第几行 i 第几列j 可以判断这个卡片有没有被盖住//最终 我们会以绝对定位的方式 进行 布局//整个随机数let item = (flatArray.pop()) //取完随机数 然后用pop 随用 随删 直到没有为止item && cellHtml.push({ly: ly,i: i,j: j,left: this.size * j + pyStep,top: this.size * i + pyStep,id: 'm' + ly + '-' + i + '-' + j,name: item.name,src: item.image,code: item.code,isMove: false})}}}console.log(cellHtml.length)return cellHtml.reverse()},checkDisabled() {this.ppbslist.forEach((v, index) => {const arr = v.id.substring(1).split('-').map(v => Number(v))const isPy = (arr[0] + 1) % 2 === 0for (let i = arr[0] + 1; i <= this.layerCount - 1; i++) {const isPyB = (i + 1) % 2 === 0if (isPy === isPyB) {let el = this.ppbslist.find(item => {return item.id === 'm' + i + '-' + arr[1] + '-' + arr[2]})if (el) {v.disabled = truebreak;}} else if (isPy && !isPyB) {[`${i}-${arr[1]}-${arr[2]}`,`${i}-${arr[1]}-${arr[2] + 1}`,`${i}-${arr[1] + 1}-${arr[2]}`,`${i}-${arr[1] + 1}-${arr[2] + 1}`].every(k => {let el = this.ppbslist.find(item => {return item.id === 'm' + k})return !el})if (![`${i}-${arr[1]}-${arr[2]}`,`${i}-${arr[1]}-${arr[2] + 1}`,`${i}-${arr[1] + 1}-${arr[2]}`,`${i}-${arr[1] + 1}-${arr[2] + 1}`].every(k => {let el = this.ppbslist.find(item => {return item.id === 'm' + k})return !el})) {v.disabled = truebreak;} else {v.disabled = false}} else if (!isPy && isPyB) {if (![`${i}-${arr[1]}-${arr[2]}`,`${i}-${arr[1]}-${arr[2] - 1}`,`${i}-${arr[1] - 1}-${arr[2]}`,`${i}-${arr[1] - 1}-${arr[2] - 1}`].every(k => {let el = this.ppbslist.find(item => {return item.id === 'm' + k})return !el})) {v.disabled = truebreak;} else {v.disabled = false}}}})},//将数组打乱shuffle: function(array) {if (!Array.isArray(array)) {return array;}for (var i = array.length - 1; i > 0; i--) {var j = Math.floor(Math.random() * (i + 1));[array[i], array[j]] = [array[j], array[i]]}return array;},spick_click: function() {this.isover = falsethis.allppbslist = this.shuffle(JSON.parse(JSON.stringify(parameters)))this.words = []this.select = []for (let i = 0; i < this.strword.length; i++) {this.getppbs(this.strword[i], i)}this.init()},pipei: function() {// 将arrayC中的code提取到一个Set中,以便快速查找let setC = new Set(this.select.map(item => item.code));for (let i = 0; i < this.words.length; i++) {if (!this.words[i].isbj) {let allChildCodesMatched = this.words[i].childcodes.every(code => setC.has(code));if (allChildCodesMatched) {this.words[i].color = "#f00"; // 如果全部匹配,将父元素的color设置为红色this.words[i].isbj = truefor (let j = 0; j < this.words[i].childcodes.length; j++) {for (let z = 0; z < this.select.length; z++) {if (this.words[i].childcodes[j] == this.select[z].code) {this.select.splice(z, 1)if (this.select.length != 6) {this.isover = false}break}}}this.checkDisabled()return}}}if (this.select.length == 6) {this.isover = trueuni.showToast({title: "结束",icon: "none"})} else {this.checkDisabled()}},}}
</script><style>.wenzi_page_main {background-color: #efefef;width: 100vw;height: 100vh;}.wenzi_main_view {margin-top: 26rpx;display: flex;flex-wrap: wrap;flex-direction: row;background: #fff;min-height: 32px;padding: 32rpx 32rpx 32rpx 32rpx;}.yixuan_main_view {width: 100%;margin-top: 26rpx;display: flex;flex-wrap: wrap;flex-direction: row;background-color: #efefef;min-height: 40px;padding: 32rpx 32rpx 32rpx 32rpx;}.item_image {width: 30px;height: 30px;border: 1rpx solid #efefef;margin: 2rpx;}.start_tv {width: 100vw;height: 80rpx;background-color: #fff;display: flex;justify-content: center;align-items: center;position: fixed;bottom: 0;}.bushou_main_view {display: block;height: 450rpx;width: 100vw;justify-content: center;align-items: center;position: relative;margin-top: 26rpx;margin-left: 100rpx;flex-wrap: wrap;flex-direction: row;background-color: #efefef;min-height: 32px;padding: 32rpx 32rpx 32rpx 32rpx;}.main {position: relative;}.item {position: absolute;color: #fff;display: flex;justify-content: center;align-items: center;border-radius: 10rpx;transition: left .3s, top .3s;}/* 如果被压在底下的颜色 应该是一种灰色 */.item:after {content: '';position: absolute;top: 0;bottom: 0;left: 0;right: 0;transition: background-color .3s;}/* 这个是为了 当配够 有disabled 属性的时候 就会透明掉 */.disabled:after {background-color: rgba(0, 0, 0, 0.7);}.add_button_view {display: flex;z-index: 4;/*row 横向 column 列表 */flex-direction: row;justify-content: center;align-items: center;text-align: center;height: 140rpx;width: 100vw;background: #fff;border-top: solid 1rpx #efefef;position: fixed;bottom: 0;}.add_button {flex: 1;height: 88rpx;border: solid 2rpx #07a5a6;color: #fff;background: #07a5a6;font-size: 32rpx;border-radius: 10rpx;align-items: center;justify-content: center;display: flex;margin-left: 16rpx;margin-right: 16rpx;}.not_add_button {background: #effcfb;flex: 1;height: 88rpx;border: solid 2rpx #07a5a6;color: #07a5a6;font-size: 32rpx;border-radius: 10rpx;align-items: center;justify-content: center;display: flex;margin-left: 16rpx;margin-right: 16rpx;}
</style>
相关文章:

uni app 写的 小游戏,文字拼图?文字拼写?不知道叫啥
从下方的偏旁部首中选在1--3个组成上面文章中的文字,完成的文字标红 不喜勿喷 《满江红》 其中用到了两个文件 strdata.json parameters.json 这两个文件太大 放到资源中了 资源文件 <template><view class"wenzi_page_main"><view c…...

Qt监控系统远程网络登录/请求设备列表/服务器查看实时流/回放视频/验证码请求
一、前言说明 这几个功能是近期定制的功能,也非常具有代表性,核心就是之前登录和设备信息都是在本地,存放在数据库中,数据库可以是本地或者远程的,现在需要改成通过网络API请求的方式,现在很多的服务器很强…...

案例研究:UML用例图中的结账系统
在软件工程和系统分析中,统一建模语言(UML)用例图是一种强有力的工具,用于描述系统与其用户之间的交互。本文将通过一个具体的案例研究,详细解释UML用例图的关键概念,并说明其在设计结账系统中的应用。 用…...
二叉树的层次遍历
二叉树的层次遍历 描述 给你一个二叉树,请你返回其按 层次遍历 得到的节点值(即逐层地,从做到右访问所有节点) 代码 通过两个数组来交替打印 class Solution(object):def levelOrder(self, root):if root None:return []sta…...
docker推送本地仓库报错
(base) rootainode3:~# dp 192.168.2.186:5000/bert-deepspeed:latest The push refers to repository [192.168.2.186:5000/bert-deepspeed] Get "http://192.168.2.186:5000/v2/": dial tcp 192.168.2.186:5000: connect: connection refused排查思路如下ÿ…...
Python中的asyncio:高效的异步编程模型
随着互联网应用的快速发展,程序的响应性和处理效率成为衡量系统性能的重要指标。传统的同步编程模型在面对高并发和IO密集型任务时,常常显得捉襟见肘,难以满足现代应用的需求。Python的asyncio库作为一种高效的异步编程模型,为开发…...

Oopsie【hack the box】
Oopsie 解题流程 文件上传 首先开启机器后,我们先使用 nmap -sC -SV来扫描一下IP地址: -sC:使用 Nmap 的默认脚本扫描(通常是 NSE 脚本,Nmap Scripting Engine)。这个选项会自动执行一系列常见的脚本&am…...
详细介绍 React 中 i18n 的完整使用流程:
接下来按照步骤,让我们来完成! // 1. 首先安装必要的依赖 // npm install i18next react-i18next i18next-http-backend i18next-browser-languagedetector// 2. 创建 i18n 配置文件 (src/i18n/index.js) import i18n from i18next import { initReactI…...

部署:上传项目代码 配置数据库
一、上传代码 1、使用git 可以使用Git Clone。使用前,在服务器上也要创建秘钥对。这里的密钥对,是专门用来读取Git仓库的。 在宝塔上,点击终端。进来后,运行 ssh-keygen还是一路回车,密钥对就建好了。 接着用命令…...

C++—9、如何在Microsoft Visual Studio中调试C++
本文通过实例操作来介绍 Visual Studio 调试器的功能。调试器在运行过程中可提供许多方法让你查看代码的情况。 你可以逐步浏览代码、查看变量中存储的值、设置对变量的监视以查看值何时改变、检查代码的执行路径、查看代码分支是否正在运行等等。本实例主要是设置断点及查看内…...
11. C 语言 作用域与变量使用技巧
本章目录: 前言一、作用域的分类局部变量示例: 全局变量示例:示例: 形式参数示例: 二、作用域的细节与常见误区块级作用域示例: 静态变量与全局变量的对比示例: 未初始化变量的影响示例: 三、实…...

【机器学习案列】学生抑郁可视化及预测分析
🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...
Perl语言的循环实现
Perl语言的循环实现 引言 Perl是一种强大的脚本语言,以其灵活的语法和强大的文本处理能力著称。无论是在系统管理、网络编程,还是在Web应用开发中,Perl都广泛应用于各种领域。循环是编程语言中一个极其重要的概念,它允许程序重复…...
SpringBoot项目——使用Spark对爬虫爬取下的数据进行清洗
随着互联网信息呈爆炸式增长,爬虫技术被广泛用于从海量网页中抓取有价值的数据。然而,爬取到的数据往往存在格式不规范、重复、噪声等诸多问题,需要高效的数据清洗流程来保障数据质量,Spark 在其中发挥了关键作用。 什么是Spark …...
分布式锁 Redis vs etcd
为什么要实现分布式锁?为什么需要分布式锁,分布式锁的作用是什么,哪些场景会使用到分布式锁?分布式锁的实现方式有哪些分布式锁的核心原理是什么 如何实现分布式锁redis(自旋锁版本)etcd 的分布式锁(互斥锁(信号控制)版本) 分布式锁对比redis vs etcd 总结 为什么要实现分布式…...
《深度剖析:开源与闭源模型,AI舞台上的不同角色》
在人工智能蓬勃发展的当下,模型的选择如同为一场战役挑选合适的武器,至关重要。开源模型与闭源模型作为AI领域的两大阵营,在性能和应用场景上展现出显著差异,深刻影响着开发者、企业以及整个行业的走向。 性能差异:实…...
Angular结合C#
在 Angular 2 及以上版本与 C#结合使用 REST API 的示例中,我们将分别展示前端 Angular 服务和后端 C# Web API 的实现。 一、前端:Angular 服务 生成 Angular 服务 使用 Angular CLI 生成一个新的服务,例如user.service.ts: ng…...

Spring——自动装配
假设一个场景: 一个人(Person)有一条狗(Dog)和一只猫(Cat),狗和猫都会叫,狗叫是“汪汪”,猫叫是“喵喵”,同时人还有一个自己的名字。 将上述场景 抽象出三个实体类&…...
Servlet与JSP:Java的秘密花园入口
1 Servlet概述 Servlet是Java Web应用中的一个核心组件,它是一个运行在服务器端的Java程序,可以响应客户端的请求并生成响应。Servlet为Web应用提供了一个统一的接口来处理HTTP请求。 2 Servlet的生命周期 Servlet的生命周期包括以下几个阶段ÿ…...

【Linux】Linux常见指令(上)
个人主页~ 初识Linux 一、Linux基本命令1、ls指令2、pwd命令3、cd指令4、touch指令5、mkdir指令6、rmdir指令7、rm指令8、man指令9、cp指令10、mv命令 Linux是一个开源的、稳定的、安全的、灵活的操作系统,Linux下的操作都是通过指令来实现的 一、Linux基本命令 先…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...

九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...