mirror of
				https://github.com/lov3b/Schack.git
				synced 2025-11-04 07:00:21 +01:00 
			
		
		
		
	Ritar ut nu iaf + fixat en del med king o piece
This commit is contained in:
		@@ -4,37 +4,73 @@ import java.awt.Color;
 | 
			
		||||
import java.awt.Dimension;
 | 
			
		||||
import java.awt.Graphics;
 | 
			
		||||
import java.awt.Graphics2D;
 | 
			
		||||
import java.awt.Point;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.LinkedHashSet;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
import java.util.stream.Stream;
 | 
			
		||||
import javax.swing.JPanel;
 | 
			
		||||
 | 
			
		||||
public class Board extends JPanel {
 | 
			
		||||
 | 
			
		||||
    public static final int SCALE = 100;
 | 
			
		||||
    ArrayList<Piece> pieces = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
    public Board() {
 | 
			
		||||
    public Board() throws IOException {
 | 
			
		||||
 | 
			
		||||
        this.pieces = initPieces();
 | 
			
		||||
        setPreferredSize(new Dimension(800, 800));
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private ArrayList<Piece> initPieces() throws IOException {
 | 
			
		||||
        // White pieces
 | 
			
		||||
        ArrayList<Piece> pieces = new ArrayList<>();
 | 
			
		||||
        ArrayList<Piece> whites = (ArrayList) Stream.of(
 | 
			
		||||
                new King(true, new Point(4, 7))
 | 
			
		||||
        ).collect(Collectors.toList());
 | 
			
		||||
 | 
			
		||||
        // Black pieces
 | 
			
		||||
        ArrayList<Piece> blacks = (ArrayList) Stream.of(
 | 
			
		||||
                new King(false, new Point(4, 0))
 | 
			
		||||
        ).collect(Collectors.toList());
 | 
			
		||||
 | 
			
		||||
        pieces.addAll(whites);
 | 
			
		||||
        pieces.addAll(blacks);
 | 
			
		||||
 | 
			
		||||
        return pieces;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void paintComponent(Graphics g) {
 | 
			
		||||
        Graphics2D g2 = (Graphics2D) g;
 | 
			
		||||
        drawSquares(g2);
 | 
			
		||||
 | 
			
		||||
        pieces.forEach(p -> p.draw(g2));
 | 
			
		||||
 | 
			
		||||
        Piece p = pieces.get(1);
 | 
			
		||||
        LinkedHashSet<Point> legal = p.legalMoves(pieces);
 | 
			
		||||
        g2.setColor(Color.yellow);
 | 
			
		||||
        legal.forEach(point -> g2.fillOval(point.x * SCALE, point.y * SCALE, SCALE, SCALE));
 | 
			
		||||
 | 
			
		||||
        System.out.println(legal.size());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void drawSquares(Graphics2D g2) {
 | 
			
		||||
        g2.scale(100, 100);
 | 
			
		||||
 | 
			
		||||
        g2.setBackground(Color.WHITE);
 | 
			
		||||
        g2.setColor(Color.BLACK);
 | 
			
		||||
        g2.setColor(Color.DARK_GRAY);
 | 
			
		||||
 | 
			
		||||
        for (int i = 0; i < 8; i += 2) {
 | 
			
		||||
            for (int j = 0; j < 8; j += 2) {
 | 
			
		||||
                g2.fillRect(i, j, 1, 1);
 | 
			
		||||
                g2.fillRect(i * SCALE, j * SCALE, 1 * SCALE, 1 * SCALE);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        for (int i = 1; i < 8; i += 2) {
 | 
			
		||||
            for (int j = 1; j < 8; j += 2) {
 | 
			
		||||
                g2.fillRect(i, j, 1, 1);
 | 
			
		||||
                g2.fillRect(i * SCALE, j * SCALE, 1 * SCALE, 1 * SCALE);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,69 @@
 | 
			
		||||
package schack;
 | 
			
		||||
 | 
			
		||||
import java.awt.Graphics2D;
 | 
			
		||||
import java.awt.Point;
 | 
			
		||||
import java.io.File;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.nio.file.Paths;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.LinkedHashSet;
 | 
			
		||||
import java.util.LinkedList;
 | 
			
		||||
import javax.imageio.ImageIO;
 | 
			
		||||
 | 
			
		||||
public final class King extends Piece {
 | 
			
		||||
 | 
			
		||||
    public boolean isSeen() {
 | 
			
		||||
    public King(boolean white, Point startingPosition) throws IOException {
 | 
			
		||||
        super(white, startingPosition);
 | 
			
		||||
        String colorName = white ? "White" : "Black";
 | 
			
		||||
        String fileName = "resized" + colorName + "King.png";
 | 
			
		||||
        String path = Paths.get("icons", fileName).toString();
 | 
			
		||||
        System.out.println(path);
 | 
			
		||||
        icon = ImageIO.read(new File(fileName));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void draw(Graphics2D g2) {
 | 
			
		||||
        super.draw(g2);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isSeen(ArrayList<Piece> pieces) {
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public LinkedHashSet<Point> legalMoves(ArrayList<Piece> pieces) {
 | 
			
		||||
        LinkedHashSet<Point> unmovable = new LinkedHashSet<>();
 | 
			
		||||
        LinkedHashSet<Point> perhapsMovable = new LinkedHashSet<>();
 | 
			
		||||
        for (Piece piece : pieces) {
 | 
			
		||||
            Point p = piece.position;
 | 
			
		||||
 | 
			
		||||
            // Ifall en pjäs står runt omkring kungen går det inte att flytta dit
 | 
			
		||||
            if (Math.abs(p.x - this.position.x) == 1
 | 
			
		||||
                    && Math.abs(p.y - this.position.y) == 1) {
 | 
			
		||||
                unmovable.add(p);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Lägg till tiles kring kungen
 | 
			
		||||
        for (int x = 0; x < 3; x++) {
 | 
			
		||||
            for (int y = 0; y < 3; y++) {
 | 
			
		||||
                if (y == 1 && x == 1) {
 | 
			
		||||
                    continue;
 | 
			
		||||
                } // Ifall det är utanför planen, skippa tror inte det funkar
 | 
			
		||||
                else if (x + this.position.x > 8
 | 
			
		||||
                        || x + this.position.x < 0
 | 
			
		||||
                        || y + this.position.y > 8
 | 
			
		||||
                        || y + this.position.y < 0) {
 | 
			
		||||
                    continue;
 | 
			
		||||
                }
 | 
			
		||||
                perhapsMovable.add(
 | 
			
		||||
                        new Point(this.position.x - 1 + x, this.position.y - 1 + y)
 | 
			
		||||
                );
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        perhapsMovable.removeAll(unmovable);
 | 
			
		||||
        return perhapsMovable;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,18 +1,31 @@
 | 
			
		||||
package schack;
 | 
			
		||||
 | 
			
		||||
import java.awt.Component;
 | 
			
		||||
import java.awt.Graphics2D;
 | 
			
		||||
import java.awt.Point;
 | 
			
		||||
import java.awt.image.BufferedImage;
 | 
			
		||||
import java.awt.image.ImageObserver;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.LinkedHashSet;
 | 
			
		||||
 | 
			
		||||
public class Piece {
 | 
			
		||||
public abstract class Piece extends Component {
 | 
			
		||||
 | 
			
		||||
    public Point position;
 | 
			
		||||
    public boolean white;
 | 
			
		||||
    public boolean castled = false;
 | 
			
		||||
    protected BufferedImage icon;
 | 
			
		||||
 | 
			
		||||
    public boolean isValidMove(Point p, ArrayList<Piece> pieces) {
 | 
			
		||||
        return true;
 | 
			
		||||
    public Piece(boolean white, Point startingPosition) {
 | 
			
		||||
        this.white = white;
 | 
			
		||||
        this.position = startingPosition;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void draw() {
 | 
			
		||||
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
 | 
			
		||||
    public abstract LinkedHashSet<Point> legalMoves(ArrayList<Piece> pieces);
 | 
			
		||||
 | 
			
		||||
    public void draw(Graphics2D g2) {
 | 
			
		||||
 | 
			
		||||
        g2.drawImage(icon, position.x * Board.SCALE, position.y * Board.SCALE, (ImageObserver) this);
 | 
			
		||||
//        g2.drawImage(icon, 4 * Board.SCALE, 6* Board.SCALE, (ImageObserver) this);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,17 +2,14 @@ package schack;
 | 
			
		||||
 | 
			
		||||
import java.awt.Dimension;
 | 
			
		||||
import java.awt.event.ActionEvent;
 | 
			
		||||
import java.awt.event.ActionListener;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.net.InetAddress;
 | 
			
		||||
import java.net.UnknownHostException;
 | 
			
		||||
import java.util.logging.Level;
 | 
			
		||||
import java.util.logging.Logger;
 | 
			
		||||
import javax.swing.JFrame;
 | 
			
		||||
import javax.swing.JMenu;
 | 
			
		||||
import javax.swing.JMenuBar;
 | 
			
		||||
import javax.swing.JMenuItem;
 | 
			
		||||
import javax.swing.JOptionPane;
 | 
			
		||||
import javax.swing.JPopupMenu;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *
 | 
			
		||||
@@ -22,7 +19,7 @@ public class Schack extends JFrame {
 | 
			
		||||
 | 
			
		||||
    public Dimension size = new Dimension(800, 800);
 | 
			
		||||
 | 
			
		||||
    public Schack() {
 | 
			
		||||
    public Schack() throws IOException {
 | 
			
		||||
        setTitle("Schack");
 | 
			
		||||
        setAlwaysOnTop(true);
 | 
			
		||||
        setResizable(false);
 | 
			
		||||
@@ -70,7 +67,7 @@ public class Schack extends JFrame {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static void main(String[] args) {
 | 
			
		||||
    public static void main(String[] args) throws IOException {
 | 
			
		||||
        new Schack();
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user