import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.Random;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class mytetirs extends JFrame  {
        
        Image off;
        Graphics offG;
        
        boolean[][] map;
        Color[][] colorMap;
        Color[] colorType;
        
        boolean isDragged1, isDragged2, isDragged3;
        int offX, offY;

        int[] blockType;
        int[] blockX;
        int[] blockY;
        int x, y;  
        int[][] blockPos;
        Random r;
        
        GamePanel gamePanel;
        
        public mytetirs(){
                super("1010!");
                
                gamePanel = new GamePanel();
                
                Container pane = getContentPane();
                pane.add(gamePanel);
                
                map = new boolean[18][18];
                colorMap = new Color[18][18];
                colorType = new Color[19];
                setColorType();
                
                blockX = new int [9];
                blockY = new int [9];
        
                r= new Random();
                blockType = new int[3];
                
                blockType[0] = Math.abs(r.nextInt());
                blockType[1] = Math.abs(r.nextInt());
                blockType[2] = Math.abs(r.nextInt());
        
                isDragged1 = false;
                isDragged2 = false;
                isDragged3 = false;
                
                
                
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                setSize(600, 600);
                setVisible(true);
                repaint();
        }
        
        public void setBlockXY(int type, int x, int y){
                switch(type){
                case 0://ㅁ
                        blockX[0] = x+2; blockY[0] = y+2;
                        blockX[1] = x+2; blockY[1] = y+1;
                        
                        blockX[2] = x+2; blockY[2] = y+2;
                        blockX[3] = x+2; blockY[3] = y+2;
                        blockX[4] = x+2; blockY[4] = y+2;
                        blockX[5] = x+2; blockY[5] = y+2;
                        blockX[6] = x+2; blockY[6] = y+2;
                        blockX[7] = x+2; blockY[7] = y+2;
                        blockX[8] = x+2; blockY[8] = y+2;
                        break;
                case 1:
                        blockX[0] = x+2; blockY[0] = y+2;
                        blockX[1] = x+2; blockY[1] = y+1;
                        blockX[2] = x+2; blockY[2] = y+3;
                
                        blockX[3] = x+2; blockY[3] = y+2;
                        blockX[4] = x+2; blockY[4] = y+2;
                        blockX[5] = x+2; blockY[5] = y+2;
                        blockX[6] = x+2; blockY[6] = y+2;
                        blockX[7] = x+2; blockY[7] = y+2;
                        blockX[8] = x+2; blockY[8] = y+2;
                        break;
                case 2://ㄴ
                        blockX[0] = x+2; blockY[0] = y+2;
                        blockX[1] = x+2; blockY[1] = y+1;
                        blockX[2] = x+2; blockY[2] = y+3;
                        blockX[3] = x+2; blockY[3] = y+4;
                        
                        blockX[4] = x+2; blockY[4] = y+2;
                        blockX[5] = x+2; blockY[5] = y+2;
                        blockX[6] = x+2; blockY[6] = y+2;
                        blockX[7] = x+2; blockY[7] = y+2;
                        blockX[8] = x+2; blockY[8] = y+2;
                        break;
                case 3://ㄴㄴ
                        blockX[0] = x+2; blockY[0] = y+2;
                        blockX[1] = x+2; blockY[1] = y+1;
                        blockX[2] = x+2; blockY[2] = y+3;
                        blockX[3] = x+2; blockY[3] = y+4;
                        blockX[4] = x+2; blockY[4] = y+0;        
                        
                        blockX[5] = x+2; blockY[5] = y+2;
                        blockX[6] = x+2; blockY[6] = y+2;
                        blockX[7] = x+2; blockY[7] = y+2;
                        blockX[8] = x+2; blockY[8] = y+2;
                        break;
                
            }
                
        }
        
        
                
        
        public void drawBlock(int z){
                for(int i=0;i<9;i++){
                        map[blockX[i]][blockY[i]] = true;
                        colorMap[blockX[i]][blockY[i]] =colorType[blockType[z]];
                }
        }

        
        
        public void drawMap(){
                for(int i=0;i<18;i++){
                        for(int j=0;j<18;j++){
                                if(map[i][j]){
                                        offG.setColor(colorMap[i][j]);
                                        offG.fillRect(i*30, j*30, 30, 30);
                                }
                                else{
                                        offG.setColor(Color.white);
                                        offG.fillRect(i*30, j*30, 30, 30);
                                }
                        }
                }
        }
        
        
        private class GamePanel extends JPanel implements MouseMotionListener, MouseListener{
                public GamePanel(){
        
    }
        
        public void paint(Graphics g){
                off = createImage(550, 550);
                offG = off.getGraphics();
                offG.setColor(Color.white);
                offG.fillRect(0, 0, 550, 550);
                
                drawMap();
                setBlockXY(blockType[0], 12, 1);
                drawBlock(0);
                setBlockXY(blockType[1], 12, 7);
                drawBlock(1);
                setBlockXY(blockType[2], 12, 13);
        drawBlock(2);
                drawGrid();
                g.drawImage(off, 0, 0, this);
                repaint();
        }

 

        @Override
        public void mouseEntered(MouseEvent e) {
        }

        @Override
        public void mouseExited(MouseEvent e) {
        }

        @Override
        public void mousePressed(MouseEvent me) {
                
                for(int i=0;i<9;i++){
                        blockPos[i][i] = blockPos[blockX[i]][blockY[i]];
                        if(blockPos[i][i].contains(new Point(me.getX(), me.getY()))){
                                offX = me.getX() - blockX[i];
                    offY = me.getY() - blockY[i];
                    isDragged1 = true;
                        }
                }
    }

        @Override
        public void mouseReleased(MouseEvent e) {
                isDragged1 = false;
                isDragged2 = false;
                isDragged3 = false;
                
        }

        @Override
        public void mouseDragged(MouseEvent me) {
                for(int i=0;i<9;i++){
                        if(isDragged1){
                                blockX[i] = me.getX() - offX;
                                blockY[i] = me.getY() - offY;                                
                        }
                        if(isDragged2){
                                blockX[i] = me.getX() - offX;
                                blockY[i] = me.getY() - offY;        
                                
                        }
                        if(isDragged3){
                                blockX[i] = me.getX() - offX;
                                blockY[i] = me.getY() - offY;
                                
                        }
                        repaint();
                }                
        }
        @Override
        public void mouseMoved(MouseEvent e) {
        }

}        
        public static void main(String[] args) {
                new mytetirs();
        }

}


viewimage.php?id=3dafdf21f7d335ab67b1d1&no=29bcc427b08577a16fb3dab004c86b6f620008c1cd8c09ca4be6d816a495a4f1d6e00cd563d159912e03ab0f8eb9e33301145d5a31ff30eb791c957e00


이소스를 실행하면 이런 그림이 나옵니다

너무 길어서 쓸데없는거 몇개 지웠습니다
암튼 그림에서 처럼 3개의 블럭들으 나오는데 이를 마우스이벤트로 10x10의 판에다가 옮기고 싶습니다
이리저리 인터넷 찾아봐서 나온 코드가
@Override
        public void mousePressed(MouseEvent me) {
                
                for(int i=0;i<9;i++){
                        blockPos[i][i] = blockPos[blockX[i]][blockY[i]];
                        if(blockPos[i][i].contains(new Point(me.getX(), me.getY()))){
                                offX = me.getX() - blockX[i];
                    offY = me.getY() - blockY[i];
                    isDragged1 = true;
                        }
                }
    }

        @Override
        public void mouseReleased(MouseEvent e) {
                isDragged1 = false;
                isDragged2 = false;
                isDragged3 = false;
                
        }

        @Override
        public void mouseDragged(MouseEvent me) {
                for(int i=0;i<9;i++){
                        if(isDragged1){
                                blockX[i] = me.getX() - offX;
                                blockY[i] = me.getY() - offY;                                
                        }
                        if(isDragged2){
                                blockX[i] = me.getX() - offX;
                                blockY[i] = me.getY() - offY;        
                                
                        }
                        if(isDragged3){
                                blockX[i] = me.getX() - offX;
                                blockY[i] = me.getY() - offY;
                                
                        }
                        repaint();
                }                
        }
        @Override
        public void mouseMoved(MouseEvent e) {
        }
인데 마우스프레스드부분에서 부터 에러가 나더군요
저기서 제가 얻은 지식은 마우스의 포인트좌표가 블럭의x,y좌표안에 있으면 값을 참으로 해서
마우스를 드래그로 옮길때 옮겨진 좌표로 블럭의 위치값 blockX 와 blockY의 값에다가 더해주면 된다 이건데
코딩식은 솔직히 어떻게 해야할지 잘 모르겠습니다
그리고 블럭들도 하나의 메서드에서 x,y값만 바꿔서 3개를 프레임에 뿌린거라서 3개를 옮길려면 블럭들의 위치값을어떻게 해야할지도
모르겠네요 암튼 요약하자면 blockX, blockY의 위치값을 마우스이벤트를이용해 어떻게 옮기는지 좀 알려주세요