Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays AS3从字母表数组中获取随机唯一字符_Arrays_Actionscript 3 - Fatal编程技术网

Arrays AS3从字母表数组中获取随机唯一字符

Arrays AS3从字母表数组中获取随机唯一字符,arrays,actionscript-3,Arrays,Actionscript 3,请随意复制并粘贴代码到您的fla中。它应该可以跟踪变量 我正在尝试创建一个儿童匹配游戏。它为字母表选择一个字母,并要求他们从3个选项中找到该字母。我还将随机选择他们从中挑选的3个字母,但这还不在代码中 我的问题是,大多数情况下,它都是使用“POP”删除数组变量,但有时我会得到重复项,有时会出现NULL。我做错了什么 import flash.events.MouseEvent; import flash.display.*; /// Array of the Alphabet var Alph

请随意复制并粘贴代码到您的fla中。它应该可以跟踪变量

我正在尝试创建一个儿童匹配游戏。它为字母表选择一个字母,并要求他们从3个选项中找到该字母。我还将随机选择他们从中挑选的3个字母,但这还不在代码中

我的问题是,大多数情况下,它都是使用“POP”删除数组变量,但有时我会得到重复项,有时会出现NULL。我做错了什么

import flash.events.MouseEvent;
import flash.display.*;

/// Array of the Alphabet
var Alphabet:Array = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];

// Arry to hold 3 unique letters
var randArray:Array = new Array();

function getRandomElementOf(array:Array):Object 
{
    var idx:int=Math.floor(Math.random() * array.length);
    // Supposed to remove the letter so can't be chosen again
    array.pop()

    // Adds 1 of 3 letters to new array
    randArray.push(array[idx]);
    return array[idx];
}


function testArray(evt:MouseEvent){


var One = getRandomElementOf(Alphabet);
trace(One);
var Two = getRandomElementOf(Alphabet);
trace(Two);
var Three = getRandomElementOf(Alphabet);
trace(Three);

trace("Can you find the letter " + One + "?   " + randArray);

// Resets the random Array
randArray = new Array();
// Resets the letters forto be chosen again.
Alphabet = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];
}

/// button to click stage to test vars
stage.addEventListener(MouseEvent.CLICK, testArray);
array.splice()

而不是array.pop()

我想出来了

array.splice()

而不是array.pop()


我想出来了

一个示例洗牌器,从字母表集合中拼接字母:

var alphabet:Vector.<String> = new <String>[ "A", "B", "C", "D", "E", "F", "G",
                                             "H", "I", "J", "K", "L", "M", "N",
                                             "O", "P", "Q", "R", "S", "T", "U",
                                             "V", "W", "X", "Y", "Z" ];

while (alphabet.length > 0)
{
    var letter:String = alphabet.splice(int(Math.random() *
                                            alphabet.length), 1)[0];
    trace(letter);
}
/** Alphabet collection */
var alphabet:Vector.<String>;

/** Reset alphabet */
function reset():void
{
    alphabet = new <String>[ "A", "B", "C", "D", "E", "F", "G",
                             "H", "I", "J", "K", "L", "M", "N",
                             "O", "P", "Q", "R", "S", "T", "U",
                             "V", "W", "X", "Y", "Z" ];
}

/** Get random letter from alphabet */
function getRandomLetter():String
{
    return (alphabet.splice(int(Math.random() *
                                alphabet.length), 1)[0]);
}

/** Shuffle alphabet collection */
function shuffleAlphabet():Vector.<String>
{
    var alphabetShuffled:Vector.<String> = new Vector.<String>();

    while (alphabet.length > 0)
    {
        alphabetShuffled.push(getRandomLetter());
    }

    return alphabetShuffled;
}
游戏输出示例:

你能找到字母Q吗?
R、 I,U,J,Y,D,K,W,T,F,N,G,A,P,X,H,Q,L,S,O,C,V,M,Z,E,B

你能找到字母P吗?
一、 F,C,S,J,P,Q,M,D,T,H,X,O,V,W,G,K,A,N,Y,L,U,Z,R,B,E

你能找到字母S吗?
B、 U,O,S,C,N,I,E,W,L,P,Q,Z,R,A,G,J,K,Y,M,T,V,X,D,H,F


示例shuffler,从字母表集合中拼接字母:

var alphabet:Vector.<String> = new <String>[ "A", "B", "C", "D", "E", "F", "G",
                                             "H", "I", "J", "K", "L", "M", "N",
                                             "O", "P", "Q", "R", "S", "T", "U",
                                             "V", "W", "X", "Y", "Z" ];

while (alphabet.length > 0)
{
    var letter:String = alphabet.splice(int(Math.random() *
                                            alphabet.length), 1)[0];
    trace(letter);
}
/** Alphabet collection */
var alphabet:Vector.<String>;

/** Reset alphabet */
function reset():void
{
    alphabet = new <String>[ "A", "B", "C", "D", "E", "F", "G",
                             "H", "I", "J", "K", "L", "M", "N",
                             "O", "P", "Q", "R", "S", "T", "U",
                             "V", "W", "X", "Y", "Z" ];
}

/** Get random letter from alphabet */
function getRandomLetter():String
{
    return (alphabet.splice(int(Math.random() *
                                alphabet.length), 1)[0]);
}

/** Shuffle alphabet collection */
function shuffleAlphabet():Vector.<String>
{
    var alphabetShuffled:Vector.<String> = new Vector.<String>();

    while (alphabet.length > 0)
    {
        alphabetShuffled.push(getRandomLetter());
    }

    return alphabetShuffled;
}
游戏输出示例:

你能找到字母Q吗?
R、 I,U,J,Y,D,K,W,T,F,N,G,A,P,X,H,Q,L,S,O,C,V,M,Z,E,B

你能找到字母P吗?
一、 F,C,S,J,P,Q,M,D,T,H,X,O,V,W,G,K,A,N,Y,L,U,Z,R,B,E

你能找到字母S吗?
B、 U,O,S,C,N,I,E,W,L,P,Q,Z,R,A,G,J,K,Y,M,T,V,X,D,H,F


我仍然在我上面的代码中得到重复。你知道为什么会这样吗。我原以为这一行可以完成字母表拼接(idx,1)-但它在拼接
Alphabet.splice(idx,1)[0]
后没有做第一个元素,并确保集合没有重置为完整的字母表。示例扩展为类似于您的游戏。太棒了!非常感谢。成功了。我不太确定我到底明白它在做什么,但我会仔细看看。谢谢你,我的朋友!杰出的向量是类型化集合,由于FlashPlayer运行时不必应用类型检查,因此运行速度更快。通过集合的迭代速度更快,元素上的操作在被引用时被类型化。这个例子同样适用于替换
向量。
用于
数组
。我在上面的代码中仍然得到了重复的代码。你知道为什么会这样吗。我原以为这一行可以完成字母表拼接(idx,1)-但它在拼接
Alphabet.splice(idx,1)[0]
后没有做第一个元素,并确保集合没有重置为完整的字母表。示例扩展为类似于您的游戏。太棒了!非常感谢。成功了。我不太确定我到底明白它在做什么,但我会仔细看看。谢谢你,我的朋友!杰出的向量是类型化集合,由于FlashPlayer运行时不必应用类型检查,因此运行速度更快。通过集合的迭代速度更快,元素上的操作在被引用时被类型化。替换
Vector.
对于
Array
,示例将起相同的作用。我根据给出的答案重新输入了代码。它似乎工作得很好。我根据给出的答案重编了代码。它似乎工作得很好。