From 26d3bb5c05f5461742483ed27f65ab83d5c2346b Mon Sep 17 00:00:00 2001 From: "Debucquoy Anthony (tonitch)" Date: Sun, 2 Apr 2023 23:22:38 +0200 Subject: [PATCH] Board Made of Rectangles I don't know if this is the right way to do this but I seems looks like a good idea. --- .idea/gradle.xml | 1 + .idea/misc.xml | 2 +- Current_Window.png | Bin 0 -> 4504 bytes README.md | 15 ++++++- app/build.gradle | 6 +++ app/src/main/java/jchess/App.java | 46 ++++++++++++++++---- app/src/main/java/jchess/KeyboardEvent.java | 16 +++++++ 7 files changed, 76 insertions(+), 10 deletions(-) create mode 100644 Current_Window.png create mode 100644 app/src/main/java/jchess/KeyboardEvent.java diff --git a/.idea/gradle.xml b/.idea/gradle.xml index df527ea..33b144a 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -1,5 +1,6 @@ + \ No newline at end of file diff --git a/Current_Window.png b/Current_Window.png new file mode 100644 index 0000000000000000000000000000000000000000..3dfbef1b8bf1e9794c0f8e7003d0889a7c2f415d GIT binary patch literal 4504 zcmd^@i&s+F0>&A&)E+X`bZyM6ZV&HFV_9YyKBz3sTWaNi2`M?2sHm8RC*u|8mCY&u0I=5Q)QR%|z-Nm9fXRA`m4=yZTSdm3S;BFjZ!HYhb&JbC008U! zeNG(vHtDfkl#)%v;Ca)^0a5l^GYiY@mfN#0x3nfkp0uQ>5y))7xqt4ux8my#i;%Am z(C<+W$X))vL%!yV7tlK$H{=!`(QLI5352gkLF znlwBfPq706rViyhh90N?=nA+jk;%vmD9{9uq_K1Zn5|C&SnQkveEteK0(kQM?u^ZW ztAY6;Jb%!$@cTt)A&^eAglv9zPVloe6sienZ zZy_vBf+VBBzW0sZ0uRmos$9h21+acVgi*4w^te(-kgZGPc?cxtqdaE%RQws6!_>Wb zJ#=?P)xiQfT9Zj$j1k&EFwZBcxag6WgI(a|9#xCga%H4>uVJjw-29FB-Ox|GUL<&- z6~?@FRkWy;k(3X8owZ&0d`@~mxMR+>#6*ETcs4&u7EzVTT)rnw8G8r?MrK8#QREe? z{VI|ZSR_)EO3KHy0Au@i@L)-==C=5?6=|nx)g@`=f{DyLI0Vw?Mr+EUCfCFs(E-V% zDDnI}2s1dx3~i;gc)YAO6-OUJ#l_X{>r+1IPNHo9I)c7Ye+*I;aU1Ft%n^oM2z9F; z0d_xiLh`*kT*zg12PlF{LQO1lS`FhYSCDLAqQ}YOjhNAHC8-^c$1J>SRm~QO0wA7X z({iG&1{A8(pspj46gZbbh#OI<<^udDuW17OJva-x57nFHaye$c+ymldRS*P$6uIb^ z)f39=Ppjwbj?63D=2LM(H@@A54`9+mlam(zv>biG~8^88h_g&Q_HByJ=*ck zR7CKsXirqjogsBsWV*CutDeT3e8;UIk!CwI$K7Y&&Zyty>YB>z;!kN?t+`M#lv>H# znp&CZF^-isjEwi~5--XIYa6S=J01ng1WgTXa!1%fn+(`BK@etizc*TZ2pJNHpL|S{ z-H}mKg?co1YSvnDP4h4ivBa=LB5g9f9NeyiI&i{#oD15S+RR<_;TI32&q^|fv_x^S zggAn2&`sylNU3qvgu3{X5Quhq&QrF5mf0U#^d*tF1N5>QY%Ug0Rt45`K*eBfyKddu zmGca(y%l@1SIAQMF0hoG6qHttadvb(3-pLf^({Iy_ZBx;C&4VPOOP_)ddj1A9gIG+ zgq!>6u2jU^f`C9|eH4l%af6i2(;uVLvAue?*#ca0PaEsKRY_|_c~J%Fy39z;WSR(x+?#Kec$qQ;j5*CF__)8D__oFE zB)IODco1Bh^_ot1CcRlz*ex6L-3Nj2OHFsPC8%`$g5}Xv8h0>N6P{;k?@RS6IhRY2 z3594h>Y%jSdn<`VvJSZb$wd%+h)EwR=$D>Hs>ld!an3i5S8|2sUP(D?=6`8DEWVhI z<|J2bL8B{svB>$!BlO|Y2eJ-Vbk%tCQ3p0sV&^I#wHKf|IGPx)E~|67OcAX4j(8*i z3W12~J`6~sQ<#QKs|N9mXuIzHckuTJ!c~NwkBgCY!Y(0vAE$vdl=7=4YB~lyG)71> zHFXtnu7;rv2dSRP^n9n(Oiif zv9!D*C30uV(D3jjN)U}{<&hNCULb_5{@deP_nDM8wQJd~W`rQ68Z=SeBD?>krxLrV zFQS*rt&YE|aqD6cPVhE`50ljz4N7KV3Z{m=|H1#O=AlHH1Gq8)yd=Rzj=aRh4eUep zl;xuITHv$!`AktE6Jb1Y#Q;)z-$_>&t9cDX&E~XYx{f_C&>(^j9viOU4-5p63lZlE z>Z7T-2wVk-hgHP8cG-xzk)2I&LSRl)b*;xiIUV~hRVm^r<1}A7g~w*$`CZ=QIZb;P zSx%DybLcB8xSbv&ZC~NMSl(Ol)l~L8Up;JYE%+6fS~_SGLyzn^ts2=XI?K*#N**SY zsEy-qKw;fMstk0?NVPqVz(@OlBHt%#bQID7Ii#B(D%YAJwTlX_W++AIj<`+*|Pgu{dP&vEM?!h(s%&Nu0uadp*ng?rrR(<6Hn3J(I5L zf0==i);&cWN{E<1rw+Uw=fDIkjzPZo7kd_B?$B@D#WEQThFWkXuy5R*|zLv)1%w|ywmT!{uf-ZMYwlvZmurg z)}cov5=pn$-Tsd-{oipaYHyj}IQ2(C|H3l-`89iM>ghC0e5$Iirw+kdCHpB z>sb!tDbWM`>+t8FmP`I9kF-DWX?c0MF;xnM!kDVJ3kJLJ{x<9TaHAXG#3$sEKSJY4 zW{kBFFGn(SBoaxa>T}qy|Fz40aabF5T)66gRQd$vIm=_LHm1ndyX_hlTaUAF2sPTp zosowoRT`N4^C!mK-_wMNW_1~$`{ruh8GnC&^4+fW2D%vRV(g|wXEF2>tt6v7AV%;< zLyE>+U}Y>8i|-j>X|#(G!2wrR00BS!-tnJUnx5@XP&7R!k&K@;{IJgex*{tXsP_Lu mBt)c{1L7|j8tRFDg&usVWbYW--SDdg;B(UN1oil(TmJ?^%oZR3 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 3f3ac79..955c6a6 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,16 @@ # jchess -Java chess game \ No newline at end of file +A chess Board writen in Java + +The goal of this project is to get used to javaFX. This might awefull code, don't loook to deeply! + +## Build & Run + +```shell +$ ./gradlew build +$ ./gradlew run +``` + +## Appearance + +![Current Window](./Current_Window.png "Current Window") diff --git a/app/build.gradle b/app/build.gradle index 1225d80..7d28df9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,6 +9,7 @@ plugins { // Apply the application plugin to add support for building a CLI application in Java. id 'application' + id 'org.openjfx.javafxplugin' version '0.0.13' } repositories { @@ -29,6 +30,11 @@ application { mainClass = 'jchess.App' } +javafx { + version = "20" + modules = [ 'javafx.controls'] +} + tasks.named('test') { // Use JUnit Platform for unit tests. useJUnitPlatform() diff --git a/app/src/main/java/jchess/App.java b/app/src/main/java/jchess/App.java index 72ab782..8423267 100644 --- a/app/src/main/java/jchess/App.java +++ b/app/src/main/java/jchess/App.java @@ -1,14 +1,44 @@ -/* - * This Java source file was generated by the Gradle 'init' task. - */ package jchess; -public class App { - public String getGreeting() { - return "Hello World!"; + +import javafx.application.Application; +import javafx.scene.Scene; +import javafx.scene.input.KeyEvent; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.GridPane; +import javafx.scene.paint.Color; +import javafx.scene.shape.Rectangle; +import javafx.stage.Stage; + +public class App extends Application { + + public final static int WIDTH = 500, HEIGHT = 500; + public final static String PROGRAM_NAME = "JChess"; + public static void main(String[] args) { + launch(); } - public static void main(String[] args) { - System.out.println(new App().getGreeting()); + @Override + public void start(Stage primaryStage) throws Exception { + BorderPane root = new BorderPane(); + + GridPane board = new GridPane(); + + Rectangle[][] cases = new Rectangle[8][8]; + for (int i = 0; i < 8; i++) { + for (int j = 0; j < 8; j++) { + cases[i][j] = new Rectangle(WIDTH/8, HEIGHT/8); + cases[i][j].setFill((i + j) % 2 == 0 ? Color.WHITE : Color.LIGHTGRAY); + board.add(cases[i][j], i, j); + } + } + + + root.setCenter(board); + Scene scene = new Scene(root, WIDTH, HEIGHT); + scene.addEventHandler(KeyEvent.KEY_PRESSED, new KeyboardEvent()); + primaryStage.setScene(scene); + primaryStage.setTitle(PROGRAM_NAME); + primaryStage.show(); } } diff --git a/app/src/main/java/jchess/KeyboardEvent.java b/app/src/main/java/jchess/KeyboardEvent.java new file mode 100644 index 0000000..2008c4c --- /dev/null +++ b/app/src/main/java/jchess/KeyboardEvent.java @@ -0,0 +1,16 @@ +package jchess; + +import javafx.application.Platform; +import javafx.event.EventHandler; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; + +public class KeyboardEvent implements EventHandler { + @Override + public void handle(KeyEvent event) { + System.out.println(event.getCharacter()); + if(event.getCode() == KeyCode.Q){ + Platform.exit(); + } + } +}