mirror of
				https://github.com/lov3b/Schack.git
				synced 2025-10-30 21:00:24 +01:00 
			
		
		
		
	förbättring av mousePressed
This commit is contained in:
		| @@ -10,6 +10,8 @@ import java.awt.event.MouseListener; | |||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
| import java.util.Arrays; | import java.util.Arrays; | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
|  | import java.util.logging.Level; | ||||||
|  | import java.util.logging.Logger; | ||||||
| import javax.swing.JOptionPane; | import javax.swing.JOptionPane; | ||||||
| import javax.swing.JPanel; | import javax.swing.JPanel; | ||||||
|  |  | ||||||
| @@ -18,7 +20,7 @@ public class Board extends JPanel implements MouseListener { | |||||||
|     public static final int SIZE_OF_TILE = 100; |     public static final int SIZE_OF_TILE = 100; | ||||||
|     private Piece[][] pieces = new Piece[8][8]; |     private Piece[][] pieces = new Piece[8][8]; | ||||||
|     private ArrayList<Point> validMovesToDraw = new ArrayList<>(); |     private ArrayList<Point> validMovesToDraw = new ArrayList<>(); | ||||||
|     private Point selectedPiece = new Point(); |     private Point previouslyClickedPoint = new Point(); | ||||||
|     private final Color moveableColor = new Color(255, 191, 0); |     private final Color moveableColor = new Color(255, 191, 0); | ||||||
|     short turnCount = 0; |     short turnCount = 0; | ||||||
|     private boolean whitesTurn = true; |     private boolean whitesTurn = true; | ||||||
| @@ -116,99 +118,73 @@ public class Board extends JPanel implements MouseListener { | |||||||
|  |  | ||||||
|         // Ifall vi har tryckt på en pjäs och sedan ska gå dit |         // Ifall vi har tryckt på en pjäs och sedan ska gå dit | ||||||
|         if (validMovesToDraw.contains(clicked)) { |         if (validMovesToDraw.contains(clicked)) { | ||||||
|             try { |             final Piece selectedPiece = pieces[previouslyClickedPoint.x][previouslyClickedPoint.y]; | ||||||
|                 Piece p = pieces[selectedPiece.x][selectedPiece.y]; |             if (selectedPiece == null) { | ||||||
|                 p.move(pieces, clicked); |                 validMovesToDraw.clear(); | ||||||
|                 turnCount++; |                 return; | ||||||
|                 whitesTurn = !whitesTurn; |             } | ||||||
|  |             selectedPiece.move(pieces, clicked); | ||||||
|  |             turnCount++; | ||||||
|  |             whitesTurn = !whitesTurn; | ||||||
|  |  | ||||||
|                 ArrayList<Point> allValidMoves = new ArrayList<>(); |             ArrayList<Point> allValidMoves = new ArrayList<>(); | ||||||
|                 for (Piece[] pieceArr : pieces) { |             for (Piece[] pieceArr : pieces) { | ||||||
|                     for (Piece piece : pieceArr) { |                 for (Piece piece : pieceArr) { | ||||||
|                         if (piece == null || whitesTurn != piece.isWhite()) { |                     if (piece == null || whitesTurn != piece.isWhite()) { | ||||||
|                             continue; |  | ||||||
|                         } |  | ||||||
|                         // Kolla ifall vi är samma färg som får röra sig |  | ||||||
|                         // Ifall en pjäs får röra sig sätt weCanMove till sant och sluta  |  | ||||||
|                         allValidMoves.addAll(piece.validMoves(pieces, true)); |  | ||||||
|                     } |  | ||||||
|                 } |  | ||||||
|  |  | ||||||
|                 ArrayList<Point> opposingAttacks = checkAttacks(!whitesTurn); |  | ||||||
|  |  | ||||||
|                 boolean weCanMove = !allValidMoves.isEmpty(); |  | ||||||
|                 boolean inSchack = false; |  | ||||||
|  |  | ||||||
|                 for (Point attack : opposingAttacks) { |  | ||||||
|                     Piece attacked = pieces[attack.x][attack.y]; |  | ||||||
|                     if (attacked == null) { |  | ||||||
|                         continue; |                         continue; | ||||||
|                     } |                     } | ||||||
|                     if (attacked.supremeRuler) { |                     // Kolla ifall vi är samma färg som får röra sig | ||||||
|                         validMovesToDraw.clear(); |                     // Ifall en pjäs får röra sig sätt weCanMove till sant och sluta  | ||||||
|                         getParent().repaint(); |                     allValidMoves.addAll(piece.validMoves(pieces, true)); | ||||||
|                         // Kolla ifall vi är i schackmatt |                 } | ||||||
|                         if (weCanMove) { |             } | ||||||
|                             JOptionPane.showMessageDialog(this, "Du står i schack"); |  | ||||||
|                         } else { |             ArrayList<Point> opposingAttacks = checkAttacks(!whitesTurn); | ||||||
|                             int choise = JOptionPane.showConfirmDialog(this, "Schackmatt\nVill du starta om?"); |  | ||||||
|                             if (choise == JOptionPane.YES_OPTION) { |             boolean weCanMove = !allValidMoves.isEmpty(); | ||||||
|  |             boolean inSchack = false; | ||||||
|  |  | ||||||
|  |             for (Point attack : opposingAttacks) { | ||||||
|  |                 Piece attacked = pieces[attack.x][attack.y]; | ||||||
|  |                 if (attacked == null) { | ||||||
|  |                     continue; | ||||||
|  |                 } | ||||||
|  |                 if (attacked.supremeRuler) { | ||||||
|  |                     validMovesToDraw.clear(); | ||||||
|  |                     getParent().repaint(); | ||||||
|  |                     // Kolla ifall vi är i schackmatt | ||||||
|  |                     if (weCanMove) { | ||||||
|  |                         JOptionPane.showMessageDialog(this, "Du står i schack"); | ||||||
|  |                     } else { | ||||||
|  |                         int choise = JOptionPane.showConfirmDialog(this, "Schackmatt\nVill du starta om?"); | ||||||
|  |                         if (choise == JOptionPane.YES_OPTION) { | ||||||
|  |                             try { | ||||||
|                                 restartGame(); |                                 restartGame(); | ||||||
|  |                             } catch (IOException ex) { | ||||||
|  |                                 Logger.getLogger(Board.class.getName()).log(Level.SEVERE, null, ex); | ||||||
|                             } |                             } | ||||||
|                         } |                         } | ||||||
|                         inSchack = true; |  | ||||||
|                     } |                     } | ||||||
|  |                     inSchack = true; | ||||||
|                 } |                 } | ||||||
|                 if (!inSchack && !weCanMove) { |             } | ||||||
|                     JOptionPane.showMessageDialog(this, "Patt"); |             if (!inSchack && !weCanMove) { | ||||||
|  |                 JOptionPane.showMessageDialog(this, "Patt"); | ||||||
|                 } |  | ||||||
|  |  | ||||||
|             } catch (Exception e) { |  | ||||||
|                 validMovesToDraw.clear(); |  | ||||||
|             } |             } | ||||||
|  |  | ||||||
|         } else { |         } else { | ||||||
|             selectedPiece = new Point(clicked); |             previouslyClickedPoint = new Point(clicked); | ||||||
|             validMovesToDraw.clear(); |             validMovesToDraw.clear(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         // Om vi inte redan har valt en pjäs klickar vi på en pjäs |         // Om vi inte redan har valt en pjäs klickar vi på en pjäs | ||||||
|         if (!validMovesToDraw.contains(clicked)) { |         if (!validMovesToDraw.contains(clicked)) { | ||||||
|  |  | ||||||
|             try { |             final Piece selectedPiece = pieces[mouseCoordinateX][mouseCoordinateY]; | ||||||
|                 final Piece selectedPiece = pieces[mouseCoordinateX][mouseCoordinateY]; |  | ||||||
|  |  | ||||||
|                 // Kolla endast ifall vi kan röra på pjäsen om det är samma färg som den tur vi är på |             if (selectedPiece != null && selectedPiece.isWhite() == whitesTurn) { | ||||||
|                 if (selectedPiece.isWhite() == whitesTurn) { |                 validMovesToDraw.addAll(selectedPiece.validMoves(pieces, true)); | ||||||
|                     ArrayList<Point> attacks = checkAttacks(whitesTurn); |             } else { | ||||||
|  |  | ||||||
|                     ArrayList<Point> validMoves = selectedPiece.validMoves(pieces, true); |  | ||||||
|                     // Kolla ifall vi kan röra oss |  | ||||||
|                     // Loopa igenom allt |  | ||||||
|  |  | ||||||
|                     ArrayList<Point> allValidMoves = new ArrayList<>(); |  | ||||||
|                     for (Piece[] pieceArr : pieces) { |  | ||||||
|                         for (Piece piece : pieceArr) { |  | ||||||
|                             if (piece == null || whitesTurn != piece.isWhite()) { |  | ||||||
|                                 continue; |  | ||||||
|                             } |  | ||||||
|                             // Kolla ifall vi är samma färg som får röra sig |  | ||||||
|                             // Ifall en pjäs får röra sig sätt weCanMove till sant och sluta  |  | ||||||
|                             allValidMoves.addAll(piece.validMoves(pieces, whitesTurn)); |  | ||||||
|                         } |  | ||||||
|                     } |  | ||||||
|  |  | ||||||
|                     // Funkar |  | ||||||
|                     if (selectedPiece.supremeRuler) { |  | ||||||
|                         //validMoves.removeAll(attacks); |  | ||||||
|                     } |  | ||||||
|  |  | ||||||
|                     //allValidMoves.removeAll(attacks); |  | ||||||
|                     // Kollar ifall kungen står i schack just nu |  | ||||||
|                     validMovesToDraw.addAll(validMoves); |  | ||||||
|                 } |  | ||||||
|             } catch (Exception e) { |  | ||||||
|                 validMovesToDraw.clear(); |                 validMovesToDraw.clear(); | ||||||
|             } |             } | ||||||
|         } else { |         } else { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 loveb
					loveb