Как мога да създам правила за моите генериращи платформи?

Работя върху 2D игра с вертикално превъртане, която е базирана на doodle jump и използвам flash и as3, за да я създам. Сложих превъртане и хвърляне на хайвера на платформата и досега добре, но нещо, което рандомизирам x и y за всяка платформа и очевидно те просто хвърлят хайвера си, където пожелаят (вътре в сцената, това е единственото ми действително правило). Искам да създам правила, така че максималното разстояние между новата платформа и последната да е, да речем, 35px.

Текущият ми случаен код е:

public function createPlatform():void
        {
            //randomY();
            var newY:Number = Math.random() * 600;
            var X:Number = Math.random() * 500;
            var tempPlatform:mcPlatform = new mcPlatform();
            tempPlatform.x = X;
            tempPlatform.y = newY;
            platforms.push(tempPlatform);
            mcContent.addChild(tempPlatform);
        }

Също така се опитах да направя произволно само за Y по този начин:

private function randomY():void 
        {   
            var flag:Boolean = false;
            while (flag == false) 
            {
                newY = Math.random() * 600;
                if(newY < lastY && (lastY - newY) < 50 && (lastY - newY) > 10)
                    {
                        newY = lastY;
                        flag = true;
                    }
            }
        }

смисълът на играта е героите да скачат от платформа на платформа и когато играта превърта съдържанието си, тя просто създава нов набор от платформи.

P.S.: newY е деклариран в началото на кода като 600, така че първият винаги започва от височината на сцената.


person Bruno Charters    schedule 22.05.2013    source източник


Отговори (2)


Вместо просто да поставяте произволно платформи, опитайте да започнете от долната част на екрана и да увеличавате y с произволна сума всеки път, когато поставите платформа.

Нещо като:

newY = Math.random() * 50;

While (newY < 600) {
            var X:Number = Math.random() * 500;
            var tempPlatform:mcPlatform = new mcPlatform();
            tempPlatform.x = X;
            tempPlatform.y = newY;
            platforms.push(tempPlatform);
            mcContent.addChild(tempPlatform);
            newY += 35 + math.random() * 50;
        }
person Ian Markowitz    schedule 23.05.2013
comment
това изглежда добре, освен че го направих без произволно за момента ще стане :D благодаря - person Bruno Charters; 23.05.2013

След като имате стойности за x и y на новата платформа, ще трябва да проверите x и y (или една от тях) с последната платформа, добавена към масива. Нещо като:

...
tempPlatform.x = X;
tempPlatform.y = newY;
lastPlatform = platforms[(platforms.length)-1]; //get the last added platform
var flag:Boolean = false;
   while (flag == false)
   {
        if(lastPlatform.y > tempPlatform.y ...)//set the condition(s) you need
        {
            //create new value
        } else {
           flag = true;
        }
   } 
 ...
person RST    schedule 23.05.2013
comment

имам JTable и JLabel, поставих някои стойности в таблицата! искам да внедря търсене в тази таблица и след това да задам стойността от търсената стойност на JLabel.

да предположим, че напиша 'f', така че myfunction ще търси къде в реда и 0-тата колона на myTable стойността започва с f, като по този начин ще получа стойността на този ред! сега искам да избера/маркирам целия този ред и да отпечатам стойността на JLabel.

Не знам как да маркирам този ред! има ли по-добър метод за търсене, прочетох за SwingX, но не намерих как всъщност да използвам JXTables.

- person tckmn; 24.05.2013