unity学习(51)——服务器三次注册限制以及数据库化角色信息6--完结

同一账号只写第一次,不同账号第一次爆炸 ,就因为下面部分得到逻辑有问题

修改后的代码如下:1.成功完成角色注册信息的数据库化记录。2.每个账号上限3个角色。3.角色是可以重名的,但是角色的id不会重名。

internal class UserCache
{
      private ConcurrentDictionary<string, List<string>> userPlayerIds = dataUserPlayerIds();
      //private ConcurrentDictionary<string, List<string>> userPlayerIds = new ConcurrentDictionary<string, List<string>>();
      //private ConcurrentDictionary<string, PlayerModel> players = new ConcurrentDictionary<string, PlayerModel>();
      private ConcurrentDictionary<string, PlayerModel> players = dataPlayers();//所有账号的角色信息,虽然角色信息中不包含账号id

      public static ConcurrentDictionary<string, List<string>> dataUserPlayerIds()//这样好像就行了
      {
          StreamReader file = new StreamReader("userPlayerIds.txt");
          string all = file.ReadToEnd();
          file.Close();
          ConcurrentDictionary<string, List<string>> results = new ConcurrentDictionary<string, List<string>>();
          try
          {
              //ConcurrentDictionary<string, List<string>> results = JsonConvert.DeserializeObject<ConcurrentDictionary<string, List<string>>>(JsonConvert.DeserializeObject(all).ToString());
              results = JsonConvert.DeserializeObject<ConcurrentDictionary<string, List<string>>>(JsonConvert.DeserializeObject(all).ToString());
          }
          catch {
              Console.WriteLine("dataUserPlayerIds()中出现问题");
          }
              return results;
          //return JsonConvert.DeserializeObject(all);
      }
      public static ConcurrentDictionary<string, PlayerModel> dataPlayers()//这样好像就行了
      {
          StreamReader file = new StreamReader("players.txt");
          string all = file.ReadToEnd();
          file.Close();
          ConcurrentDictionary<string, PlayerModel> results = new ConcurrentDictionary<string, PlayerModel>();
          try
          {
              results = JsonConvert.DeserializeObject<ConcurrentDictionary<string, PlayerModel>>(JsonConvert.DeserializeObject(all).ToString());
          }
          catch {
              Console.WriteLine("dataPlayers()中出现问题");
          }
              return results;
          //return JsonConvert.DeserializeObject(all);
      }
      public void put(string accId, PlayerModel model)//逻辑刚开始有些小问题,问题不大
  {
          bool ur = false;
          if (this.userPlayerIds.ContainsKey(accId))//这里出了问题了,同在一个put函数中
          {

              List<string> stringList;
              List<string> stringList_out;
              this.userPlayerIds.TryGetValue(accId, out stringList);//得到已有的角色id(player)
              stringList.Add(model.id);//给账号新加一个角色

              //如果已存账号信息--
              //重复的键,TryAdd是家不进去的
              ur = this.userPlayerIds.TryRemove(accId, out stringList_out);
              ur = this.userPlayerIds.TryAdd(accId, stringList);//同名 键 应该是可以覆盖的--不是第一次先用字符串修改值,再增加到对应键值对中
          }
          else
          {//重来没有,自然不会重复
              ur = this.userPlayerIds.TryAdd(accId, new List<string>() { model.id });//第一次只加1个
          }
          if (ur)//这次应该没问题了
          {
              StreamWriter file = new StreamWriter("userPlayerIds.txt");
              string json = JsonConvert.SerializeObject(this.userPlayerIds);
              Console.WriteLine("userPlayerIds.TryAdd:" + json);
              file.Write(json);
              file.Close();
          }
    bool pr=this.players.TryAdd(model.id, model);//最后真正怎加角色信息 player=角色 account=账号
          //将角色详细信息写入文件
          if (pr)
          {
              StreamWriter file = new StreamWriter("players.txt");
              string json = JsonConvert.SerializeObject(this.players);
              Console.WriteLine("players.TryAdd:" + json);
              file.Write(json);  
              file.Close();
          }
      }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024 年广东省职业院校技能大赛(高职组) “云计算应用”赛项样题⑤

2024 年广东省职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项样题⑤ 模块一 私有云&#xff08;50 分&#xff09;任务 1 私有云服务搭建&#xff08;10 分&#xff09;任务 2 私有云服务运维&#xff08;25 分&#xff09;任务 3 私有云运维开发&#xf…

DC/DC高压模块直流升压可调稳压输出升压变换器5V12V24V48V转50V110V150V130V200V250V300V450V500V600V800V

特点 效率高达 80%以上1*2英寸标准封装单电压输出价格低稳压输出工作温度: -40℃~85℃阻燃封装&#xff0c;满足UL94-V0 要求温度特性好可直接焊在PCB 上 应用 HRB W2~40W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为&#xff1a;4.5~9V、9~18V、及18~36V、…

bugreport中查看开发者选项动画时长缩放日志

首先打开开发者选项&#xff0c;抓取一份bugreport解压后找到bugreport-机型-时间点.zip文件&#xff0c;然后再解压此文件 解压后进入该文件&#xff0c;找到bugreport-机型-时间点.txt文件 打开此文件&#xff0c;搜索“animator_duration_scale”关键字&#xff0c;找到图片…

虚拟机(KVM)克隆

当需要批量部署虚拟机时&#xff0c;可以使用克隆虚拟机的方式来进行。 使用图形界面来克隆虚拟机。 [rootzhoujunru_node1 zhou]# virsh list --allId Name State ------------------------------ vm01 shut off- vm01-clone shut off克隆完成。

如何在Linux本地搭建Tale网站并实现无公网ip远程访问

文章目录 前言1. Tale网站搭建1.1 检查本地环境1.2 部署Tale个人博客系统1.3 启动Tale服务1.4 访问博客地址 2. Linux安装Cpolar内网穿透3. 创建Tale博客公网地址4. 使用公网地址访问Tale 前言 今天给大家带来一款基于 Java 语言的轻量级博客开源项目——Tale&#xff0c;Tale…

LeetCode # 1161. 最大层内元素和

1161. 最大层内元素和 题目 给你一个二叉树的根节点 root。设根节点位于二叉树的第 1 层&#xff0c;而根节点的子节点位于第 2 层&#xff0c;依此类推。 请返回层内元素之和 最大 的那几层&#xff08;可能只有一层&#xff09;的层号&#xff0c;并返回其中 最小 的那个。…

【Consul】注册Consul服务时报错404

【Consul】注册Consul服务时报错404 大家好 我是寸铁&#x1f44a; 总结了一篇golang注册Consul服务时报错404✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 问题背景 今天寸铁想注册一个服务到Consul服务中心&#xff0c;却发现报错了&#xff0c;错误码是404&#xff0c;下面和…

【 TypeScript 】对TypeScript中泛型的理解?应用场景?

1. 是什么 泛型程序设计(generic programming)是程序设计语言的一种风格或范式 泛型允许我们在强类型程序设计语言中编写代码时使用一些以后才指定的类型&#xff0c;在实例化时作为参数指明这些类型 在typescript中&#xff0c;定义函数&#xff0c;接口或者类的时候&#xff…

力扣--深度优先算法/回溯算法90.子集Ⅱ

思路分析&#xff1a; 成员变量&#xff1a; result: 用于存储最终的子集结果。path: 用于存储当前正在构建的子集。 DFS函数&#xff1a; dfs(vector<int>& nums, int start): 递归地生成子集。 从给定的start索引开始遍历数组。如果当前元素与前一个元素相同&#…

基于STM32的温湿度数据采集系统

目录 目录 I 摘要 I Abstract II 第一章 绪论 1 1.1温湿度传感器的背景及意义 1 1.2温湿度传感器国内发展现状 1 1.3温湿度传感器的发展趋势 2 第二章 温湿度原理及相关技术 3 2.1温湿度传感器 3 2.1.1温度传感器 3 2.1.2 湿度传感器 4 2.1.3 温湿度传感器物理参数及定义 5 2.…

计算机组成原理-练手题集合【期末复习|考研复习】

前言 总结整理不易&#xff0c;希望大家点赞收藏。 给大家整理了一下计算机组成原理中的各章练手题&#xff0c;以供大家期末复习和考研复习的时候使用。 参考资料是王道的计算机组成原理和西电的计算机组成原理。 计算机组成原理系列文章传送门&#xff1a; 第一/二章 概述和数…

信钰证券|股票多少岁可以开户?怎么开户?

网上处理股票开户要求投资者年龄为18-70周岁&#xff08;16-18周岁要求提交收入证明才能开户&#xff0c;70周岁及70周岁以上需求自己带身份证和银行卡去营业部现场处理开户&#xff09;。 开户流程&#xff1a; 1、选好券商&#xff0c;下载并注册相关券商APP&#xff1b; …

嵌入式工资为啥比纯软工资低那么多?

嵌入式工资为啥比纯软工资低那么多&#xff1f; 在开始前我分享下我的经历&#xff0c;我刚入行时遇到一个好公司和师父&#xff0c;给了我机会&#xff0c;一年时间从3k薪资涨到18k的&#xff0c; 我师父给了一些 电气工程师学习方法和资料&#xff0c;让我不断提升自己&…

Focal Modulation Networks聚焦调制网络

摘要 我们提出了 焦点调制网络 &#xff08;简称 FocalNets) &#xff0c;其中 自注意&#xff08; SA &#xff09;被 Focal Modulation 替换&#xff0c;这种机制 包括三个组件&#xff1a;&#xff08; 1 &#xff09;通过 depth-wise Conv 提取分级的上下文信息&#xff0c…

3D视觉引导缸套自动化上下料

缸套作为制造业中关键零部件&#xff0c;其下料环节的效率和精度直接影响到整个生产流程的顺利进行。随着3D视觉技术的不断发展&#xff0c;越来越多的企业开始采用3D视觉引导技术实现缸套的自动化下料&#xff0c;从而提升生产效率、降低成本并提高产品质量。 案例背景&#x…

【计算机视觉】图像处理算法(形态学滤波篇)

来源&#xff1a;《OpenCV3编程入门》&#xff0c;怀念毛星云大佬&#x1f56f;️ 说明&#xff1a;本系列重点关注各种图像处理算法的原理、作用和对比 形态学滤波(1 ):腐蚀与膨胀 形态学槪述 数学形态学的概念&#xff1a; 数学形态学(Mathematical morphology)是立在格论…

【数据结构与算法】解题20240312

这里写目录标题 一、字符串转换整数 (atoi)二、1. 两数之和三、128. 最长连续序列四、73. 矩阵置零 一、字符串转换整数 (atoi) 请你来实现一个 myAtoi(string s) 函数&#xff0c;使其能将字符串转换成一个 32 位有符号整数&#xff08;类似 C/C 中的 atoi 函数&#xff09;。…

前端之用HTML做一个汇款单

例子 代码 里面注释是我我对运用到的知识的理解 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>工商银行电子汇款单</title> </head> <body><h3>工商银行电子汇款单</…

docker学习进阶篇

一、dockerfile解析 官方文档&#xff1a; Dockerfile reference | Docker Docs 1.1、dockfile是什么&#xff1f; dockerfile是用来构建docker镜像的文本文件&#xff0c;由一条条构建镜像所需的指令和参数构成的脚本。 之前我们介绍过通过具体容器反射构建镜像(docker comm…

柚见第十一期(前端页面开发)

创建队伍 便于控制样式,在外面套一层div 创建假数据模拟后端传来数据 //假数据模拟 const initFormData { "name": "", "description": "", "expireTime": "", "maxNum": 0, "passwor…