تفضل كل الشغل
إنشاء واجهة المستخدم الرسومية للعبة باستخدام Java Swing أو JavaFX.
إنشاء صناديق أدوات لاستخدامها في اللعبة، مثل زر "جديد" و "مزيج" لإعادة ترتيب القطعة.
إنشاء قائمة من القطع الصغيرة وتشكيلها في شكل الصورة الأصلية.
تعيين الحركة للقطع الصغيرة باستخدام السحب وإسقاط الماوس.
التحقق من صحة ترتيب القطع النهائي.
وفيما يلي مثال عن كيفية إنشاء لعبة جيجوز بازل في جافا باستخدام JavaFX:
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class JigsawPuzzle extends Application {
private static final int PUZZLE_SIZE = 300;
private static final int PUZZLE_ROWS = 3;
private static final int PUZZLE_COLUMNS = 3;
private List<PuzzlePiece> puzzlePieces = new ArrayList<>();
private PuzzlePiece emptyPiece;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
// Load the image
Image image = new Image("puzzle_image.jpg");
// Create the puzzle pieces
int pieceWidth = PUZZLE_SIZE / PUZZLE_COLUMNS;
int pieceHeight = PUZZLE_SIZE / PUZZLE_ROWS;
for (int row = 0; row < PUZZLE_ROWS; row++) {
for (int column = 0; column < PUZZLE_COLUMNS; column++) {
int x = column * pieceWidth;
int y = row * pieceHeight;
ImageView imageView = new ImageView(image);
imageView.setViewport(new javafx.geometry.Rectangle2D(x, y, pieceWidth, pieceHeight));
PuzzlePiece puzzlePiece = new PuzzlePiece(imageView, row, column);
puzzlePieces.add(puzzlePiece);
}
}
// Randomize the puzzle pieces
Collections.shuffle(puzzlePieces);
// Create the empty puzzle piece
emptyPiece = new PuzzlePiece(null, PUZZLE_ROWS - 1, PUZZLE_COLUMNS - 1);
puzzlePieces.add(emptyPiece);
// Create the puzzle pane
Pane puzzlePane = new Pane();
for (PuzzlePiece puzzlePiece : puzzlePieces) {
puzzlePane.getChildren().add(puzzlePiece.getImageView());
}
// Add click handlers for the puzzle pieces
for (PuzzlePiece puzzlePiece : puzzlePieces) {
puzzlePiece.getImageView().setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if (puzzlePiece.isAdjacentTo(emptyPiece)) {
swapPieces(puzzlePiece, emptyPiece);
}
}
});
}
// Create the scene and show the stage
Scene scene = new Scene(puzzlePane, PUZZLE_SIZE, PUZZLE_SIZE);
primaryStage.setScene(scene);
primaryStage.setTitle("Jigsaw Puzzle");
primaryStage.show();
}
private void swapPieces(PuzzlePiece piece1, PuzzlePiece piece2) {
int row1 = piece1.getRow();
int column1 = piece1.getColumn();
int row2 = piece2.getRow();
int column2 = piece2.getColumn();
piece1.setRow(row2);
piece1.setColumn(column2);
piece2.setRow(row1);
piece2.setColumn(column1);
Collections.swap(puzzlePieces, puzzlePieces.indexOf(piece1), puzzlePieces.indexOf(piece2));
}
private static class PuzzlePiece {
private ImageView imageView;
اسم المستقل | مصطفي ض. |
عدد الإعجابات | 0 |
عدد المشاهدات | 17 |
تاريخ الإضافة |