import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
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] = 0;
x[5] = 2;
x[9] = 2;
x[13] =2;
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;
// ***************다 위로붙어있는지 확인해보고 숫자들 사이에 0이 없으면 return 처리하기 ***************
/*
int x=zero;
int y=zero;
for(i=zero;i<=16;i+=4)
{
if(!la[i].getText().equals("0")) {
x=i;
}
else {
y=i;
break;
}
}
if(x+4==y) return ;
// 다 위로 붙이기
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");
if(13<=nonzero) break;
}
0 2 2 2
2 2 2
4 2
4 2 0 0
*/
}
void press(int x) {
Vector<Integer> v1 = new Vector<Integer>();
Vector<Integer> v2 = new Vector<Integer>();
for(int i=x;i<=16;i+=4) {
if(Integer.valueOf(la[i].getText())!=0)
v1.add(Integer.valueOf(la[i].getText()));
}
System.out.println(v1);
//
for(int i=0;i<v1.size()-2;i++) {
if(v1.get(i)==v1.get(i+1)) {
la[i].setText(Integer.toString((v1.get(i)+v1.get(i+1))));
}
}
//
for(int i=0;i<4;i++) {
if(i>=v2.size())
la[x+i*4].setText("0");
else
la[x+i*4].setText(Integer.toString(v2.get(i)));
}
// System.out.println(v1);
}
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_UP){
System.out.println("up");
`
for(int i=1;i<=4;i++) {
press(i);
}
/*피자 햄버거 마라탕 파스타 스파게티 ver.tax 라면 삼양라면 신라면 치킨 양념치킨 김치 국밥 뼈해장국 설렁탕 순대 떡볶이 어묵 김밥 오리고기 삼겹살 한우 레몬에이드 새우 고등어 오징어 문어 낙지 조개 탕수육 짜장면
육개장 짬뽕 계란간장 밥 스팸 불닭 홍게 순대 갈비탕 에그타르트 간장게장 갈비찜 무국 감자튀김 라볶이 콕콕콕스파게티 계란말이 계란찜 김 쥐포 육포 양송이스프 육회 육사시미 짜장밥 김치볶음밥 연어 연어초밥
참치초밥 참치 동원참치 홍어 불고기 불고기 비빔밥 양고기 김치찜 닭갈비 닭발 된장찌게 */
// 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); */ //*****************얘는 왜 안될까??????*********************
}
//else if() // down, left, right
}
public static void main(String[] args) {
new Main();
}
}
/*
0 0 x 0
0 x y x
x 0 0 x
y y z x
*/