Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javafx.scene.input.KeyCode;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.*;
- import java.awt.image.AreaAveragingScaleFilter;
- import java.awt.image.BufferStrategy;
- import java.lang.reflect.Array;
- import java.util.ArrayList;
- /**
- * Created by milshinvs.18 on 08.02.2017.
- */
- public class o extends JFrame implements MouseListener, KeyListener{
- private final static int width = 30;
- private final static int height = 20;
- private final static int tileSize = 30;
- private static boolean[][] world = new boolean[width][height];
- private static boolean[][] next = new boolean[width][height];
- o(){
- setPreferredSize(new Dimension(width * tileSize + 10, height * tileSize + 8));
- pack();
- setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
- setVisible(true);
- addMouseListener(this);
- addKeyListener(this);
- pack();
- createBufferStrategy(2);
- }
- public static void main(String[] args){
- o frame = new o();
- dx[0] = 1;
- dy[0] = 0;
- dx[1] = 0;
- dy[1] = 1;
- dx[2] = -1;
- dy[2] = 0;
- dx[3] = 0;
- dy[3] = -1;
- dx[4] = 1;
- dy[4] = 1;
- dx[5] = -1;
- dy[5] = -1;
- dx[6] = 1;
- dy[6] = -1;
- dx[7] = -1;
- dy[7] = 1;
- }
- @Override
- public void paint(Graphics g){
- BufferStrategy bufferStrategy = getBufferStrategy();
- if (bufferStrategy == null){
- createBufferStrategy(2);
- bufferStrategy = getBufferStrategy();
- }
- g = bufferStrategy.getDrawGraphics();
- Graphics2D g2d = (Graphics2D) g;
- g2d.setStroke(new BasicStroke(1));
- g.setColor(new Color(255, 255, 255));
- ((Graphics2D) g).fillRect(1, 1, width * tileSize, height * tileSize);
- g.setColor(new Color(255, 0, 0));
- for (int i = 0; i < width; i++){
- for (int j = 0; j < height; j++){
- if (world[i][j]){
- ((Graphics2D) g).fillRect(i * tileSize + 5, j * tileSize, tileSize, tileSize);
- }
- }
- }
- g.setColor(new Color(0, 0, 0));
- for (int i = 1; i < width; i++)
- g.drawLine(i * tileSize + 5, 1, i * tileSize + 5, height * tileSize);
- for (int i = 1; i < height; i++)
- g.drawLine(1, i * tileSize, width * tileSize, i * tileSize);
- g.dispose();
- bufferStrategy.show();
- }
- public void restart(){
- Graphics g;
- BufferStrategy bufferStrategy = getBufferStrategy();
- if (bufferStrategy == null){
- createBufferStrategy(2);
- bufferStrategy = getBufferStrategy();
- }
- g = bufferStrategy.getDrawGraphics();
- g.setColor(getBackground());
- g.fillRect(1, 1, getWidth(), getHeight());
- g.dispose();
- bufferStrategy.show();
- for (int i = 0; i < width; i++){
- for (int j = 0; j < height; j++){
- world[i][j] = false;
- }
- }
- repaint();
- }
- private static int dx[] = new int[8];
- private static int dy[] = new int[8];
- public void start() throws InterruptedException {
- for (int i = 0; i < width; i++) {
- for (int j = 0; j < height; j++) {
- next[i][j] = world[i][j];
- }
- }
- for (int i = 0; i < width; i++) {
- for (int j = 0; j < height; j++) {
- int cnt = 0;
- for (int k = 0; k < 8; k++) {
- int i1 = i + dx[k];
- int j1 = j + dy[k];
- if (i1 >= 0 && i1 < width && j1 >= 0 && j1 < height && world[i1][j1]) {
- cnt++;
- }
- }
- if (world[i][j])
- if (cnt < 2 || cnt > 3)
- next[i][j] = false;
- if (!world[i][j])
- if (cnt == 3)
- next[i][j] = true;
- }
- }
- for (int i = 0; i < width; i++) {
- for (int j = 0; j < height; j++) {
- world[i][j] = next[i][j];
- }
- }
- repaint();
- }
- @Override
- public void mouseClicked(MouseEvent e) {
- if (!world[(e.getX() - 5) / tileSize][e.getY() / tileSize])
- world[(e.getX() - 5) / tileSize][e.getY() / tileSize] = true;
- else
- world[(e.getX() - 5) / tileSize][e.getY() / tileSize] = false;
- repaint();
- }
- @Override
- public void mousePressed(MouseEvent e) {
- }
- @Override
- public void mouseReleased(MouseEvent e) {
- }
- @Override
- public void mouseEntered(MouseEvent e) {
- }
- @Override
- public void mouseExited(MouseEvent e) {
- }
- @Override
- public void keyTyped(KeyEvent e) {
- }
- @Override
- public void keyPressed(KeyEvent e) {
- int keyCode = e.getKeyCode();
- if (keyCode == KeyEvent.VK_SPACE) {
- restart();
- }
- if (keyCode == KeyEvent.VK_ENTER) {
- try {
- start();
- } catch (InterruptedException e1) {
- e1.printStackTrace();
- }
- }
- }
- @Override
- public void keyReleased(KeyEvent e) {
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement