import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class MyDialog extends JDialog{
public MyDialog(JFrame frame, String title) {
super(frame, true);
JLabel la1=new JLabel("P");
add(la1);
setSize(500,500);
setVisible(false);
}
}
public class Main extends JFrame{
private MyPanel panel=new MyPanel();
private MyDialog dialog;
int arr[] = new int[15];
int x[] = new int[17]; // x[1] ~ x[16] 사용
JLabel la[]=new JLabel[17]; // la[1] ~ la[16] 사용
public Main() {
arr[0]=2;
arr[1]=2;
arr[2]=2;
arr[3]=2;
arr[4]=2;
arr[5]=2;
arr[6]=4;
arr[7]=4;
arr[8]=4;
arr[9]=2;
arr[10]=2;
arr[11]=8;
arr[12]=16;
arr[13]=0;
arr[14]=0;
for(int i=1;i<=16;i++) {
x[i] = arr[(int)(Math.random()*arr.length)];
}
x[1] = 2;
x[5] = 0;
x[9] = 2;
x[13] = 4;
for(int i=1;i<=16;i++) {
la[i]=new JLabel(Integer.toString(x[i]));
la[i].setSize(50,50);
panel.add(la[i]);
}
panel.setLayout(null);
la[1].setLocation(100,75);
la[2].setLocation(225,75);
la[3].setLocation(355,75);
la[4].setLocation(490,75);
la[5].setLocation(100,200);
la[6].setLocation(225,200);
la[7].setLocation(355,200);
la[8].setLocation(490,200);
la[9].setLocation(100,320);
la[10].setLocation(225,320);
la[11].setLocation(355,320);
la[12].setLocation(490,320);
la[13].setLocation(100,450);
la[14].setLocation(225,450);
la[15].setLocation(350,450);
la[16].setLocation(490,450);
dialog= new MyDialog(this,"you win!");
setContentPane(panel);
panel.addKeyListener(new MyKeyListener());
panel.setFocusable(true);
panel.requestFocus();
setSize(609,609);
setVisible(true);
}
class MyPanel extends JPanel{
private ImageIcon icon=new ImageIcon("20488.png");
private Image img=icon.getImage();
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(img, 0, 0, getWidth(), getHeight(), this);
}
}
class MyKeyListener extends KeyAdapter{
public void f(int zero)
{
int i=1;
int j=1;
int nonzero=zero+4;
while(true) {
//System.out.println(line);
for(i=zero;i<=16;i+=4) {
if(la[i].getText().equals("0")) {
zero=i;
break;
}
}
if(13<=zero) break;
for(j=zero+4;j<=16;j+=4) {
if(!la[j].getText().equals("0")) {
nonzero=j;
break;
}
}
if(zero==nonzero) break;
System.out.println("zero " + zero +"non "+ nonzero);
la[zero].setText(la[nonzero].getText());
la[nonzero].setText("0");
}
}
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_UP) {
System.out.println("up");
for(int i=5;i<=16;i++) {
// la[i]와 la[i]의 위쪽이 같은지 검사, 같다면 위는 합으로 바꾸고, 아래는 0으로 바꿔
int num_up = Integer.valueOf(la[i-4].getText());
int num_me = Integer.valueOf(la[i].getText());
if(num_up==num_me) {
la[i-4].setText(Integer.toString(num_up*2));
la[i].setText("0");
}
}
repaint();
// 위로 싹 다 붙이기
f(1);
f(2);
//f(3);
//f(4); ***************얘는 왜 안될까??????*********************
}
}
}
public static void main(String[] args) {
new Main();
}
}
//숫자 바꾸는 위치가 잘못됨->고치기