//Project4
//Muskan Srivastava
//11.6.04
//press 'z' to shuffle
//click to move images
boolean drawn = false;
int s = 20;
int x1,y1,x2,y2;
boolean pressed = false;
PImage[] imgs = new PImage[32];
PImage[] rand = new PImage[32];
PImage[] toDraw = new PImage[32];
int[] xA = new int[32];
int curDrag = -1;
int[] yA = new int[32];
int[] layer = new int[32];
int curLayer = 0;
int xnum = 8;
int ynum = 4;
boolean scrambled = false;
int offsetX = 0;
int offsetY = 0;
color clickColor;
int brushSize = 10;
void setup() {
reset();
size(600, 300);
noStroke();
load_ordered("sqr","jpg");
randomize();
}
void reset() {
int r = 0, t=0;
for(int i = 0; i < imgs.length; i++, t++) {
if((i)%8 == 0 && i > 0) {
r++;
t=0;
}
layer[i] = 0;
xA[i] = t * 75;
println(r * 75);
yA[i] = r * 75;
}
curLayer = 0;
drawn = false;
}
void load_ordered(String name, String ext)
{
for (int i = 0; i < 32; i++) {
imgs[i] = loadImage(name + str(i+1) + "." + ext);
}
}
void draw() {
//if(!pressed && !drawn) {
background(0);
boolean drew[] = new boolean[32];
int temp = 0;
if(scrambled)
toDraw = rand;
else
toDraw = imgs;
while(temp <= curLayer) {
for(int i = 0; i < imgs.length; i++ ) {
if(layer[i] == temp) {
image(toDraw[i], xA[i], yA[i]);
drew[i] = true;
}
}
temp++;
}
drawn = true;
// }
}
void keyReleased()
{
if (key == 'z' || key == 'Z') {
scrambled = (scrambled == true) ? false : true;
drawn = false;
reset();
}
}
void display_grid(PImage[] a, int across, int down)
{
int c = 0;
for (int y = 0; y < down; y++) {
for (int x = 0; x < across; x++) {
image(a[c], x*75, y*75);
xA[c] = x*75;
yA[c] = y*75;
c++;
}
}
}
void randomize()
{
int[] used = new int[imgs.length];
for (int c = 0; c < imgs.length; c++) {
int r = get_rand_index(used);
rand[c] = imgs[r];
}
}
int get_rand_index(int[] a)
{
int r = int(random(a.length));
if (in_array(r, a)) {
r = get_rand_index(a);
}
return r;
}
boolean in_array(int c, int[] a)
{
boolean yes = false;
for (int i = 0; i < a.length; i++) {
if (a[i] == c) {
yes = true;
print("yes");
break;
}
}
return yes;
}
void mousePressed() {
{
//clickColor = get(mouseX, mouseY);
}
if (!pressed) {
pressed = true;
x1 = int(mouseX-s/2);
y1 = int(mouseY-s/2);
x2 = s;
y2 = s;
}
}
void mouseReleased()
{
pressed = false;
curDrag = -1;
draw();
}
void mouseDragged() {
print(curDrag);
int dragged;
int temp = -1;
if(curDrag < 0) {
for(int i = 0; i<imgs.length; i++) {
if(mouseX < xA[i]+75 && mouseX > xA[i]) {
if(mouseY < yA[i]+75 && mouseY > yA[i]) {
if(layer[i] > temp) {
curDrag = i;
temp = layer[i];
offsetX = (mouseX) - xA[i];
offsetY = (mouseY) - yA[i];
layer[i] = ++curLayer;
}
}
}
}
} else {
int i = curDrag;
//copy(xA[i], yA[i], 75, 75, int(xA[i]+mouseX%75), int(yA[i]+mouseY%75), 75, 75);
xA[i] = mouseX - offsetX;
yA[i] = mouseY - offsetY;
image(toDraw[i], xA[i], yA[i]);
curDrag = i;
}
}
void keyPressed() {
//if(key == '+') {
// brushSize++;
}