unity数独游戏

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class MainMenuPanel : MonoBehaviour
{public Button btnPlay; // 开始按钮public Slider sldDifficulty; // 难度滑动条private void Awake(){// 监听滑动条滑动事件sldDifficulty.onValueChanged.AddListener(OnSliderChange);// 开始按钮点击事件btnPlay.onClick.AddListener(OnPlayGame);}void Start(){// 启动的时候保存难度值SudokuGameManager.Instance.difficulty = (int)sldDifficulty.value;}public void OnSliderChange(float value){// 滑动条变化的时候保存难度值SudokuGameManager.Instance.difficulty = (int)sldDifficulty.value;}public void OnPlayGame(){// 调用游戏管理器中的方法来开始一局新的数独游戏SudokuGameManager.Instance.OnPlayNewGame();}
}

主要功能在该脚本中

在创建正确答案,扣除里面的数字并,把两个比较

重开游戏

算法用到了递归

using System.Collections.Generic;
using UnityEngine;public class SudokuBoard : MonoBehaviour
{// 正确答案int[,] gridNumber = new int[SudokuGameManager.girdLength, SudokuGameManager.girdLength];// 谜题int[,] puzzleNumber = new int[SudokuGameManager.girdLength, SudokuGameManager.girdLength];// 谜题备份,用于重开本局游戏int[,] puzzleBak = new int[SudokuGameManager.girdLength, SudokuGameManager.girdLength];public SudokuGrid grid;// 网格体public void Init(){// 创建一个有解的数独CreateGrid();// 根据已经创建的答案 来创建 谜题CreatePuzzle();// 根据谜题来初始化按钮InitButtons();}// 清理所有资源public void Clear(){// 清理谜题和答案数据gridNumber = new int[SudokuGameManager.girdLength, SudokuGameManager.girdLength];puzzleNumber = new int[SudokuGameManager.girdLength, SudokuGameManager.girdLength];puzzleBak = new int[SudokuGameManager.girdLength, SudokuGameManager.girdLength];}// 销毁某个物体下面的所有子物体void ClearChildren(Transform trans){for (int i = 0; i < trans.childCount; i++){Destroy(trans.GetChild(i).gameObject);}}// 某列是否包含某个数据bool ColumnContainsValue(int col, int value){for (int i = 0; i < SudokuGameManager.girdLength; i++){if (gridNumber[i, col] == value){return true;}}return false;}// 某一行是否包含某个数字bool RowContainsValue(int row, int value){for (int i = 0; i < SudokuGameManager.girdLength; i++){if (gridNumber[row, i] == value){return true;}}return false;}// 某一个子网格是否包含某个数字bool SquareContainsValue(int row, int col, int value){// 遍历子单元格(3X3)for (int i = 0; i < SudokuGameManager.subGirdLength; i++){for (int j = 0; j < SudokuGameManager.subGirdLength; j++){// 通过计算坐标 确定是属于哪个子网格if (gridNumber[(row / SudokuGameManager.subGirdLength) * SudokuGameManager.cellLength + i, (col / SudokuGameManager.subGirdLength) * SudokuGameManager.cellLength + j] == value){return true;}}}return false;}// 检查某个数是否已经存在于 横 列以及某个3X3的网格里bool CheckAll(int row, int col, int value){if (ColumnContainsValue(col, value)) // 列是否已经包含该数字{return false;}if (RowContainsValue(row, value)) // 行是否已经包含该数字{return false;}if (SquareContainsValue(row, col, value)) // 当前子九宫是否包含该数字{return false;}return true;}// 网格数字是否有效bool IsValid(){for (int i = 0; i < SudokuGameManager.girdLength; i++){for (int j = 0; j < SudokuGameManager.girdLength; j++){if (gridNumber[i, j] == 0){return false;}}}return true;}// 创建一个有效的数独网格void CreateGrid(){List<int> rowList = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 };List<int> colList = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 };// 先在00位置随机一个数据int value = rowList[Random.Range(0, rowList.Count)];gridNumber[0, 0] = value;rowList.Remove(value);colList.Remove(value);// 将其他8个数字随机到第一行中for (int i = 1; i < SudokuGameManager.girdLength; i++){value = rowList[Random.Range(0, rowList.Count)];gridNumber[i, 0] = value;rowList.Remove(value);}// 将其他几个数字随机到第一列中for (int i = 1; i < SudokuGameManager.girdLength; i++){value = colList[Random.Range(0, colList.Count)];// 需要判断是否会和第一个子网格有重复if (i < 3){while (SquareContainsValue(0, 0, value)){value = colList[Random.Range(0, colList.Count)]; // reroll}}gridNumber[0, i] = value;colList.Remove(value);}// 再随机对最后一个子网格添加三个合法的数字for (int i = 6; i < 9; i++){value = Random.Range(1, 10);while (SquareContainsValue(0, 8, value) || SquareContainsValue(8, 0, value) ||SquareContainsValue(8, 8, value)){value = Random.Range(1, 10);}gridNumber[i, i] = value;}// 先随机生成一个数独的底子,然后对它求解,解出的答案就是完整数独SolveSudoku();}// 对数独求解bool SolveSudoku(){int row = 0;int col = 0;// 如果已经生成完毕 就返回结果if (IsValid()){return true;}// 找到还没有生成数字的位置for (int i = 0; i < SudokuGameManager.girdLength; i++){for (int j = 0; j < SudokuGameManager.girdLength; j++){if (gridNumber[i, j] == 0){row = i;col = j;break;}}}// 循环 找到合适的数字,满足所有的规则for (int i = 1; i <= SudokuGameManager.girdLength; i++){if (CheckAll(row, col, i)){gridNumber[row, col] = i;// 递归找解 这里很重要,因为是对自身的递归,如果随机的数字正好全部都满足就结束了if (SolveSudoku()){return true;}else //如果某次递归找不到解 就会将该位置之 {gridNumber[row, col] = 0;}}}return false;}void CreatePuzzle(){// 根据事先完成的答案 创建谜题// 先将答案复制一份出来System.Array.Copy(gridNumber, puzzleNumber, gridNumber.Length);//移除数字,制造难度for (int i = 0; i < SudokuGameManager.Instance.difficulty; i++){int row = Random.Range(0, SudokuGameManager.girdLength);int col = Random.Range(0, SudokuGameManager.girdLength);// 循环随机,直到随到一个没有处理过的位置while (puzzleNumber[row, col] == 0){row = Random.Range(0, SudokuGameManager.girdLength);col = Random.Range(0, SudokuGameManager.girdLength);}puzzleNumber[row, col] = 0;}// 确保最少要出现8个不同的数字 才能保证唯一解List<int> onBoard = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 };RandomizeList(onBoard);for (int i = 0; i < SudokuGameManager.girdLength; i++){for (int j = 0; j < SudokuGameManager.girdLength; j++){for (int k = 0; k < onBoard.Count - 1; k++){if (onBoard[k] == puzzleNumber[i, j]){onBoard.RemoveAt(k);}}}}// 如果剩余的数量大于1 说明没有8个不同的数字 那么就还原几个数字回来while (onBoard.Count - 1 > 1){int row = Random.Range(0, SudokuGameManager.girdLength);int col = Random.Range(0, SudokuGameManager.girdLength);if (gridNumber[row, col] == onBoard[0]){puzzleNumber[row, col] = gridNumber[row, col];onBoard.RemoveAt(0);}}// 将谜题备份用于重开本局游戏System.Array.Copy(puzzleNumber, puzzleBak, gridNumber.Length);}// 初始化可填写的按钮布局void InitButtons(){for (int i = 0; i < SudokuGameManager.girdLength; i++){for (int j = 0; j < SudokuGameManager.girdLength; j++){var cell = grid.GetCellByPosition(i,j);if (cell != null){cell.InitValues(puzzleNumber[i,j]);}}}}//重开本局游戏public void RestartGame(){System.Array.Copy(puzzleBak, puzzleNumber, gridNumber.Length);InitButtons();}// 打乱一个Listvoid RandomizeList(List<int> l){for (var i = 0; i < l.Count - 1; i++){// 随机交换两个位置int rand = Random.Range(i, l.Count);(l[i], l[rand]) = (l[rand], l[i]);}}// 将玩家输入更新到谜题中public void UpdatePuzzle(int row, int col, int value){puzzleNumber[row, col] = value;}/// <summary>/// 判定游戏是否完成/// </summary>/// <returns></returns>public bool CheckComplete(){// 检查填入的内容和谜底内容是否吻合for (int i = 0; i < SudokuGameManager.girdLength; i++){for (int j = 0; j < SudokuGameManager.girdLength; j++){if (puzzleNumber[i, j] != gridNumber[i, j]){return false;}}}return true;}}

using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.Serialization;
using UnityEngine.UI;public class SudokuCell : MonoBehaviour
{public Vector2Int coordinate; // 在大网格里坐标public SudokuSubGrid subGrid;int value = 0; // 当前格子的值public TextMeshProUGUI txtNumber;// 数字控件public Button btnNum;// 按钮控件void Awake(){btnNum = GetComponent<Button>();txtNumber = GetComponentInChildren<TextMeshProUGUI>();btnNum.onClick.AddListener(ButtonClicked);}// 给网格设置数字public void InitValues(int value){// 初始化的时候,不为0表示该位置是系统提供的数字,否则就是玩家应该输入的数字if (value != 0){txtNumber.text = value.ToString();txtNumber.color = new Color32(119, 110, 101, 255);btnNum.enabled = false;}else{btnNum.enabled = true;txtNumber.text = " ";txtNumber.color = new Color32(0, 102, 187, 255);}}// 设置行列坐标public void SetCoordinate(int row, int col){coordinate = new Vector2Int(row, col);name = row.ToString() + col.ToString();}// 设置其归属的子网格public void SetSubGridParent(SudokuSubGrid sub){subGrid = sub;}/// <summary>/// 按钮事件/// 将当前的数字输入和指定的Cell进行绑定/// </summary>public void ButtonClicked(){SudokuGameManager.Instance.ActivateInputButton(this);}/// <summary>/// 更新单元格内的数字/// </summary>/// <param name="newValue"></param>public void UpdateValue(int newValue){value = newValue;if (value != 0){txtNumber.text = value.ToString();}else{txtNumber.text = "";}}
}

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Serialization;
using UnityEngine.UI;/// <summary>
/// 数独游戏的管理器
/// </summary>
public class SudokuGameManager : MonoBehaviour
{public static int girdLength = 9;// 网格的宽高public static int subGirdLength = 3;// 子网格的宽高// 子网格中 Cell的宽高public static int cellLength = SudokuGameManager.girdLength / SudokuGameManager.subGirdLength;public SudokuCell SudokuCell_Prefab; // 单元格的预制体// get; private set; 的写法是一种语法糖,表示这个值别的类可以读取和使用,但只有自己才能设置它public static SudokuGameManager Instance { get; private set; }public MainMenuPanel mainMenu;// 主界面相关逻辑public SudokuPlayPanel sudokuPlay; // 数独的游戏界面// 按照9X9的格子来算,一共是81个有效数字,如果已知的数字越多,那么未知的数字就越好推导// 所以难度的表达方式就是,设定一个数字,在数独创建完成之后,隐藏掉这些数字来增加难度public int difficulty = 20; // 默认的难度值public Image ipButtonsPanel; // 游戏输入按钮public List<Button>btnNums = new List<Button>(); // 数字输入// 记录上一次点击的格子 以便数字进行输入SudokuCell lastCell;private void Awake(){//单例模式Instance = this;for (int i = 0; i < btnNums.Count; i++){// 需要将i的地址传递出来 int index = i;// 为当前遍历到的按钮添加点击监听器// 当按钮被点击时,调用OnNumBtnClicked方法,并将index(即按钮的索引)作为参数传递btnNums[i].onClick.AddListener(delegate(){ OnNumBtnClicked(index);});}}private void Start(){// 程序启动的时候,默认显示开始界面OnBackToMenu();}// 返回到开始菜单public void OnBackToMenu(){// 程序启动的时候,默认显示开始界面mainMenu.gameObject.SetActive(true);sudokuPlay.gameObject.SetActive(false);// 执行游戏清理sudokuPlay.Clear();}// 开始游戏public void OnPlayNewGame(){// 隐藏开始界面 显示游戏界面mainMenu.gameObject.SetActive(false);sudokuPlay.gameObject.SetActive(true);// 隐藏数字输入面板ipButtonsPanel.gameObject.SetActive(false);// 执行游戏初始化sudokuPlay.Init();}/// <summary>/// 将当前的数字输入和指定的Cell进行绑定/// </summary>/// <param name="cell"></param>public void ActivateInputButton(SudokuCell cell){ipButtonsPanel.gameObject.SetActive(true);lastCell = cell;}/// <summary>/// 点击了某个数字按钮/// </summary>/// <param name="num"></param>public void OnNumBtnClicked(int num){// 更新上一次选中的格子的数值为当前被点击的数字按钮的值lastCell.UpdateValue(num);// 在数独游戏的逻辑板上更新相应的格子数值,使用lastCell的坐标和被点击的数字sudokuPlay.board.UpdatePuzzle(lastCell.coordinate.x, lastCell.coordinate.y, num);// 隐藏数字输入面板ipButtonsPanel.gameObject.SetActive(false);}}

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 数独的大网格
/// </summary>
public class SudokuGrid : MonoBehaviour
{// 所有的子网格 需要处理成二维数组public SudokuSubGrid[,] subGrids { get; private set; }// 子网格public SudokuCell[] cells;// 所有的单元格void Awake(){// 获取所有子网格体var grid = GetComponentsInChildren<SudokuSubGrid>();// 建立子网格的二维数组subGrids = new SudokuSubGrid[SudokuGameManager.subGirdLength, SudokuGameManager.subGirdLength];// 通过循环将二维数组分配到指定位置int index = 0;for (int i = 0; i < SudokuGameManager.subGirdLength; i++){for (int j = 0; j < SudokuGameManager.subGirdLength; j++){subGrids[i, j] = grid[index++];subGrids[i, j].SetCoordinate(i,j);// 设置坐标subGrids[i, j].InitCells();// 初始化网格}}cells = GetComponentsInChildren<SudokuCell>();}/// <summary>/// 根据坐标获取Cell/// </summary>/// <param name="row"></param>/// <param name="col"></param>/// <returns></returns>public SudokuCell GetCellByPosition(int row,int col){foreach (var cell in cells){if (cell.coordinate.x == row && cell.coordinate.y == col){return cell;}}return null;}}

using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.PlayerLoop;
using UnityEngine.Serialization;
using UnityEngine.UI;public class SudokuPlayPanel : MonoBehaviour
{public Button btnBackToMenu;// 返回主界面按钮public Button btnBackToMenuInWinPanel;// 获胜面板上的返回主界面按钮public Button btnNewLevel;// 新建一个关卡public Button btnReplay; // 重新开始本次关卡public Button btnComplete; // 完成关卡public TextMeshProUGUI txtWrongTips; // 结果错误提示public Image imgWinPanel; // 获胜界面public TextMeshProUGUI txtTimer;// 计时器float levelStartTime = 0f; // 关卡开始的时间,用于计时器的计算public SudokuBoard board;// 游戏核心逻辑private void Awake(){// 返回主菜单btnBackToMenu.onClick.AddListener(OnBtnBackToMenuClicked);btnBackToMenuInWinPanel.onClick.AddListener(OnBtnBackToMenuClicked);// 新建关卡btnNewLevel.onClick.AddListener(OnBtnNewClicked);// 重新开始本关卡btnReplay.onClick.AddListener(OnbtnReplayClicked);// 完成关卡btnComplete.onClick.AddListener(OnbtnCompleteClicked);}private void Update(){// 计时器CountTimer();}/// <summary>/// 初始化游戏/// </summary>public void Init(){// 隐藏错误提示txtWrongTips.gameObject.SetActive(false);// 隐藏获胜面板imgWinPanel.gameObject.SetActive(false);// 记录当前的时间戳levelStartTime = Time.realtimeSinceStartup;// 核心逻辑初始化board.Init();}public void Clear(){levelStartTime = 0;// 清除计时器开始时间// 核心逻辑清理board.Clear();}/// <summary>/// 计时器逻辑/// </summary>void CountTimer(){float t = Time.realtimeSinceStartup - levelStartTime;int seconds = (int)(t % 60);t /= 60;int minutes = (int)(t % 60);txtTimer.text = string.Format("{0}:{1}", minutes.ToString("00"), seconds.ToString("00"));}/// <summary>/// 返回主菜单/// </summary>public void OnBtnBackToMenuClicked(){// 清理游戏Clear();// 返回主菜单SudokuGameManager.Instance.OnBackToMenu();}/// <summary>/// 开始新关卡/// </summary>public void OnBtnNewClicked(){// 先清理再初始化Clear();Init();}/// <summary>/// 重玩本关卡/// </summary>public void OnbtnReplayClicked(){// 调用核心逻辑的重玩本局board.RestartGame();}/// <summary>/// 完成游戏/// </summary>public void OnbtnCompleteClicked(){// 检查是否完成游戏if (board.CheckComplete()){imgWinPanel.gameObject.SetActive(true);}else{txtWrongTips.gameObject.SetActive(true);// 3秒后 错误提示消失StartCoroutine(HideWrongText());}}IEnumerator HideWrongText(){yield return new WaitForSeconds(3.0f);txtWrongTips.gameObject.SetActive(false);}}

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;/// <summary>
/// 大网格下的小网格
/// </summary>
public class SudokuSubGrid : MonoBehaviour
{public Vector2Int coordinate; //子网格所属的坐标public SudokuCell[,] cells { get; private set; }// 创建所属的单元格private void Awake(){cells = new SudokuCell[SudokuGameManager.cellLength, SudokuGameManager.cellLength];}// 设置行列坐标public void SetCoordinate(int row, int col){coordinate = new Vector2Int(row, col);}// 初始化网格public void InitCells(){for (int i = 0; i < SudokuGameManager.cellLength; i++){for (int j = 0; j < SudokuGameManager.cellLength; j++){cells[i,j] = Instantiate(SudokuGameManager.Instance.SudokuCell_Prefab,transform);cells[i,j].SetCoordinate(coordinate.x * SudokuGameManager.cellLength + i,coordinate.y * SudokuGameManager.cellLength +j);cells[i,j].SetSubGridParent(this);cells[i,j].InitValues(1);}}}}

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

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

相关文章

springer 在线投稿编译踩坑

springer投稿&#xff0c;在线编译踩坑总结 注意&#xff1a; 有的期刊需要双栏&#xff0c;而预定义的模板中可能为单栏&#xff0c;需要增加iicol选项。 例如&#xff1a; \documentclass[sn-mathphys-num]{sn-jnl}% —>\documentclass[sn-mathphys-num, iicol]{sn-jnl}…

Matlab的Simulink系统仿真(simulink调用m函数)

这几天要用Simulink做一个小东西&#xff0c;所以在网上现学现卖&#xff0c;加油&#xff01; 起初的入门是看这篇文章MATLAB 之 Simulink 操作基础和系统仿真模型的建立_matlab仿真模型搭建-CSDN博客 写的很不错 后面我想在simulink中调用m文件 在 Simulink 中调用 MATLA…

远程问诊软件哪款好?选欣九康诊疗系统

近几年国家相继推出了支持发展“互联网医疗”的政策&#xff0c;如今随着相关政策的不断落实推进&#xff0c;市场上涌现出了一大批在线咨询、电子处方和远程问诊的医疗平台&#xff0c;而在面对种类如此繁多的医疗平台究竟选择哪款更好便成了医疗机构非常头疼的事情&#xff0…

数据中心布线管理:预标记线缆与移动扫描技术的融合

随着信息技术的飞速发展&#xff0c;数据中心布线管理面临着前所未有的挑战。传统的布线管理方式已无法满足现代数据中心高效、准确和可靠的需求。在这样一个背景下&#xff0c;预标记线缆与移动扫描技术的结合&#xff0c;为数据中心布线管理带来了革命性的解决方案。 布线管理…

港理工最新综述:基于LLM的text-to-SQL调查(方法实验数据全面梳理)1

【摘要】文本到SQL旨在将自然语言问题转换为可执行的SQL语句,这对用户提问理解、数据库模式理解和SQL生成都是一个长期存在的挑战。传统的文本到SQL系统包括人工工程和深度神经网络。随后,预训练语言模型(PLMs)被开发并用于文本到SQL任务,取得了可喜的成绩。随着现代数据库变得…

B站画质补完计划(3):智能修复让宝藏视频重焕新生

1 老片存在什么画质问题&#xff1f; B站作为一个拥有浓厚人文属性的平台社区&#xff0c;聚集了诸如《雍正王朝》、《三国演义》等经典影视剧集&#xff0c;同时也吸引了大量用户欣赏、品鉴这些人文经典 。但美中不足的是&#xff0c;由于拍摄年代久远、拍摄设备落后、数据多次…

神舟电脑文件误删怎么办?这些恢复方法助你轻松解决

神舟电脑文件误删怎么办&#xff1f;在信息爆炸的时代&#xff0c;电脑已经成为我们日常生活和工作中不可或缺的重要工具。然而&#xff0c;有时我们会因为一些不小心的操作&#xff0c;误删了电脑中的重要文件&#xff0c;尤其是在使用神舟电脑这类高性能设备时&#xff0c;文…

怎么做出用于收集信息的二维码?采集信息的表单二维码制作技巧

现在二维码在日常生活中的应用越来越广泛&#xff0c;经常被用来展示多种内容展示&#xff0c;比如视频、图片、文件、音频、文本等内容&#xff0c;都可以通过生成二维码的方式来为其他人提供相关信息的展示。二维码除了有展示内容的用途外&#xff0c;现在很多人也会生成表单…

短剧分销小程序:影视产业链中的新兴力量

一、引言 在数字化浪潮的推动下&#xff0c;影视产业正迎来一场深刻的变革。短剧分销小程序作为这场变革中的新兴力量&#xff0c;正以其独特的魅力和价值&#xff0c;逐渐在影视产业链中崭露头角。本文将探讨短剧分销小程序在影视产业链中的新兴地位、其带来的变革以及未来的…

【枚举】564. 寻找最近的回文数

本文涉及知识点 枚举 LeetCode564. 寻找最近的回文数 给定一个表示整数的字符串 n &#xff0c;返回与它最近的回文整数&#xff08;不包括自身&#xff09;。如果不止一个&#xff0c;返回较小的那个。 “最近的”定义为两个整数差的绝对值最小。 示例 1: 输入: n “123”…

【日记】常去的那家饭馆转让了……(399 字)

正文 晚上吃饭&#xff0c;常去的那家饭馆门市转让了&#xff0c;不做了。sad。 不久之前&#xff0c;临近下班了&#xff0c;我忘了报一个表给副行长&#xff0c;那时候系统已经进不去了&#xff0c;查不了数据。于是我随便转发了一张以前的日报表给他&#xff0c;日期都没改。…

长亭雷池部署

安雷池推荐环境 我这个网站的1804也就是18.04 Index of /ubuntu-releases/ (163.com) 然后照着ppt做就行自带ubunutu 我是默认安装不是简易安装 之前在自己的虚拟机docker上试过安装github上的雷池 现在重新安装了ubuntu 在我的ubuntu上安装一个雷池 这是长亭的学习计划 …

Elasticsearch 认证模拟题 - 19

一、题目 使用异步查询 task1 索引&#xff0c;并且 找到 miantable_name 字段值为 name8 的文档 1.1 考点 异步搜索 1.2 答案 POST task1/_async_search {"query": {"term": {"miantable_name": {"value": "name8"}}}…

excel中按多列进行匹配并对数量进行累加

公司的生产计划是按订单下发&#xff0c;但不同订单的不同产品中可能有用到相同的配件&#xff0c;按单1对1时&#xff0c;对计算机十分友好&#xff0c;但对于在配件库检料的工人来说就比较麻烦&#xff0c;上百条产品里可能会有多条都是相同的产品&#xff0c;首先考虑的办法…

Tuple 元组

文章目录 一、什么是元组 &#xff1f;二、元组的具体操作2.1 创建元组2.1.1 tuple() 创建元组函数和 list() 创建列表函数总结 2.2 元组的元素访问操作2.3 元组的元素计数操作2.4 zip 对象 一、什么是元组 &#xff1f; 列表属于可变序列,可以任意修改列表中的元素。 元组的…

前端菜鸡流水账日记 -- pnpm的学习

哈咯哇大家&#xff0c;我又来了&#xff0c;最近稍微悠闲一些&#xff0c;所以就趁着这个机会学习一些新的知识&#xff0c;今天就是碰巧遇到了pnm&#xff0c;这个可以看作是npm的升级版本&#xff0c;比npm要快&#xff0c;用起来也更得劲更迅速 官网地址&#xff1a;https…

SJ704安全帽电绝缘性能测试仪

一、仪器用途 用于测试安全帽对电的绝缘性能。 二、主要技术指标 1、电流表示值误差1% 2、电压表示值误差1% 3、计时器示值误差1% 4、探头直径4mm&#xff0c;顶端为半球形 5、能在1min内电压增加至1200V25V&#xff0c;保持15s。最大测试电压5KV。 三、仪器特征 1、配…

FuTalk设计周刊-Vol.036

&#x1f525;AI漫谈 热点捕手 1、Stable Zero123:从单张图像生成高质量 3D 对象 Stable Zero123 可以生成物体的新颖视图&#xff0c;展示从各个角度对物体外观的 3D 理解&#xff0c;由于训练数据集和高程条件的改进&#xff0c;其质量比 Zero1-to-3 或 Zero123-XL 显著提高…

南通国际高中有哪些?南通惠立学校高中部校长见面日重磅来袭

惠灵顿&#xff08;中国&#xff09;自2011年成立以来&#xff0c;一直坚持深耕国际与双语教育&#xff0c;拥有丰厚的办学经验。依托于集团化的深厚经验南通惠立学校于2024-2025学年开设9-11年级&#xff0c;这所南通国际高中为高中学生搭建一个集卓越升学成果、强大师资、纯正…

Elasticsearch 认证模拟题 - 18

一、题目 为一个索引&#xff0c;按要求设置以下 dynamic Mapping 一切 text 类型的字段&#xff0c;类型全部映射成 keyword一切以 int_ 开头命名的字段&#xff0c;类型都设置成 integer 1.1 考点 字段的动态映射 1.2 答案 # 创建索引和索引模板 PUT my_index {"m…