24 Commits

Author SHA1 Message Date
Mat
56ed89d668 Prototype
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-25 14:41:14 +02:00
Mat
a273e7736a Basement for the menu 2023-04-21 22:47:57 +02:00
Mat
d5db1b14af Merge branch 'master' of https://git.herisson.ovh/undefined_name/School_Project 2023-04-21 15:47:23 +02:00
ac368a6d19 Merge pull request 'rajout du prototype de menu pour le jeu' (#26) from interface-du-menu into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #26
Reviewed-by: BrokenBrad <eddyjiofak@gmail.com>
Reviewed-by: Debucquoy Anthony <d.tonitch@gmail.com>
2023-04-18 13:11:42 +02:00
Mat
00f62097f1 fix the issue about the position of the footer
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-04-02 23:37:35 +02:00
Mat
592b179a19 rajout du prototype de menu pour le jeu
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-03-28 13:23:36 +02:00
eeae13b339 Merge pull request 'Shape_Piece_Map' (#15) from Shape_Piece_Map into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #15
Reviewed-by: BrokenBrad <eddyjiofak@gmail.com>
Reviewed-by: Mat_02 <diletomatteo@gmail.com>
2023-03-28 00:31:41 +02:00
b41714c27f Merge pull request 'Story' (#24) from Story into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #24
Reviewed-by: Debucquoy Anthony <d.tonitch@gmail.com>
Reviewed-by: BrokenBrad <eddyjiofak@gmail.com>
2023-03-27 19:39:08 +02:00
Mat
7527309d79 Correction des fautes, hésité pas si il en reste
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-03-26 20:12:08 +02:00
0a72e6e047 Merge branch 'master' into Story
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-03-23 14:46:20 +01:00
Mat
3b6234f4a1 Rajout du meeting du 23 mars
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-03-23 12:02:41 +01:00
Mat
dd01bc96cb rajout de la syntaxe (titre)+modification day3
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-23 11:32:19 +01:00
e7d82b3076 Setting default position of vector to 0.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-03-23 11:24:34 +01:00
bc2feee03c Merge branch 'master' into Shape_Piece_Map
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-03-21 23:07:32 +01:00
1ef428962f Merge branch 'master' into Shape_Piece_Map
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-03-21 21:28:23 +01:00
df457b830a Merge branch 'master' into Shape_Piece_Map
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-03-21 14:30:53 +01:00
bd41d24a36 Merge branch 'master' into Shape_Piece_Map
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-03-21 14:21:13 +01:00
24df4e376c Adding Pieces positions 2023-03-21 14:14:39 +01:00
4854fef677 wip
Signed-off-by: Anthony Debucquoy <debucquoy.anthony@gmail.com>
2023-03-21 09:56:13 +01:00
71beb69c84 Changing addShape to AddPiece
Signed-off-by: Anthony Debucquoy <debucquoy.anthony@gmail.com>
2023-03-20 23:57:10 +01:00
8d88f01c9d Removing Position because my brain bugged
Signed-off-by: Anthony Debucquoy <debucquoy.anthony@gmail.com>
2023-03-01 23:44:26 +01:00
e983c5aa13 Adding Map class
Signed-off-by: Anthony Debucquoy <debucquoy.anthony@gmail.com>
2023-02-27 11:22:07 +01:00
498529f29a Finishing RotateRight
Signed-off-by: Anthony Debucquoy <debucquoy.anthony@gmail.com>
2023-02-27 11:05:32 +01:00
e06abe60de Starting Piece Shape and Maps, WIP: wrong algorithm 2023-02-27 00:52:19 +01:00
37 changed files with 1337 additions and 14 deletions

View File

@ -4,6 +4,7 @@
- [Première entrevue](./rapports/130223.md)
- [Deuxième entrevue](./rapports/200223.md)
- [Troisième entrevue](./rapports/230323.md)
# Histoire

View File

@ -1,36 +1,39 @@
Intro histoire
# Intro histoire
Après notre premier quadri à l unif assez compliqué entre calculus, inégalités et physique
et la perte de temps dans les transports en commun.
Je décide de enfin me prendre un kot à Mons pour réussir ce quadri en beauté
intro à jouer
# Day 1
## intro à jouer
Faire les cartons de différentes cours
Calculus --> big carton( encombrant pas possible de tourner)
Algo 1 --> pc portable (fragile)
Math elem carton avec une inégalité dessus qui change dès qu on tourne la pièce)
Objet perso à chacun
Mat --> poids de sport
Eddy --> balle de basket,...
Anthony --> tenue de scout
1. Mat --> poids de sport
2. Eddy --> balle de basket,...
3. Anthony --> tenue de scout
Déménagement histoire :
## Déménagement histoire :
Arrivé à l appartement :
La pièce est assez petite mais avec assez d'imagination je serai tout mettre
(j'aurais aimé déjà être en master pour faire une AI qui me aiderai à ranger tous
ça peut-etre que chatgpt pourrait m aider..)
Déménagement à jouer :
## Déménagement à jouer :
Galère à tout rangé --> (interaction avec le jouer)
--> en repensant c est peut-être pour ça que l ancien propriétaire et partie et que le prix était de si bas
Notion de jour donc cours unifs -> pas le temps de ranger dans le WK on doit terminer en semaine
continuité histoire
# Day 2
## continuité histoire
Après un long mardi terminer par le cours d algo 2 il est
tant de ranger le dernier carton dans la buanderie après une 10 minute de marche
@ -38,23 +41,29 @@ j arrive à mon kot mais qlq chose à changer, la couleur de la porte n est plus
De plus il faut tirer et plus poussé pour l ouvrir.
Après être rentré tous les cartons sont refait et l ordre des pièces à changer
à jouer
## à jouer
----> refaire des niveaux différents pour ranger les cartons
(intercation pendant le jeu)
-->Hormis la fatigue qui me gagne et se sentiment étrange par rapport à ce kot
--> Hormis la fatigue qui me gagne et se sentiment étrange par rapport à ce kot
je defais encore une fois tous mes cartons
(je ne sais pas comment mais tout mes exo en calculus ont été corrigées les cartons sont tous remplie de rouge lol)
(je ne sais pas comment mais tout mes exo en calculus ont été corrigées les cartons sont tous remplie de rouge) Après avoir défait le dernier carton dans le bureau je remarque une Trap mystérieuse mais il est déjà 23h et demain j'ai une longue journée qui m'attend (8-10 et 15h45-17h45)
Day 2 histoire
Après avoir défait le dernier carton dans le bureau je remarque une Trap mystérieuse mais il est déjà 23h et demain j'ai une longue journée qui m'attend (8-10 et 15h45-17h45)
# Day 3 histoire
La nuit passe --> rien ne bouge
(Level bonus)
(choix entre faire le petit dej ou allez directement en cours)
## Si choix petit dej
Après un bon petit déj --> puzzle cassé les oeuf au bonne endroit dans la poêle
mettre le bacon au bonne endroit
## si choix rien déjeuner
rien ne se passer (peut avoir de l'importance pour la suite ex : fin pendant la journée donc allez faire des courses idée de niveau de remplir le caddie)
La journée se termine je croise les doigts pour que tout reste comme avant
Puis on ouvre la Trap est... space cat avec qlq level
ou reveil devant l examen de calculus

View File

@ -0,0 +1,34 @@
# 23 mars 2023
Nous nous sommes rassemblés ce jeudi afin de parler de plusieurs sujets tel que :
1. L'avancement du travail d'Eddy.
2. Clarifiction sur les tâches.
3. Rassembler notre travail.
## L'avancement du travail d'Eddy
Eddy a commencé à travailler avec javaFX afin de modéliser les premiers mouvements/ déplacement sur les pièces dont nous aurons besoins pour la suite du projet. Il va rajouter son travail sur notre git.
## Clarifiction sur les tâches du projet
En ceux qui concerne Eddy va continuer de :
- Travailler sur les mouvements des pièces
- Faire l'interface graphique pour le jeu.
Anthony va :
- Continuer à travailler sur Map
- Travailler sur son Parser
Pour finir Matteo va :
- S'occuper de faire le menu du jeu
- Faire la musique du jeu
## Rassembler notre travail
Après la mise en commun du travaille d'Eddy avec celle d'Anthony deux points important ont été souligné.
En effet désormais Anthony se consacre sur toutes les propriétés des pièces à l'intérieur du plateau de jeu, tandis que Eddy lui fait en sorte de lier son travail pour les mouvements en dehors du plateau c'est-à-dire la sélection des pièces, la sélections de la texture en bref l'interface graphique.
De plus concernant la position des pièces il a été décidé de se référer au coin en haut à gauche de la matrice une méthode qui pourra nous aider est la méthode Vec2 qui Anthony a rajouté
En ce qui concerne la création du menu pour Matteo, il faudrait créer une classe select level pour que chaque level contiennent : le parser qui est relié à Shape et à Pièce mais aussi à l'interface graphique.

View File

@ -0,0 +1,46 @@
package school_project;
import java.util.ArrayList;
import java.util.Arrays;
/**
* Represent the map with its pieces.
* Every piece has a position element that represent its position on the map
*/
public class Map extends Shape{
private final ArrayList<Piece> pieces = new ArrayList<>();
public Map(boolean[][] matrix) {
super(matrix);
}
public void addPiece(Piece piece){
piece.setLinked_map(this);
pieces.add(piece);
}
/**
* Return a matrix with all used space on the map to see if a piece can fit in a space
*
* @return matrix of boolean with false being the not used space
*/
public boolean[][] getUsedSpace(){
// Copy of the map to avoid side effect
boolean[][] used = new boolean[height][width];
for (int i = 0; i < height; i++) {
used[i] = Arrays.copyOf(matrix[i], width);
}
for (Piece p : pieces) {
for(int x = 0; x < p.height; x++){
for(int y = 0; y < p.width; y++){
if (p.getShape()[x][y]){
used[p.getPosition().x + x][p.getPosition().y + y] = false;
}
}
}
}
return used;
}
}

View File

@ -0,0 +1,24 @@
package school_project;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class Menu extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
//set up the page
BorderPane root = new BorderPane();
Scene scene = new Scene(root,300,200);
primaryStage.setScene(scene);
primaryStage.show();
}
}

View File

@ -0,0 +1,59 @@
package school_project;
/**
* Represent a Piece in the game.
* Every Piece should be contained in a Map Object.
* A piece has a position witch is the position of its top-leftest position in its matrix.
* If the piece is not placed in the Map (in a floating state) the position should be null;
*/
public class Piece extends Shape{
private Vec2 Position;
private Map linked_map;
public Piece() {
super();
}
public Piece(boolean[][] matrix) {
super(matrix);
}
public Vec2 getPosition() {
return Position;
}
public void setPosition(Vec2 position){
if (linked_map == null) {
return;
}
this.Position = position;
}
/**
* set the map the piece is into the the map argument
* @param map map where to place the piece
*/
public void setLinked_map(Map map){
this.linked_map = map;
}
/**
* Rotate the matrix of the piece. Used when the player right click
*
* @param times Set the amount of time the rotation should be executed. Should be set between 1 and 3.
*/
public void RotateRight(int times){
while(times > 0) {
boolean[][] temp_matrix = new boolean[width][height];
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
temp_matrix[i][j] = matrix[-j+height-1][i];
}
}
times--;
matrix = temp_matrix;
}
}
}

View File

@ -0,0 +1,44 @@
package school_project;
/**
* Base class for everything that is a shape kind, like map and pieces
* it contain a matrix of boolean where the shape is defined by the true's
*/
public class Shape {
protected boolean[][] matrix;
protected int height, width;
public Shape() {
matrix = new boolean[0][0];
}
public Shape(boolean[][] matrix){
this.setShape(matrix);
}
public void setShape(boolean[][] matrix) throws IllegalArgumentException{
height = matrix.length;
width = matrix[0].length;
for (boolean[] row: matrix){
if(row.length != width){
throw new IllegalArgumentException("The argument should be a square matrix");
}
}
this.matrix = matrix;
}
public int getHeight() {
return height;
}
public int getWidth() {
return width;
}
public boolean[][] getShape() {
return matrix;
}
}

View File

@ -0,0 +1,19 @@
package school_project;
/**
* This is used to represent a position/vector/... any ensemble of 2 elements that have to work together in
* a plan. This way we can use some basic operations over them.
*/
public class Vec2 {
public int x, y;
public Vec2() {
x = 0;
y = 0;
}
public Vec2(int x, int y ){
this.x = x;
this.y = y;
}
}

View File

@ -0,0 +1,35 @@
package school_project;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class MapTest {
@Test
void getUsedSpace() {
boolean[][] map_matrix = {
{false, true, true, false},
{false, true, true, true},
{true, true, true, false},
{false, true, true, true}
};
Map testMap = new Map(map_matrix);
boolean[][] piece1_matrix = {
{true, true},
{true, true},
};
Piece piece1 = new Piece(piece1_matrix);
testMap.addPiece(piece1);
piece1.setPosition(new Vec2(0,1));
boolean[][] result_matrix = {
{false, false, false, false},
{false, false, false, true},
{true, true, true, false},
{false, true, true, true}
};
assertArrayEquals(result_matrix, testMap.getUsedSpace());
}
}

View File

@ -0,0 +1,60 @@
package school_project;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class PieceTest {
@Test
void rotateRight() {
boolean[][] piece1_matrix = {
{true, false, false},
{false, true, false},
{true, true, false},
};
boolean[][] piece1_matrix_result = {
{true, false, true},
{true, true, false},
{false, false, false},
};
boolean[][] piece2_matrix = {
{true},
{false},
{true},
};
boolean[][] piece2_matrix_result = {
{true, false, true},
};
boolean[][] piece3_matrix_result = {
{false, false, false},
{false, true, true},
{true, false, true},
};
Piece piece1 = new Piece();
piece1.setShape(piece1_matrix);
Piece piece2 = new Piece(piece2_matrix);
Piece piece3 = new Piece(piece1_matrix);
Piece piece4 = new Piece(piece1_matrix);
piece1.RotateRight(1);
assertArrayEquals(piece1_matrix_result, piece1.getShape());
piece2.RotateRight(1);
assertArrayEquals(piece2_matrix_result, piece2.getShape());
piece3.RotateRight(3);
assertArrayEquals(piece3_matrix_result, piece3.getShape());
piece4.RotateRight(3);
assertNotEquals(piece1_matrix_result, piece4.getShape());
}
}

View File

@ -0,0 +1,48 @@
package school_project;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class ShapeTest {
@Test
void setShape() {
boolean[][] matrix_shape1 = {
{true, false},
{true, true},
{true, false}
};
boolean[][] matrix_shape2 = {
{true, false, true},
{true, true, true},
{true, false, true},
};
boolean[][] matrix_shape3 = {
{true, false, true},
{true, true}
};
boolean[][] matrix_shape4 = {
{true},
{false},
{true}
};
Shape shape1 = new Shape();
shape1.setShape(matrix_shape1);
assertEquals(3, shape1.getHeight());
assertEquals(2, shape1.getWidth());
Shape shape2 = new Shape(matrix_shape2);
assertEquals(3, shape2.getHeight());
assertEquals(3, shape2.getWidth());
assertThrows(IllegalArgumentException.class, () -> new Shape(matrix_shape3));
Shape shape4 = new Shape(matrix_shape4);
assertEquals(3, shape4.getHeight());
assertEquals(1, shape4.getWidth());
}
}

42
prototypes/demo/.gitignore vendored Normal file
View File

@ -0,0 +1,42 @@
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/
### IntelliJ IDEA ###
.idea/modules.xml
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/
### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
### VS Code ###
.vscode/
### Mac OS ###
.DS_Store

View File

@ -0,0 +1,57 @@
plugins {
id 'java'
id 'application'
id 'org.javamodularity.moduleplugin' version '1.8.12'
id 'org.openjfx.javafxplugin' version '0.0.13'
id 'org.beryx.jlink' version '2.25.0'
}
group 'com.example'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
ext {
junitVersion = '5.9.1'
}
sourceCompatibility = '17'
targetCompatibility = '17'
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
application {
mainModule = 'com.example.demo'
mainClass = 'com.example.demo.HelloApplication'
}
javafx {
version = '17.0.2'
modules = ['javafx.controls', 'javafx.fxml']
}
dependencies {
testImplementation("org.junit.jupiter:junit-jupiter-api:${junitVersion}")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")
}
test {
useJUnitPlatform()
}
jlink {
imageZip = project.file("${buildDir}/distributions/app-${javafx.platform.classifier}.zip")
options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages']
launcher {
name = 'app'
}
}
jlinkZip {
group = 'distribution'
}

Binary file not shown.

View File

@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

234
prototypes/demo/gradlew vendored Normal file
View File

@ -0,0 +1,234 @@
#!/bin/sh
#
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
APP_NAME="Gradle"
APP_BASE_NAME=${0##*/}
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
warn () {
echo "$*"
} >&2
die () {
echo
echo "$*"
echo
exit 1
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"

89
prototypes/demo/gradlew.bat vendored Normal file
View File

@ -0,0 +1,89 @@
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega

View File

@ -0,0 +1 @@
rootProject.name = "demo"

View File

View File

@ -0,0 +1,184 @@
package com.example.demo;
import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.MenuButton;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.RowConstraints;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.stage.Stage;
import java.io.IOException;
import java.util.Objects;
public class HelloApplication extends Application {
private Stage stage;
//set up scene one
private Scene Menu;
private BorderPane BdP;
private Label title;
private Button Play;
private Button Select_level;
private Button Trophy;
//set up scene 2
private Scene Level_menu;
private GridPane GdP;
private Button bck_menu;
//button for levele
private MenuButton select_day;
private Button _1;
private Button _2;
private Button _3;
private Button _4;
private Button _5;
private Button _6;
private Button _7;
private Button _8;
private Button _9;
private Button _10;
public void start(Stage primaryStage) {
//set up the page
stage = primaryStage;
stage.setTitle("ROAD TO MASTER YOU");
Menu = createMenu();
Level_menu = createLevel_menu();
stage.setScene(Menu);
stage.show();
}
private Scene createMenu(){
Play = new Button("Play");
Trophy = new Button("Trophy");
Select_level = new Button("Select Level");
Select_level.setOnAction(event -> switchScenes(Level_menu));
title = new Label("Welcome to road to master you");
title.setFont(Font.font(20));
title.setTextFill(Color.GOLD);
BdP = new BorderPane(null,title,Select_level,Trophy,Play);
Menu = new Scene(BdP,700,400);
BorderPane.setAlignment(title,Pos.CENTER);
BorderPane.setAlignment(Play,Pos.CENTER);
BorderPane.setAlignment(Select_level,Pos.CENTER);
BorderPane.setAlignment(Trophy,Pos.CENTER);
Menu.getStylesheets().add("style.css");
BdP.setPadding(new Insets(20,60,20,60));
return Menu;
}
private Scene createLevel_menu(){
bck_menu = new Button("Back to the menu");
bck_menu.setOnAction(event -> switchScenes(Menu));
GdP = new GridPane();
Level_menu = new Scene(GdP,700,400);
_1 = new Button("1");
_2 = new Button("2");
_3 = new Button("3");
_4 = new Button("4");
_5 = new Button("5");
_6 = new Button("6");
_7 = new Button("7");
_8 = new Button("8");
_9 = new Button("9");
_10 = new Button("10");
select_day = new MenuButton("Select day");
//set up of the button
GdP.add(select_day,1,0);
GdP.add(_1,0,1);
GdP.add(_2,1,1);
GdP.add(_3,2,1);
GdP.add(_4,0,2);
GdP.add(_5,1,2);
GdP.add(_6,2,2);
GdP.add(_7,0,3);
GdP.add(_8,1,3);
GdP.add(_9,2,3);
GdP.add(_10,1,4);
GdP.add(bck_menu,2,4);
//set up gap and padding and everything else
GdP.setHgap(20);
GdP.setVgap(20);
GdP.setPadding(new Insets(40,20,20,40));
ColumnConstraints col_1 = new ColumnConstraints();
col_1.setPercentWidth(33);
ColumnConstraints col_2 = new ColumnConstraints();
col_2.setPercentWidth(33);
ColumnConstraints col_3 = new ColumnConstraints();
col_3.setPercentWidth(34);
GdP.getColumnConstraints().addAll(col_1,col_2,col_3);
//GdP.setGridLinesVisible(true);
GridPane.setHalignment(_1, HPos.CENTER);
GridPane.setHalignment(_2, HPos.CENTER);
GridPane.setHalignment(_3, HPos.CENTER);
GridPane.setHalignment(_4, HPos.CENTER);
GridPane.setHalignment(_5, HPos.CENTER);
GridPane.setHalignment(_6, HPos.CENTER);
GridPane.setHalignment(_7, HPos.CENTER);
GridPane.setHalignment(_8, HPos.CENTER);
GridPane.setHalignment(_9, HPos.CENTER);
GridPane.setHalignment(_10, HPos.CENTER);
GridPane.setHalignment(select_day, HPos.CENTER);
GridPane.setHalignment(bck_menu, HPos.CENTER);
return Level_menu;
}
public void switchScenes(Scene scene){
stage.setScene(scene);
}
public static void main(String[] args) {
launch(args);
}
}
/***@Override
public void start(Stage primaryStage) {
//set up the page
primaryStage.setTitle("Road to Master You");
BorderPane root = new BorderPane();
Scene scene = new Scene(root,400,300);
primaryStage.setScene(scene);
primaryStage.show();
//set up all the object needed for the menu
Label title = new Label("Welcome to Road to Master You");
Button Play = new Button("Play");
Button Select_level = new Button("Select Level");
Button Trophy = new Button("Trophy");
//put all the object on the page
root.setTop(title);
root.setBottom(Trophy);
root.setRight(Select_level);
root.setLeft(Play);
//adjust everything as I want (position,color)
title.setTextFill(Color.GOLD);
BorderPane.setAlignment(title,Pos.CENTER);
BorderPane.setAlignment(Play,Pos.CENTER);
BorderPane.setAlignment(Select_level,Pos.CENTER);
BorderPane.setAlignment(Trophy,Pos.CENTER);
scene.getStylesheets().add("style.css"); //todo found why there is no link btw file
//Switch scene
Select_level.setOnAction(event -> {
SelectLevel secondWindow = new SelectLevel();
secondWindow.show();
});
}
}
*/

View File

@ -0,0 +1,14 @@
package com.example.demo;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
public class HelloController {
@FXML
private Label welcomeText;
@FXML
protected void onHelloButtonClick() {
welcomeText.setText("Welcome to JavaFX Application!");
}
}

View File

@ -0,0 +1,65 @@
/***package com.example.demo;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import static javafx.application.Application.launch;
public class SelectLevel extends Stage {
private Stage stage;
//set up scene one
private Scene Menu;
private BorderPane BdP;
private Label title;
private Button Play;
private Button Select_level;
private Button Trophy;
//set up scene 2
private Scene Level_menu;
private GridPane GdP;
private Button bck_menu;
public void start(Stage primaryStage) {
//set up the page
primaryStage.setTitle("Select your Level");
Menu = createMenu();
Level_menu = createLevel_menu();
primaryStage.setScene(Menu);
primaryStage.show();
}
private Scene createMenu(){
Play = new Button("Play");
Trophy = new Button("Trophy");
Select_level = new Button("Select Level");
Select_level.setOnAction(event -> switchScenes(Level_menu));
title = new Label("Welcome to road to master you");
BdP = new BorderPane(null,title,Select_level,Trophy,Play);
Menu = new Scene(BdP,700,400);
return Menu;
}
private Scene createLevel_menu(){
bck_menu = new Button("Back to the menu");
bck_menu.setOnAction(event -> switchScenes(Menu));
GdP = new GridPane();
Level_menu = new Scene(GdP,700,400);
return Level_menu;
}
public void switchScenes(Scene scene){
stage.setScene(scene);
}
public static void main(String[] args) {
launch(args);
}
}
***/

View File

@ -0,0 +1,8 @@
module com.example.demo {
requires javafx.controls;
requires javafx.fxml;
opens com.example.demo to javafx.fxml;
exports com.example.demo;
}

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.control.Button?>
<VBox alignment="CENTER" spacing="20.0" xmlns:fx="http://javafx.com/fxml"
fx:controller="com.example.demo.HelloController">
<padding>
<Insets bottom="20.0" left="20.0" right="20.0" top="20.0"/>
</padding>
<Label fx:id="welcomeText"/>
<Button text="Hello!" onAction="#onHelloButtonClick"/>
</VBox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 423 KiB

View File

@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Level - Road to masterU</title>
<link href="style-Level.css" rel="stylesheet">
</head>
<body>
<main>
<section class="select-day">
<h1>Day 1</h1>
<a href="" class="lien-icone">></a>
</section>
<section class="select-level">
<div class="level"><a href="">1</a></div>
<div class="level"><a href="">2</a></div>
<div class="level"><a href="">3</a></div>
<div class="level"><a href="">4</a></div>
<div class="level"><a href="">5</a></div>
<div class="level"><a href="">6</a></div>
<div class="level"><a href="">7</a></div>
<div class="level"><a href="">8</a></div>
<div class="level"><a href="">9</a></div>
<div class="level"><a href="">10</a></div>
</section>
</main>
<footer>
<a href="Menu.html" class="back-to-accueil">Menu</a>
</footer>
</body>

View File

@ -0,0 +1,23 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Menu - Road to masterU</title>
<link href="style-menu.css" rel="stylesheet">
</head>
<body>
<main>
<section class="title">
<h1>ROAD TO MASTERU </h1>
</section>
<section class="setting">
<a href="" class="setting-Play"><h2>Play</h2></a>
<a href="Level.html" class="setting-level"><h2>Level</h2></a>
</section>
</main>
<footer>
<a href="" class="lien-icone"><img src="../Trophee-pic.jpg" alt="trophy"></a>
<a href="" class="lien-icone"><img src="" alt="link-setting"></a>
</footer>
</body>

View File

@ -0,0 +1,45 @@
body{
background-image: url("../Background-select-level.jpg");
background-position: right;
}
h1,.lien-icone,.back-to-accueil{
font-size: 75px;
padding-top: 80px;
color:gold;
}
footer{
text-align: center;
padding:50px
}
a{
text-decoration: none;
color:black;
}
.select-day{
display: flex;
flex-direction: row;
justify-content: center;
align-items: baseline;
}
.select-level{
display:grid;
grid-template-columns: 40px 40px 40px;
grid-gap: 30px;
justify-content: center;
}
.level{
height: 60px;
border:3px solid black;
}
.level>a{
font-size:30px;
display: flex;
justify-content:center;
}
.lien-icone{
padding-left: 10px;
}

View File

@ -0,0 +1,27 @@
body{
background-image: url("../BackGround-menu.jpg");
background-position: center;
}
h1{
font-size: 75px;
padding-top: 80px;
text-decoration: underline;
}
h1,h2{
text-align: center;
color: gold;
}
h2{
font-size: 50px;
padding-top: 40px;
}
footer{
position:absolute;
bottom:0;
padding-bottom: 10px;
right:10px;
}
a{
text-decoration: none;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 423 KiB

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.MenuButton?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.RowConstraints?>
<GridPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/19">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Label prefHeight="108.0" prefWidth="200.0" style="-fx-alignment: center;" text="Select Level" GridPane.columnIndex="2" />
<Button mnemonicParsing="false" text="1" GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.rowIndex="2" />
<Button mnemonicParsing="false" text="2" GridPane.columnIndex="2" GridPane.halignment="CENTER" GridPane.rowIndex="2" />
<Button mnemonicParsing="false" text="3" GridPane.columnIndex="3" GridPane.halignment="CENTER" GridPane.rowIndex="2" />
<Button mnemonicParsing="false" text="5" GridPane.columnIndex="2" GridPane.halignment="CENTER" GridPane.rowIndex="3" />
<Button mnemonicParsing="false" text="6" GridPane.columnIndex="3" GridPane.halignment="CENTER" GridPane.rowIndex="3" />
<Button mnemonicParsing="false" text="7" GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.rowIndex="4" />
<Button mnemonicParsing="false" text="8" GridPane.columnIndex="2" GridPane.halignment="CENTER" GridPane.rowIndex="4" />
<Button mnemonicParsing="false" text="4" GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.rowIndex="3" />
<Button mnemonicParsing="false" stylesheets="@SelectLevel.css" text="9" GridPane.columnIndex="3" GridPane.halignment="CENTER" GridPane.rowIndex="4" />
<Button mnemonicParsing="false" text="10" GridPane.columnIndex="2" GridPane.halignment="CENTER" GridPane.rowIndex="5" />
<MenuButton mnemonicParsing="false" text="Select day " GridPane.columnIndex="2" GridPane.halignment="CENTER" GridPane.rowIndex="1">
<items>
<MenuItem mnemonicParsing="false" text="Action 1" />
<MenuItem mnemonicParsing="false" text="Action 2" />
</items>
</MenuButton>
<Button mnemonicParsing="false" text="Back to menu" GridPane.columnIndex="2" GridPane.halignment="CENTER" GridPane.rowIndex="6" />
</children>
</GridPane>

View File

@ -0,0 +1,7 @@
.root {
-fx-background-image: url("Background-select-level.jpg");
-fx-background-position: center
}
.button{
-fx-alignment: center;
}

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.text.Font?>
<BorderPane centerShape="false" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1">
<top>
<Label prefHeight="116.0" prefWidth="600.0" style="-fx-alignment: center; -fx-padding: 10;" text="Road to MasterU" textAlignment="CENTER" textFill="GOLD" underline="true" wrapText="true" BorderPane.alignment="CENTER">
<font>
<Font size="26.0" />
</font>
</Label>
</top>
<bottom>
<Button mnemonicParsing="false" style="-fx-alignment: center;" text="Trophy" textAlignment="CENTER" BorderPane.alignment="CENTER">
<BorderPane.margin>
<Insets bottom="100.0" />
</BorderPane.margin></Button>
</bottom>
<right>
<Button mnemonicParsing="false" prefHeight="0.0" prefWidth="153.0" style="-fx-alignment: center;" text="Select Level" BorderPane.alignment="CENTER">
<BorderPane.margin>
<Insets right="100.0" />
</BorderPane.margin></Button>
</right>
<left>
<Button mnemonicParsing="false" prefHeight="10.0" prefWidth="90.0" style="-fx-alignment: center;" text="Play" textAlignment="CENTER" BorderPane.alignment="CENTER">
<BorderPane.margin>
<Insets left="110.0" />
</BorderPane.margin></Button>
</left>
</BorderPane>

View File

@ -0,0 +1,12 @@
.root{
-fx-background-image:url("BackGround-menu.jpg");
-fx-background-position:center;
}
.label{
-fx-font-size: 75;
}
.button {
-fx-start-margin: 20;
-fx-text-alignment: center;
-fx-padding: 10;
}