2014-01-29 2 views
0

Я пытаюсь сделать игру в Обработке, в которой пользователь должен ударить снарядом в серию домино, и как только произойдет удар, все домино после того, как он начнет падать.Добавить эффект падения домино после того, как снаряд попадает в домино в обработке?

Пример: http://www.fallingdominoes.com/

То есть, все ключевые домино изначально прямо: | | | | | | | | | |

Однажды снаряд хиты говорят первое домино, то:///////////

Say, снаряд Хиты 6-домино, то: | | | | |///////

Кода и игры для снаряда здесь: http://www.openprocessing.org/sketch/28940

Всего это происходит в обработке.

Может кто-то помочь нам в том, что именно нужно сделать? и как это сделать?

+0

в 2d или 3d? (Кстати, пример falldominoes - это предварительная визуализация сцены, всегда воспроизводящая одну и ту же последовательность одновременно) –

+0

Нам нужен еще больше информации. Вы говорите о полномасштабной модели физики, где первая домино попадает во вторую, которая попадает в третью, и т. Д.? Или вы просто говорите о том, чтобы показать, как некоторые домино встают, а другие падают? У вас также будет больше удачи, если вы разместите здесь пример (не всю вашу программу, но достаточно, чтобы мы могли скопировать и вставить, чтобы получить представление о том, что вы собираетесь делать). –

ответ

1

Здесь я сделал небольшой тест для вас! Его не полностью реализован физический движок, но я думаю, его достаточно близко ...

int numberOdominos = 60; 
Domino [] myDominos = new Domino[numberOdominos]; 
int currentDropDomino = -1; 
void setup() { 
    size(600, 100); 
    myDominos[0] = new Domino(null); 
    for (int i = 1; i < myDominos.length; i++) { 
    myDominos[i] = new Domino(myDominos[i-1]); 
    } 
} 
void draw() { 
    background(0); 
    String s = getDominoState(); 
    fill(255,0,0); 
    text("press any button from 0 to " + myDominos.length + " to drop that domino and all subsequent ones!!!! (r to reset)",20,10,width,height); 
    fill(255); 
    text(s, 5, 40, width, 100); 
} 
String getDominoState() { 
    String result = ""; 
    for (int i = 1; i < myDominos.length; i++) { 
    if(currentDropDomino != -1 && i == currentDropDomino) { 
     myDominos[i].push(); 
    } 
    result += myDominos[i].state; 
    } 
    if(currentDropDomino != -1) currentDropDomino += 1; 
    if(currentDropDomino > myDominos.length) 
     currentDropDomino = -1; 

    return result; 
} 
class Domino { 
    Domino previous; 
    char state = '|'; 
    Domino(Domino previous) { 
    this.previous = previous; 
    } 
    void reset() { 
    state = '|'; 
    } 
    char checkPrevious() { 
    if (previous.state == '/') push(); 
    return state; 
    } 
    void push() { 
    state = '/'; 
    } 
} 
void reset() { 
    for(int i = 0; i < myDominos.length; i++) 
    myDominos[i].reset(); 
} 
void keyPressed() { 
    if(key == 'r' || key == 'R') { 
    reset(); 
    return; 
    } 
    int pushDomino = 0; 
    try { 
    pushDomino = Integer.parseInt(""+key); 
    } 
    catch(NumberFormatException e) { 
    println("thats not a number..."); 
    return; 
    } 
    if(pushDomino < myDominos.length) currentDropDomino = pushDomino; 
} 

Вам нужно только изменить метод Keypressed() с одним из вашего выбора; что-то вроде throwProjectileAt(int position) {}

+0

DUDE! Ты обалденный! – user248884