課題で困ってしまったので初めて質問を失礼します。不慣れなのでもしもなにか失礼なことがありましたら申し訳ないです。
前提・実現したいこと
Processingで、2次元配列に整数を配置し、そこに画像を格納し、それをマウスで移動してクリックとドラッグで入れ替えるというものを作っています。
発生している問題
2次元配列に画像を格納してランダム配置まではできたのですが、マウス操作のところでどうしたら良いか分からなくなりました。
ただ図形を移動するだけとかなら出来るのですが、配列に入れたものを隣の配列と交換となるとよく分かりません。
参考になるコートがあったので、自分のものに当てはめてみようとしたのですが、エラーが沢山出て(対応してない部分が多いので当たり前かもしれない)、進め方がわからなくなりました。
Processing
1 2PImage[] img=new PImage[6]; 3boolean f; 4int[][] picIdx; 5PImage[] pic; 6int stick; 7int xx, yy; 8int dx; 9int dy; 10int [][] array; 11void setup(){ 12 13 size(800,1000); 14 15 16img[0]=loadImage("heart.jpg"); 17img[1]=loadImage("triangle.jpg"); 18img[2]=loadImage("clober.jpg"); 19img[3]=loadImage("dia.jpg"); 20img[4]=loadImage("spead.jpg"); 21img[5]=loadImage("moon.jpg"); 22f = false; 23array = new int[5][6]; 24} 25 26void draw(){ 27 28 29 if( ! f ) { 30 for( int i =0; i<5; i++){ 31 for( int j = 0; j<6; j++){ 32 array[i][j] = (int)random(0,5); 33 while( j > 0 && array[ i ][ j ] == array[ i ][ j - 1 ] ) 34 array[i][j] = (int)random(0,5); 35 while( i > 0 && array[ i ][ j ] == array[ i - 1 ][ j ] ) 36 array[i][j] = (int)random(0,5); 37 } 38 39 } 40 f = ( frameCount >= 1 ); 41 } 42 43 if (stick!=0) { 44 image(pic[stick], mouseX-dx, mouseY-dy); 45 } 46} 47 48void mousePressed() { 49 int x=mouseX/W; 50 int y=mouseY/H; 51 dx=mouseX%W; 52 dy=mouseY%H; 53 if (stick==0) { 54 xx=x; 55 yy=y; 56 stick=picIdx[y][x]; 57 picIdx[y][x]=0; 58 } else { 59 picIdx[yy][xx]=picIdx[y][x]; 60 picIdx[y][x]=stick; 61 stick=0; 62 } 63} 64 65image(img[array[0][0]], width/2-304,height/2-100,100,100); 66image(img[array[0][1]], width/2-204,height/2-100,100,100); 67image(img[array[0][2]], width/2-104,height/2-100,100,100); 68image(img[array[0][3]], width/2-4,height/2-100,100,100); 69image(img[array[0][4]], width/2+96,height/2-100,100,100); 70image(img[array[0][5]], width/2+196,height/2-100,100,100); 71 72 73image(img[array[1][0]], width/2-304,height/2,100,100); 74image(img[array[1][1]], width/2-204,height/2,100,100); 75image(img[array[1][2]], width/2-104,height/2,100,100); 76image(img[array[1][3]], width/2-4,height/2,100,100); 77image(img[array[1][4]], width/2+96,height/2,100,100); 78image(img[array[1][5]], width/2+196,height/2,100,100); 79 80 81image(img[array[2][0]], width/2-304,height/2+100,100,100); 82image(img[array[2][1]], width/2-204,height/2+100,100,100); 83image(img[array[2][2]], width/2-104,height/2+100,100,100); 84image(img[array[2][3]], width/2-4,height/2+100,100,100); 85image(img[array[2][4]], width/2+96,height/2+100,100,100); 86image(img[array[2][5]], width/2+196,height/2+100,100,100); 87 88 89image(img[array[3][0]], width/2-304,height/2+200,100,100); 90image(img[array[3][1]], width/2-204,height/2+200,100,100); 91image(img[array[3][2]], width/2-104,height/2+200,100,100); 92image(img[array[3][3]], width/2-4,height/2+200,100,100); 93image(img[array[3][4]], width/2+96,height/2+200,100,100); 94image(img[array[3][5]], width/2+196,height/2+200,100,100); 95 96 97image(img[array[4][0]], width/2-304,height/2+300,100,100); 98image(img[array[4][1]], width/2-204,height/2+300,100,100); 99image(img[array[4][2]], width/2-104,height/2+300,100,100); 100image(img[array[4][3]], width/2-4,height/2+300,100,100); 101image(img[array[4][4]], width/2+96,height/2+300,100,100); 102image(img[array[4][5]], width/2+196,height/2+300,100,100); 103} 104
エラー
対応してない部分が多いのでエラーが多発しております。
(サイズの差、座標位置etc)
参考にしたコード
int[][] picIdx; PImage[] pic; int stick; final int W=64; final int H=64; int xx, yy; int dx; int dy; void setup() { size(384, 320); pic=new PImage[5]; pic[0]=get(0, 0, 64, 64); PImage img=loadImage("https://photoshopvip.net/wp-content/uploads/2014/06/BALLICONS.jpg"); for (int i=1; i<5; i++) { pic[i]=img.get(12+77*1, 15+77*i, 64, 64); } picIdx=new int[5][6]; for (int i=0; i<5; i++) { for (int j=0; j<6; j++) { picIdx[i][j]=int(random(4)+1); } } } void draw() { for (int i=0; i<5; i++) { for (int j=0; j<6; j++) { image(pic[picIdx[i][j]], j*64, i*64); } } if (stick!=0) { image(pic[stick], mouseX-dx, mouseY-dy); } } void mousePressed() { int x=mouseX/W; int y=mouseY/H; dx=mouseX%W; dy=mouseY%H; if (stick==0) { xx=x; yy=y; stick=picIdx[y][x]; picIdx[y][x]=0; } else { picIdx[yy][xx]=picIdx[y][x]; picIdx[y][x]=stick; stick=0; } }
補足
エラーが沢山出ているのは対応してない部分が多いので当たり前だろ!と思うかもしれませんが、進まないまま日にちばかり経ってしまったので、手助けをよろしくお願いいたします。
あなたの回答
tips
プレビュー