Advertisement
Guest User

Untitled

a guest
Apr 30th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.43 KB | None | 0 0
  1. import javafx.scene.input.KeyCode;
  2.  
  3. import javax.swing.*;
  4. import java.awt.*;
  5. import java.awt.event.*;
  6. import java.awt.image.AreaAveragingScaleFilter;
  7. import java.awt.image.BufferStrategy;
  8. import java.lang.reflect.Array;
  9. import java.util.ArrayList;
  10.  
  11. /**
  12. * Created by milshinvs.18 on 08.02.2017.
  13. */
  14. public class o extends JFrame implements MouseListener, KeyListener{
  15.  
  16.  
  17. private final static int width = 30;
  18. private final static int height = 20;
  19. private final static int tileSize = 30;
  20. private static boolean[][] world = new boolean[width][height];
  21. private static boolean[][] next = new boolean[width][height];
  22.  
  23.  
  24. o(){
  25. setPreferredSize(new Dimension(width * tileSize + 10, height * tileSize + 8));
  26. pack();
  27. setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  28. setVisible(true);
  29. addMouseListener(this);
  30. addKeyListener(this);
  31. pack();
  32. createBufferStrategy(2);
  33. }
  34.  
  35. public static void main(String[] args){
  36. o frame = new o();
  37. dx[0] = 1;
  38. dy[0] = 0;
  39. dx[1] = 0;
  40. dy[1] = 1;
  41. dx[2] = -1;
  42. dy[2] = 0;
  43. dx[3] = 0;
  44. dy[3] = -1;
  45.  
  46. dx[4] = 1;
  47. dy[4] = 1;
  48. dx[5] = -1;
  49. dy[5] = -1;
  50. dx[6] = 1;
  51. dy[6] = -1;
  52. dx[7] = -1;
  53. dy[7] = 1;
  54. }
  55.  
  56. @Override
  57. public void paint(Graphics g){
  58. BufferStrategy bufferStrategy = getBufferStrategy();
  59. if (bufferStrategy == null){
  60. createBufferStrategy(2);
  61. bufferStrategy = getBufferStrategy();
  62. }
  63. g = bufferStrategy.getDrawGraphics();
  64. Graphics2D g2d = (Graphics2D) g;
  65. g2d.setStroke(new BasicStroke(1));
  66. g.setColor(new Color(255, 255, 255));
  67. ((Graphics2D) g).fillRect(1, 1, width * tileSize, height * tileSize);
  68. g.setColor(new Color(255, 0, 0));
  69. for (int i = 0; i < width; i++){
  70. for (int j = 0; j < height; j++){
  71. if (world[i][j]){
  72. ((Graphics2D) g).fillRect(i * tileSize + 5, j * tileSize, tileSize, tileSize);
  73. }
  74. }
  75. }
  76. g.setColor(new Color(0, 0, 0));
  77. for (int i = 1; i < width; i++)
  78. g.drawLine(i * tileSize + 5, 1, i * tileSize + 5, height * tileSize);
  79. for (int i = 1; i < height; i++)
  80. g.drawLine(1, i * tileSize, width * tileSize, i * tileSize);
  81. g.dispose();
  82. bufferStrategy.show();
  83. }
  84.  
  85. public void restart(){
  86. Graphics g;
  87. BufferStrategy bufferStrategy = getBufferStrategy();
  88. if (bufferStrategy == null){
  89. createBufferStrategy(2);
  90. bufferStrategy = getBufferStrategy();
  91. }
  92. g = bufferStrategy.getDrawGraphics();
  93. g.setColor(getBackground());
  94. g.fillRect(1, 1, getWidth(), getHeight());
  95.  
  96. g.dispose();
  97. bufferStrategy.show();
  98.  
  99. for (int i = 0; i < width; i++){
  100. for (int j = 0; j < height; j++){
  101. world[i][j] = false;
  102. }
  103. }
  104. repaint();
  105. }
  106.  
  107. private static int dx[] = new int[8];
  108. private static int dy[] = new int[8];
  109.  
  110. public void start() throws InterruptedException {
  111. for (int i = 0; i < width; i++) {
  112. for (int j = 0; j < height; j++) {
  113. next[i][j] = world[i][j];
  114. }
  115. }
  116. for (int i = 0; i < width; i++) {
  117. for (int j = 0; j < height; j++) {
  118. int cnt = 0;
  119. for (int k = 0; k < 8; k++) {
  120. int i1 = i + dx[k];
  121. int j1 = j + dy[k];
  122. if (i1 >= 0 && i1 < width && j1 >= 0 && j1 < height && world[i1][j1]) {
  123. cnt++;
  124. }
  125. }
  126. if (world[i][j])
  127. if (cnt < 2 || cnt > 3)
  128. next[i][j] = false;
  129. if (!world[i][j])
  130. if (cnt == 3)
  131. next[i][j] = true;
  132. }
  133. }
  134. for (int i = 0; i < width; i++) {
  135. for (int j = 0; j < height; j++) {
  136. world[i][j] = next[i][j];
  137. }
  138. }
  139. repaint();
  140. }
  141.  
  142. @Override
  143. public void mouseClicked(MouseEvent e) {
  144. if (!world[(e.getX() - 5) / tileSize][e.getY() / tileSize])
  145. world[(e.getX() - 5) / tileSize][e.getY() / tileSize] = true;
  146. else
  147. world[(e.getX() - 5) / tileSize][e.getY() / tileSize] = false;
  148. repaint();
  149. }
  150.  
  151. @Override
  152. public void mousePressed(MouseEvent e) {
  153. }
  154.  
  155. @Override
  156. public void mouseReleased(MouseEvent e) {
  157.  
  158. }
  159.  
  160. @Override
  161. public void mouseEntered(MouseEvent e) {
  162.  
  163. }
  164.  
  165. @Override
  166. public void mouseExited(MouseEvent e) {
  167. }
  168.  
  169.  
  170. @Override
  171. public void keyTyped(KeyEvent e) {
  172.  
  173. }
  174.  
  175. @Override
  176. public void keyPressed(KeyEvent e) {
  177. int keyCode = e.getKeyCode();
  178. if (keyCode == KeyEvent.VK_SPACE) {
  179. restart();
  180. }
  181. if (keyCode == KeyEvent.VK_ENTER) {
  182. try {
  183. start();
  184. } catch (InterruptedException e1) {
  185. e1.printStackTrace();
  186. }
  187. }
  188. }
  189.  
  190. @Override
  191. public void keyReleased(KeyEvent e) {
  192.  
  193. }
  194.  
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement