首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AS3宾果游戏-有可能吗?

AS3宾果游戏-有可能吗?
EN

Stack Overflow用户
提问于 2013-04-18 14:02:34
回答 1查看 668关注 0票数 0

我完全不知所措。

我想随机生成宾果票,但我现在被困住了。重点是,有以下代码:

代码语言:javascript
复制
var startNum:Number = 1;
var endNum:Number = 90;
var rp:RandomPlus = new RandomPlus(endNum, startNum);

var variant_1:Array = new Array
                    (rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), 
                     "", "",  "", "",  "", "", "", "", "", "", "", "");

var variant_2:Array = new Array
                    (rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), 
                     "", "",  "", "",  "", "", "", "", "", "", "", "");

var variant_3:Array = new Array
                    (rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), 
                     "", "",  "", "",  "", "", "", "", "", "", "", "");

var variant_4:Array = new Array
                    (rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), 
                     "", "",  "", "",  "", "", "", "", "", "", "", "");

var variant_5:Array = new Array
                    (rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), 
                     "", "",  "", "",  "", "", "", "", "", "", "", "");

var variant_6:Array = new Array
                    (rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), rp.getNum(), 
                     "", "",  "", "",  "", "", "", "", "", "", "", "");



function shuffle(a, b):Number {
    var num:Number = Math.round(Math.random()*2)-2;
    return num;
}


var b:Array = variant_1.sort(shuffle);
var cnt:uint=0;
for (var i = 0; i<b.length/9; i++) {
    for (var j = 0; j<b.length/3; j++) {
        var grid1:box=new box();
        grid1.x=5+(grid1.width-1)*j;
        grid1.y=5+(grid1.height-1)*i;
        grid1.txt.text=b[cnt];
        addChild(grid1);
        cnt++;
    }
}

var c:Array = variant_2.sort(shuffle);
var cnt2:uint=0;
for (var k = 0; k<c.length/3; k++) {
    for (var l = 0; l<c.length/9; l++) {
        var grid2:box=new box();
        grid2.x=5+(grid2.width-1)*k;
        grid2.y=100+(grid2.height-1)*l;
        grid2.txt.text=c[cnt2];
        addChild(grid2);
        cnt2++;
    }
}

var d:Array = variant_3.sort(shuffle);
var cnt3:uint=0;
for (var m = 0; m<d.length/3; m++) {
    for (var n = 0; n<d.length/9; n++) {
        var grid3:box=new box();
        grid3.x=5+(grid3.width-1)*m;
        grid3.y=200+(grid3.height-1)*n;
        grid3.txt.text=d[cnt3];
        addChild(grid3);
        cnt3++;
    }
}

var e:Array = variant_4.sort(shuffle);
var cnt4:uint=0;
for (var o = 0; o<e.length/3; o++) {
    for (var p = 0; p<e.length/9; p++) {
        var grid4:box=new box();
        grid4.x=5+(grid4.width-1)*o;
        grid4.y=300+(grid4.height-1)*p;
        grid4.txt.text=e[cnt4];
        addChild(grid4);
        cnt4++;
    }
}

var f:Array = variant_5.sort(shuffle);
var cnt5:uint=0;
for (var q = 0; q<f.length/3; q++) {
    for (var r = 0; r<f.length/9; r++) {
        var grid5:box=new box();
        grid5.x=5+(grid5.width-1)*q;
        grid5.y=400+(grid5.height-1)*r;
        grid5.txt.text=f[cnt5];
        addChild(grid5);
        cnt5++;
    }
}

var g:Array = variant_6.sort(shuffle);
var cnt6:uint=0;
for (var s = 0; s<g.length/3; s++) {
    for (var t = 0; t<g.length/9; t++) {
        var grid6:box=new box();
        grid6.x=5+(grid6.width-1)*s;
        grid6.y=500+(grid6.height-1)*t;
        grid6.txt.text=g[cnt6];
        addChild(grid6);
        cnt6++;
    }
}

它的输出如下:

如你所见,我有162个单元格被分成9x3个表格。每个表包含15个数字和12个空空间。所有的数字都在1-90之间,不要重复.这些数字的位置是随机的。

真正的问题是,我必须遵守几条规则:

  • 每个表中的数字之和相等。
  • 有9栏,必须排列如下:第一栏1-9,第二栏10-19,第三栏20-29,.,第九栏80-90。
  • 每一行都有4个空格。

现在怎么办?这似乎不可能。

EN

回答 1

Stack Overflow用户

发布于 2013-04-18 19:28:10

你真的应该改进你的代码。每个变量不需要一个变量,您可以使用一个二维数组来实现。就像这样:

代码语言:javascript
复制
var tables:Array = new Array();

for(var i:uint = 0; i <= 6; 6++){
    tables[i] = fillTable();
    drawTables(tables);
}

...

function fillTable():Array{
    var emptySpaces:Array = new Array();
    var tableData:Array   = new Array();
    emptySpaces = getRandomElements(); //this function should return an array which will represent all 12 empty spaces, otherwise, 12 numbers between 0 and 26

   for (var i = 0; i <= 27; i++) {
       if(emptySpaces.indexOf(i) < 0){ // if my current i isn't a empty space I give it a value
           tableData[i] = generateRandomBasedOnIndex(i);
       }
   }
}

function generateRandomBasedOnIndex(i):uint{
    var maxInt = (i+1) * 10 - 1;
    var minInt = Math.abs(maxInt + 1 - 9);

    return new RandomPlus(maxInt, minInt).getNum();
}

function getRandomElements():Array{
    // TODO - homework :)
}

function drawTables(tableData:Array):void{
    // just use tableData array to place yours display objects on Stage
}

为什么你需要所有数字之和在表上相等?这是一条规则?我不认为这种事发生在现实生活中。

Ps.:我这里没有任何ActionScript编辑器,所以您可能会发现一些语法错误,但是仔细看看这些行,我认为逻辑应该工作得很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16085141

复制
相关文章

相似问题

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