Guest User

Untitled

a guest
Oct 6th, 2018
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package battelships;
  2.  
  3. import java.awt.Canvas;
  4. import java.awt.Color;
  5. import java.awt.Graphics;
  6. import java.awt.event.MouseAdapter;
  7. import java.awt.event.MouseEvent;
  8. import java.util.Arrays;
  9.  
  10. import javax.swing.JFrame;
  11.  
  12. public class Game2 extends Canvas {
  13.     final static int DIM = 5;
  14.     final static int TRIES = 5;
  15.  
  16.     static int tryCount = TRIES;
  17.     static int hitCount = 0;
  18.  
  19.     static int[] ships = { 2, 4, 6, 8, 12 }; // sorted!
  20.  
  21.     static Color[][] state = { //
  22.             { null, null, null, null, null }, //
  23.             { null, null, null, null, null }, //
  24.             { null, null, null, null, null }, //
  25.             { null, null, null, null, null }, //
  26.             { null, null, null, null, null } };
  27.  
  28.     private static void resetGame() {
  29.         tryCount = TRIES;
  30.         hitCount = 0;
  31.         for (int p = 0; p < DIM * DIM; ++p) {
  32.             state[p % DIM][p / DIM] = null;
  33.         }
  34.     }
  35.  
  36.     public static void main(String[] args) {
  37.         JFrame f = new JFrame("Battleships");
  38.         Canvas c = new Game2();
  39.         c.setSize(500, 500);
  40.         c.addMouseListener(new MouseAdapter() {
  41.             @Override
  42.             public void mouseClicked(MouseEvent e) {
  43.                 int x = e.getX() / 100;
  44.                 int y = e.getY() / 100;
  45.                 if (Arrays.binarySearch(ships, y * DIM + x) < 0) {
  46.                     state[x][y] = Color.BLACK;
  47.                 } else {
  48.                     state[x][y] = Color.RED;
  49.                     ++hitCount;
  50.                 }
  51.                 if (--tryCount == 0) {
  52.                     System.out.println((hitCount == ships.length ? "Gewonnen" : "Game Over") + "!");
  53.                     resetGame();
  54.                 }
  55.                 c.repaint();
  56.             }
  57.         });
  58.         f.add(c);
  59.         f.pack();
  60.         f.setVisible(true);
  61.     }
  62.  
  63.     @Override
  64.     public void paint(Graphics g) {
  65.         for (int p = 0; p < DIM * DIM; ++p) {
  66.             int x = p % DIM;
  67.             int y = p / DIM;
  68.             Color cbColor = p % 2 == 0 ? Color.GRAY : Color.DARK_GRAY;
  69.             g.setColor(state[x][y] == null ? cbColor : state[x][y]);
  70.             g.fillRect(x * 100, y * 100, 100, 100);
  71.         }
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment