【问题标题】:How can i distribute prize to the winners in my game app?如何在我的游戏应用程序中向获奖者分配奖品?
【发布时间】:2021-12-05 13:02:54
【问题描述】:

我正在制作一个基于知识的游戏,用户参与其中,如果他们获胜并获得符合标准的排名,他们将获得宝石、硬币等。

示例 - 一个游戏,其中有 500 个参与者,并且预定义的奖品分配类似于...

Rank 1 gets 50000 coins
Rank 2 gets 40000 coins
Rank 3 to 50 gets 20000 coins
Rank 51 to 200 gets 5000 coins
Rank 201 to 500 gets 1000coins

如果用户玩游戏并假设他的排名是 81 。那么如何查看分配情况并奖励他,即 5000 个硬币。

我可以使用 Hashmap 来创建某种键值对吗..如下所示..

HashMap<Integer, Integer> distribution = new HashMap<>();
distribution.add(1,50000);
.
.
.
distribution.add(500,1000);

任何建议都会促进我的工作。

【问题讨论】:

    标签: java android-studio hashmap key-value


    【解决方案1】:

    我建议您创建一个 Range 包装类并在该范围内查找键的值; 这可能会有所帮助:https://stackoverflow.com/a/1314708/10052779

    【讨论】:

      【解决方案2】:

      如果你想使用 HashMaps,你可以做几个循环。

      HashMap<Integer, Integer> distribution = new HashMap<>();
      //first and second place
      distribution.add(1,50000); 
      distribution.add(2,40000);
      
      //3rd through 50th place
      for(int i = 3; i < 51; i++) 
          distribution.add(i,20000);
      
      //51 through 200th place
      for(int i = 51; i < 201; i++) 
          distribution.add(i, 5000);
      
      //201 through 500th place
      for (int i = 201; i < 501; i++)
          distribution.add(i, 1000);
      

      然后你就完成了!但是,除非您希望它每次都运行,否则我会将分发设置为静态变量,因此您只需运行一次,之后每次运行都会保留它。

      【讨论】:

      • 是的,这就是我声明将其设为静态变量的原因。还有比这更好的方法。您可以只制作 1 个 [50000, 40000, 20000, 5000, 1000] 数组,然后只说如果第一名则获得数组 [0],否则如果第二名则获得数组 [1],否则如果 3
      • boom 你刚刚回答了自己的问题,按顺序排列所有可能的硬币,然后根据人的“等级范围”获取它们(在 2 到 100 之间得到数组 [1] 等) )。 (顺便说一句,是的,我只是弥补了术语排名范围)
      • 糟糕,我不小心删除了我的评论。但是,嘿,谢谢,我理解你的方法。将在几个小时内接受答案。谢谢老哥
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多