Cześć, od niedawna pracuje jako junior java dev i w domu 4 fun coś sobie nadal kodzę. O ile w pracy nie ma takiego problemu bo jednak web wymusza podział na front-end i back-end, to jak to wygląda po stronie prostych aplikacji desktopowych?
Zabrałem się za napisanie gry w szachy. Mam póki co planszę na której mogę wybierać i przesuwać figury. Chciałem jednak dopisać do tego logikę, sprawdzenie czy dany ruch jest poprawny. No i zaczęły się schody - potrzebuje klasy dla pionków po stronie UI
class Pawn extends Piece {
Pawn(int column, int row, PieceColor color) {
super(column, row, color);
this.blackPieceImage = new Image("pieces/black_pawn.png");
this.whitePieceImage = new Image("pieces/white_pawn.png");
if(this.color == PieceColor.WHITE){
this.shape.setFill(new ImagePattern(whitePieceImage));
} else {
this.shape.setFill(new ImagePattern(blackPieceImage));
}
}
}
Jak i po stronie logiki gry
public class Pawn extends Piece {
private boolean isFirstMove = true;
private boolean reachedEnd = false;
Pawn(int x, int y, PieceColor color){
super(x, y, color);
}
@Override
public void setPosition(int x, int y) {
this.isFirstMove = false;
this.position = new Position(x, y);
}
@Override
public void calculateLegalMoves() {
legalMoves.clear();
legalAttackMoves.clear();
if(color == PieceColor.WHITE) {
legalMoves.add(new Position(position.getX(), position.getY() + 1));
if(isFirstMove){
legalMoves.add(new Position(position.getX(), position.getY() + 2));
}
} else {
legalMoves.add(new Position(position.getX(), position.getY() - 1));
if(isFirstMove){
legalMoves.add(new Position(position.getX(), position.getY() - 2));
}
}
legalAttackMoves.add(new Position(position.getX() + 1, position.getY() + 1));
legalAttackMoves.add(new Position(position.getX() - 1, position.getY() - 1));
legalAttackMoves.add(new Position(position.getX() + 1, position.getY() - 1));
legalAttackMoves.add(new Position(position.getX() - 1, position.getY() + 1));
}
}
Zastanawiam się teraz co dalej - pisać logikę która połączy UI z logiką? Czyli coś na wzór controllera pomiędzy? Czy może w tym w miarę prostym przykładzie jakim są szachy, złączyć te klasy w 1, bo tak naprawdę w wielu miejscach powielam tylko kod pisząc w ten sposób. Jak do tego podejść by z czasem móc się takim projektem pochwalić w CV? (w planach jest możliwość gry online poprzez Sockety)