首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从四张桌子中随机挑选

从四张桌子中随机挑选
EN

Stack Overflow用户
提问于 2014-10-05 07:40:38
回答 6查看 271关注 0票数 6

我有一点问题,想出一个好的标题,但我现在要解释。

我在建一个网络游戏。我在努力建立摧毁武器的选择。

我有四种武器--攻击、防御、巡逻和间谍。巡逻和间谍武器有3级武器,攻防部队有15级。

我有一张每种不同类别的桌子。名叫w1,w2,w3,w4.当然还有用户的ID。

我给出了每个等级点,例如,w15值15分,w2值2分,并且我构建了一个函数,计算攻击者对防御者破坏了多少点。

我被困的地方是如何随机挑选武器?

假设袭击者摧毁了价值100点的武器。所以可以是巡逻一级的100件武器,或每类25件武器,或10件10件武器。我需要它在不同类别(攻击、防御、巡逻和间谍)和武器之间(w1、w2、w3.)之间随机排列。另外,我需要在防守者拥有的武器数量的限制下,他不能失去比他更多的武器。

非常感谢!!我知道我写了一个很长的问题

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-10-16 18:58:43

我认为这更像是一个逻辑问题,而不是一个关于处理表格的技术性问题。如果您首先处理逻辑,那么您可以很容易地在表上执行所需的操作,不管您想要什么。我们只需要知道每个项目中有多少会被随机选择使用(销毁)。以下是sudo-code / part php中的随机选择方法:

代码语言:javascript
复制
1. Query database for available items and their relative values.
代码语言:javascript
复制
2. Store information as a multi-dimensional Array
代码语言:javascript
复制
3. Shuffle the Array
代码语言:javascript
复制
 //in php 
    bool shuffle ( array $itemsArray() )
代码语言:javascript
复制
4. Iterate through each item in the array and add 1
   to a variable for that item if, we have not reached our
   limiting factors (amount available and cost vs remaining points).
   Do this until all available points are allotted to a variable.
代码语言:javascript
复制
 //in php
    $i = 0;   
    do {

      if ($itemsArray[$i][numAvail] > 0 &&         
         ($availiblePoints - $itemsArray[$i][cost] >= $itemsArray[$i][cost]){   
            $$itemsArray[$i]++
            //use of '$$' for variable variable  
            $availiblePoints-=$itemsArray[$i][cost];
      }
      else {
      countSkips++ 
     //need to keep track of how many items we skip
     //if $availiblePoints is not zero yet but skips is size of array then 
     //we are done and have leftover points that cant be used.
      }  
         $i++;
      if ($i > count($itemsArray)) { $i=0; };
      //start over if we have gone past the end of our Array

   } while ($availiblePoints > 0 && $countSkips < count($itemsArray) );
代码语言:javascript
复制
5.  Logic Done. Now use the new variables to perform action on tables

因为数组是随机调整的,所以不管我们有多少点,结果都是随机的。如果我们有100分,而随机数组中的第一个项目花费100分,或者前4个项目花费25分,那么随机性就会以任何方式完成。

这只是一个概念。代码可以大量改进,例如,我们保存的变量实际上应该在一个数组中,这样我们就可以在执行表上的操作时遍历它们。

票数 1
EN

Stack Overflow用户

发布于 2014-10-05 08:02:06

先把你的四张桌子放在这边

代码语言:javascript
复制
SELECT * FROM (
  SELECT * FROM w1
  UNION
  SELECT * FROM w2
  UNION
  SELECT * FROM w3
  UNION
  SELECT * FROM w4
)

然后计算你的权重函数,然后随机挑选。

代码语言:javascript
复制
... ORDER BY RAND() LIMIT 5;
票数 2
EN

Stack Overflow用户

发布于 2014-10-15 09:17:56

代码语言:javascript
复制
// randomly picks a number between 1 and 4
$randomWeapon = rand(1,4);

// Creates for ex. SELECT * FROM w1
$selectWeapon = mysqli($con, "SELECT * FROM w$randomWeapon"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26200646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档