int w = 33, h = 33, gS = 3, pos = 0, x = 0, y = 0, cd = 200, targetFrameRate = 10, speed = 10; //w & h sizes should be odd int[][] maze = new int[h][w]; boolean up, down, left, right, won = false; ArrayList hist = new ArrayList(); void mousePressed() { pos = 0; hist.clear(); for (int j=0;j= nodes.length || c >= nodes[0].length || nodes[r][c]==1) return; maze[(r+pr)*2/2][(c+pc)*2/2] = maze[r*2][c*2] = nodes[r][c] = 1; hist.add(new int[h][w]); //these two lines is just so you can play it back. next line faster than two loops for array copy for(int j=0;j idxs = new ArrayList(); idxs.add(0); idxs.add(1); idxs.add(2); idxs.add(3); for (int i=0;i<4;i++) { int idx=idxs.remove((int)random(0,idxs.size())),nr=r+new int[]{-1,0,1,0}[idx],nc=c+new int[]{0,1,0,-1}[idx]; genmaze(nodes, nr, nc, r, c); } } //size(w*gS, h*gS); void setup() { size(100,100); frameRate(targetFrameRate); noStroke(); textSize(30); mousePressed(); } void draw() { if (frameCount % (targetFrameRate/speed) == 0) pos+=3; for (int j=0;j= 0 && ny < h && ny >= 0 && maze[nx][ny]==1) { x = nx; y = ny; } } } void keyPressed() { if (key=='w') up=true; else if(key=='s') down=true; else if (key=='a') left=true; else if(key=='d') right=true; } void keyReleased() { if (key=='w') up=false; else if(key=='s') down=false; else if (key=='a') left=false; else if(key=='d') right=false; }