Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package game;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.*;
- /**
- * Created by d.nurgaleev on 24.10.2016.
- */
- public class Field extends JPanel {
- public static final int width = 8;
- public static final int height = 8;
- public static final int scale = 40;
- private Game gamer;
- public static JFrame frame = new JFrame();
- public Field() {
- frame = frame1("2048");
- gamer = new Game();
- gamer.start();
- frame.addKeyListener(new KeyAdapter() {
- @Override
- public void keyPressed(KeyEvent e) {
- gamer.keyPressed(e);
- repaint();
- }
- });
- }
- public void paint(Graphics g) {
- g.setColor(color(230, 230, 230));
- g.fillRect(0, 0, width * scale, height * scale);
- g.setColor(color(100, 100, 100));
- for (int i = 0; i < width * scale; i = i + scale * 2) {
- g.drawLine(i, 0, i, height * scale);
- g.drawLine(0, i, width * scale, i);
- }
- g.setColor(color(0,0,0));
- Font myFont = new Font("Times New Roman", Font.BOLD, 20);
- g.setFont(myFont);
- int y = 0;
- for (int i = 0; i < 4; i++) {
- int x = 0;
- for (int j = 0; j < 4; j++) {
- if (Game.num[i][j] == 4)
- {
- g.setColor(color(0,255,0));
- g.fillRect(0,j*scale*2,scale*2,scale*2);
- }
- g.setColor(color(0,0,0));
- g.drawString("" + Game.num[i][j], scale - 5 + x, scale + 5 + y);
- x = x + scale * 2;
- }
- y = y + scale * 2;
- }
- }
- public Color color(int red, int green, int blue) {
- return new Color(red, green, blue);
- }
- public JFrame frame1(String s) {
- JFrame frame1 = new JFrame();
- frame1.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
- frame1.setResizable(false);
- frame1.setSize(width * scale + 5, height * scale + 30);
- frame1.setLocationRelativeTo(null);
- frame1.add(this);
- frame1.setVisible(true);
- return frame1;
- }
- public static void main(String[] args) {
- Field field = new Field();
- }
- }
- package game;
- import javax.swing.*;
- import java.awt.event.KeyAdapter;
- import java.awt.event.KeyEvent;
- import java.util.Random;
- /**
- * Created by d.nurgaleev on 24.10.2016.
- */
- public class Game {
- public int random(int a, int b) {
- return a + (int) (Math.random() * b);
- }
- public static int[][] num = new int[4][4];
- public int def = 2;
- public void keyPressed(KeyEvent e) {
- if (e.getKeyCode() == KeyEvent.VK_DOWN) {
- down();
- }
- if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
- right();
- }
- if (e.getKeyCode() == KeyEvent.VK_UP) {
- up();
- }
- if (e.getKeyCode() == KeyEvent.VK_LEFT) {
- left();
- }
- }
- public void start() {
- num[random(0,4)][random(0,4)] = def;
- num[random(0,4)][random(0,4)] = def;
- for(int i = 0; i < 4; i++)
- {
- for (int j = 0; j < 4; j++)
- {
- System.out.print(num[i][j] + " ");
- }
- System.out.println();
- }
- }
- public void down() {
- int zn = 0;
- System.out.println();
- for(int j = 0; j < 4; j++) {
- for (int i = 3; i >= 0; i--) {
- if(num[i][j] == 0) {
- int k = i - 1;
- while(k > 0)
- {
- if(num[k][j] != 0) break;
- k--;
- }
- if(k >=0) {
- num[i][j] = num[k][j];
- num[k][j] = 0;
- }
- }
- if(num[i][j] != 0)
- {
- int k = i - 1;
- while(k > 0)
- {
- if(num[k][j] != 0) break;
- k--;
- }
- if (k>=0 && num[i][j] == num[k][j]) {
- num[i][j] = num[i][j] * 2;
- num[k][j] = 0;
- }
- }
- }
- }
- System.out.println();
- int a = random(0,4);
- int b = random(0,4);
- while (num[a][b] != 0)
- {
- a = random(0,4);
- b = random(0,4);
- }
- num[a][b] = def;
- for(int i = 0; i < 4; i++)
- {
- for (int j = 0; j < 4; j++)
- {
- System.out.print(num[i][j] + " ");
- }
- System.out.println();
- }
- }
- public void right() {
- int zn = 0;
- System.out.println();
- for(int i = 0; i < 4; i++) {
- for (int j = 3; j >= 0; j--) {
- if(num[i][j] == 0) {
- int k = j - 1;
- while(k > 0)
- {
- if(num[i][k] != 0) break;
- k--;
- }
- if(k >=0) {
- num[i][j] = num[i][k];
- num[i][k] = 0;
- }
- }
- if(num[i][j] != 0)
- {
- int k = j - 1;
- while(k > 0)
- {
- if(num[i][k] != 0) break;
- k--;
- }
- if (k>=0 && num[i][j] == num[i][k]) {
- num[i][j] = num[i][j] * 2;
- num[i][k] = 0;
- }
- }
- }
- }
- int a = random(0,4);
- int b = random(0,4);
- while (num[a][b] != 0)
- {
- a = random(0,4);
- b = random(0,4);
- }
- num[a][b] = def;
- for(int i = 0; i < 4; i++)
- {
- for (int j = 0; j < 4; j++)
- {
- System.out.print(num[i][j] + " ");
- }
- System.out.println();
- }
- }
- public void up() {
- int zn = 0;
- System.out.println();
- for(int j = 0; j < 4; j++) {
- for (int i = 0; i < 4; i++) {
- if(num[i][j] == 0) {
- int k = i + 1;
- while(k < 4)
- {
- if(num[k][j] != 0) break;
- k++;
- }
- if(k < 4) {
- num[i][j] = num[k][j];
- num[k][j] = 0;
- }
- }
- if(num[i][j] != 0)
- {
- int k = i + 1;
- while(k < 4)
- {
- if(num[k][j] != 0) break;
- k++;
- }
- if (k < 4 && num[i][j] == num[k][j]) {
- num[i][j] = num[i][j] * 2;
- num[k][j] = 0;
- }
- }
- }
- }
- System.out.println();
- int a = random(0,4);
- int b = random(0,4);
- while (num[a][b] != 0)
- {
- a = random(0,4);
- b = random(0,4);
- }
- num[a][b] = def;
- for(int i = 0; i < 4; i++)
- {
- for (int j = 0; j < 4; j++)
- {
- System.out.print(num[i][j] + " ");
- }
- System.out.println();
- }
- }
- public void left() {
- int zn = 0;
- System.out.println();
- for(int i = 0; i < 4; i++) {
- for (int j = 0; j < 4; j++) {
- if(num[i][j] == 0) {
- int k = j + 1;
- while(k < 4)
- {
- if(num[i][k] != 0) break;
- k++;
- }
- if(k < 4) {
- num[i][j] = num[i][k];
- num[i][k] = 0;
- }
- }
- if(num[i][j] != 0)
- {
- int k = j + 1;
- while(k < 4)
- {
- if(num[i][k] != 0) break;
- k++;
- }
- if (k < 4 && num[i][j] == num[i][k]) {
- num[i][j] = num[i][j] * 2;
- num[i][k] = 0;
- }
- }
- }
- }
- int a = random(0,4);
- int b = random(0,4);
- while (num[a][b] != 0)
- {
- a = random(0,4);
- b = random(0,4);
- }
- num[a][b] = def;
- for(int i = 0; i < 4; i++)
- {
- for (int j = 0; j < 4; j++)
- {
- System.out.print(num[i][j] + " ");
- }
- System.out.println();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement