حسابي

بحث

القائمة

تفاصيل العمل

تفضل كل الشغل

إنشاء واجهة المستخدم الرسومية للعبة باستخدام 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
تاريخ الإضافة