Merge remote-tracking branch 'origin/Gwendal' into Thibaut
This commit is contained in:
2
.idea/gradle.xml
generated
2
.idea/gradle.xml
generated
@@ -1,9 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
|
<component name="GradleMigrationSettings" migrationVersion="1" />
|
||||||
<component name="GradleSettings">
|
<component name="GradleSettings">
|
||||||
<option name="linkedExternalProjectsSettings">
|
<option name="linkedExternalProjectsSettings">
|
||||||
<GradleProjectSettings>
|
<GradleProjectSettings>
|
||||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="gradleJvm" value="21" />
|
||||||
<option name="modules">
|
<option name="modules">
|
||||||
<set>
|
<set>
|
||||||
<option value="$PROJECT_DIR$" />
|
<option value="$PROJECT_DIR$" />
|
||||||
|
|||||||
5
.idea/misc.xml
generated
5
.idea/misc.xml
generated
@@ -1,5 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" project-jdk-name="23" project-jdk-type="JavaSDK" />
|
<component name="FrameworkDetectionExcludesConfiguration">
|
||||||
|
<file type="web" url="file://$PROJECT_DIR$" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="ms-21" project-jdk-type="JavaSDK" />
|
||||||
</project>
|
</project>
|
||||||
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/modules/app/Tetris.app.main.iml" filepath="$PROJECT_DIR$/.idea/modules/app/Tetris.app.main.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
8
.idea/modules/app/Tetris.app.main.iml
generated
Normal file
8
.idea/modules/app/Tetris.app.main.iml
generated
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module version="4">
|
||||||
|
<component name="AdditionalModuleElements">
|
||||||
|
<content url="file://$MODULE_DIR$/../../../app/src/main" dumb="true">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/../../../app/src/main/resources" type="java-resource" />
|
||||||
|
</content>
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
157
allfiles.txt
Normal file
157
allfiles.txt
Normal file
@@ -0,0 +1,157 @@
|
|||||||
|
275d761f246129253df1ecbc84c42c35f60daacc
|
||||||
|
43037c4174ec4d9e98e904411c9f74ca17aee21a
|
||||||
|
47908588e5d785be85631bcd14b437e073c2da36
|
||||||
|
5a175ea4b487bdcf281e44e7b99629fc6a10848f
|
||||||
|
63d5db5d6a80b960acd8bc31900ff1d01ae0a2a2
|
||||||
|
6af84d8dda24e9a9155c9ad7144741702bbaa549
|
||||||
|
7fb2becbb8fe125a9f592261924edda56e8eeef5
|
||||||
|
9ad9193244d045a470ecd64b60d4b35da2301432
|
||||||
|
b2649c364bf9bc52d52d609bc617c3ecff92197d
|
||||||
|
f2eefabf58c718cbb700c9f7c9d1995f8c8825e6
|
||||||
|
f9e3f1d2bba52b83d8bdb909ca2f685fd71a744c
|
||||||
|
285a6fb90cd7243ccd0ebebdf0cc2cca3c6bbbe1
|
||||||
|
34263085a001ecadcfc1482626b46f83b6c20230
|
||||||
|
45764cdbc8e10a6d15248879b93e1dac505a444f
|
||||||
|
7ecfdbc428688744005e1e6508bbcdf1757dd15b
|
||||||
|
909dd2ba4b865549dac622980e05dd151a3078b2
|
||||||
|
a35eade7d2fa03ac949b5313f01dcee83ca633cb
|
||||||
|
b6b766eb03672730c856c6e6bde033321725a0ca
|
||||||
|
b7f2a91f1d721fa17cc5dfaedb0c974a95db7f00
|
||||||
|
b8980c6c2563f506f4c8fd26d44c82633e9b7bd0
|
||||||
|
d5ea9b146c667cb7532effc060ef5afeac6ca80f
|
||||||
|
e08921e14ca9ccb6adf89e5571e9140e44083cec
|
||||||
|
f91f64602e6c6d892d70d71f4fc7a1bd943e23f3 .gitattributes
|
||||||
|
436814bbf32f9cd78b3e88d1efde3880f48a3722 .gitignore
|
||||||
|
edeba0a94c7c5a4bc4fbf5050e4b002323cc53f8 .gitignore
|
||||||
|
228c629ac9a3448c664ca45fafa6afc681bcc533 .idea
|
||||||
|
37c4a554cbf14f435db2eb43fd93b5314572a268 .idea
|
||||||
|
67509bba335fc9098edc0f0fefca36544f0993ab .idea
|
||||||
|
13566b81b018ad684f3a35fee301741b2734c8f4 .idea/.gitignore
|
||||||
|
b86273d9424b73937ca6ad7933f6b7eeb60f4a3d .idea/compiler.xml
|
||||||
|
3ced4eb7f9aa8e29aa4ab8cef00e2d62fb02b5e7 .idea/gradle.xml
|
||||||
|
efd7cbf42e288c4de536a66dd5b6c6b401e63106 .idea/gradle.xml
|
||||||
|
81d226132f2c293f23e938d1b088f3c00abc1686 .idea/misc.xml
|
||||||
|
cf69fd4d67b426c9addf9d150be9cb736c001cad .idea/misc.xml
|
||||||
|
d0f6ad47ffb00c0485911ecce8edf6ce7f28a477 .idea/modules
|
||||||
|
fc1a1629b999aebe7d72c4239be6a9594508ee4b .idea/modules.xml
|
||||||
|
007377fa005f8849275ecd3a4e57c083a95dde0f .idea/modules/app
|
||||||
|
59eb4e8e7a4cde1845c2d12df2f5f887b3775a66 .idea/modules/app/Tetris.app.main.iml
|
||||||
|
35eb1ddfbbc029bcab630581847471d7f238ec53 .idea/vcs.xml
|
||||||
|
cf6b1e6b33b8ef5fee1ade2b99451bd7fb353e05 README.md
|
||||||
|
e51a4c4f28fcdb8dc3f30efbfccf6e27e8e1fa14 README.md
|
||||||
|
59e98406bf40d0fc19383388e7e80a5aadc26b81 app
|
||||||
|
7b72780fd3dc796f13794bd100b0d58f48d7475e app
|
||||||
|
933bfae3d434ba0127e5b513ca480397a9ba65a7 app
|
||||||
|
9e4d904d3435b169f373d754fbdba260b386ecc6 app
|
||||||
|
bdd0722cc2a4b143a1fa80624fd89ffb18001bdd app
|
||||||
|
bdff75013af2bf7dc8f39bddc5f31f9ff234e3ef app
|
||||||
|
d56532df58c46a44d915841fac86442cc994e5c2 app
|
||||||
|
d8005883a27c854a1ff5528f37fc31a2e6541f8c app
|
||||||
|
f97f03f5a0009680ba76eb8c333ddb9682fcc018 app
|
||||||
|
fc7b1685b65c03b37b4d1bff9e7c4f347ce60ec4 app
|
||||||
|
4e42499269f4de4ad25f8848a93050899b0e635c app/build.gradle.kts
|
||||||
|
7761afadf778e47f1fc11a2bf5669773f29878c2 app/build.gradle.kts
|
||||||
|
180251199dad9ccae5cc7ae13f357c98c5540e55 app/src
|
||||||
|
3205c8924784b745bd8f5be1a26860b31b02f358 app/src
|
||||||
|
560f85b087f3a7f6575b2c61a990aba403c0f4f0 app/src
|
||||||
|
9e06263aea629f172fae7bc28eabeb57c14e5888 app/src
|
||||||
|
a841045b330012fe0ecfa98b3f7b8d18111580d3 app/src
|
||||||
|
a8b74c7c83b6e75cafbc4b8e0bc800c6b8521fa9 app/src
|
||||||
|
aaff9850f38268a091376a0eef7967905188cf09 app/src
|
||||||
|
bcfb14fb711fd14be5b1b8076a5efda37080ee0f app/src
|
||||||
|
f007f0237ca71e800d7db8c34635ad110f42c75d app/src
|
||||||
|
fe1bc10fb27f438ca79efd429ea5a521e41bc9bc app/src
|
||||||
|
04db8c7235d24702994df1957291fff8faf2bd46 app/src/main
|
||||||
|
0902215393bce49dfa3ecd0aa5f0e1c584386b12 app/src/main
|
||||||
|
3a89ac8d4d833265aa9595c8a5d80de16ee962b3 app/src/main
|
||||||
|
7834d89164faa50d5036abbc6238aebeba39e2b3 app/src/main
|
||||||
|
825b72903c75ee3a43c50957297febc6f8454abf app/src/main
|
||||||
|
85a2d198317a8c23d4cbddecebcb014a7eed2a8c app/src/main
|
||||||
|
a4b085629a56c63578bf37d857207c69655c8998 app/src/main
|
||||||
|
ac1f499f8f6a6cff37760c64c365e747517a6a2d app/src/main
|
||||||
|
c307f9ff858ab68ca5885db0ff7bcde889ecf069 app/src/main
|
||||||
|
fa83d5052bfb6ac895b870389976d78235a19ed0 app/src/main
|
||||||
|
406bae490815756155b3fa74894ac90af4729d55 app/src/main/java
|
||||||
|
46e9f38431f8d2dd63dbf85ccf00ed7d30a7aa07 app/src/main/java
|
||||||
|
47ebae455de4f74aebeda3b61c39f6de7dc5787c app/src/main/java
|
||||||
|
87258211368f0099c706bb9bc7672a1f2c13314a app/src/main/java
|
||||||
|
b6258a0cd88de47ecc461c7a95e3d7d84aad076c app/src/main/java
|
||||||
|
bd90ebf3aec01671e777f3b504bdefad7da095f4 app/src/main/java
|
||||||
|
d8f563bb6df5415260ee68915fccf1ca17a08601 app/src/main/java
|
||||||
|
e279b50ac5fa998111f2e8fa7ac7efe3352f6632 app/src/main/java
|
||||||
|
e5f3aa2866dce3d75db8479d1907bc35bc858fd4 app/src/main/java
|
||||||
|
fbb230cd6058cc92bc2c672f672526b4fcc9637e app/src/main/java
|
||||||
|
46b2a66453905c875d568305525afa60370730aa app/src/main/java/org
|
||||||
|
48ec3dd6b23ac5c38e273f4e1d65428a21b7df9c app/src/main/java/org
|
||||||
|
5faf95a17c62b60da2c4fe796f803d4bffc9c7a0 app/src/main/java/org
|
||||||
|
7fc649a4d65844dc0db5098249d401b7adb0d6d4 app/src/main/java/org
|
||||||
|
9559f15394becd850d5e817c90d0db96b99cee9b app/src/main/java/org
|
||||||
|
b5c48c1995f4fb6f62e75d07d2030d9547a57a33 app/src/main/java/org
|
||||||
|
bba960b198ee13c0f5d73372ccfd70d205ff6417 app/src/main/java/org
|
||||||
|
d41e5945ee49818da4f5bfdab5d9e47368bf2a2c app/src/main/java/org
|
||||||
|
dba0b55f00404e964d0b2c2295972c485b8ca743 app/src/main/java/org
|
||||||
|
df2516764274971681cefdbfa00815210623e49f app/src/main/java/org
|
||||||
|
0267e55f9afebc7ccd00cfbc497deca998df0453 app/src/main/java/org/App.java
|
||||||
|
21004147fd711cd40f11146345ba5cb3dd846f12 app/src/main/java/org/App.java
|
||||||
|
b4c4a7a3acefffa1035e72d70b937e5be85cbc66 app/src/main/java/org/App.java
|
||||||
|
38d0aa6cb8a953654b787eb0cc3cee103fcc50c4 app/src/main/java/org/Controlers
|
||||||
|
fb3ca2a75dca5f0607fa13b3ddfec119a764c9d0 app/src/main/java/org/Controlers/MusiqueControleur.java
|
||||||
|
4377bdeadf3c1f0c7d58e32ddee2a2b0306f6918 app/src/main/java/org/Controlers/TetrisControleur.java
|
||||||
|
31741b0eb81f9f55a0834f166071e777b8517f4e app/src/main/java/org/Models
|
||||||
|
d0b53e04d1008d05417864bdbb79e72f84acc412 app/src/main/java/org/Models
|
||||||
|
d12a4a85b4ffb4b14cb67503aa5c4ee994acdd91 app/src/main/java/org/Models
|
||||||
|
d930a9b6229347676698aa95277782f9d377fa8b app/src/main/java/org/Models
|
||||||
|
ec027e6b7978ccc38c30e75866fa3c24bd8f5e1e app/src/main/java/org/Models
|
||||||
|
f4acf157438fbc994f8845263530815e1b652655 app/src/main/java/org/Models
|
||||||
|
0d5767fc1455d0d0dd14775c16ba7d7e5ad3e477 app/src/main/java/org/Models/Grille.java
|
||||||
|
7ac21e234e5bbcb1a2b4d85473cc86413a68de4a app/src/main/java/org/Models/Grille.java
|
||||||
|
25c029e912b2f49c5d614e7a40421bde7eb763d5 app/src/main/java/org/Models/Jeu.java
|
||||||
|
08c51b0b9a17c2f37ee423d3a4e7a82015ffccb9 app/src/main/java/org/Models/PieceCourante.java
|
||||||
|
2d3c532f5745ae24cfe2f557c36ac472058ee21c app/src/main/java/org/Models/PieceCourante.java
|
||||||
|
86d1530bb33c6c4c9538aa494d5c55383267adaa app/src/main/java/org/Models/PieceCourante.java
|
||||||
|
cdaf4968517482a45cce64caa7b001da3ef543b3 app/src/main/java/org/Models/PieceI.java
|
||||||
|
57a7d9ff57ac32f5fa4e4035e0988cc589d2019b app/src/main/java/org/Models/PieceJ.java
|
||||||
|
0e81a40d602f3a4f721834547d6985efa9e293ee app/src/main/java/org/Models/PieceL.java
|
||||||
|
226a9b0516575ffc65901159acef8de04e8a21c5 app/src/main/java/org/Models/PieceL.java
|
||||||
|
284565182bf9b4564dec8ad696c0576bce0e0217 app/src/main/java/org/Models/PieceL.java
|
||||||
|
737375d02b8e61cf3b65d2d8d0ac608b4a26ae66 app/src/main/java/org/Models/PieceL.java
|
||||||
|
9f6680ef25242cbf0578899edd62ecd1ab24f8af app/src/main/java/org/Models/PieceO.java
|
||||||
|
316ddf03e2f5c3f008e686ad89b558d6032782b0 app/src/main/java/org/Models/PieceS.java
|
||||||
|
d1c2e8eaa383a1be7e6dc8c753e138e0445066f5 app/src/main/java/org/Models/PieceT.java
|
||||||
|
c8f6b30308d9de6357427dc89034bb005380dfe1 app/src/main/java/org/Models/PieceZ.java
|
||||||
|
061b4848f6b663bb07fce79f94328db80436578d app/src/main/java/org/Views
|
||||||
|
0ce912db8ac48c9daa1ddeacd52cf32ad91f21d8 app/src/main/java/org/Views
|
||||||
|
1d7329f5dcae721ae288de4897f7ce91b633dccd app/src/main/java/org/Views
|
||||||
|
1e947b07a51e3a5a68dd4e7927361bbfc3588cd7 app/src/main/java/org/Views
|
||||||
|
3e9d2a47453a976b57f7d220abaa0bf363ad603d app/src/main/java/org/Views
|
||||||
|
b0c5f7464ff2de1cd5020082e113923d73dc215a app/src/main/java/org/Views
|
||||||
|
dd2984e67126b93efff053ee738158497b0c59dd app/src/main/java/org/Views
|
||||||
|
0a74b7c91004bf8df974ad51a78488fba4ba725d app/src/main/java/org/Views/VueControle.java
|
||||||
|
9bbadde40fcf92b615223508f2eaa4ec884700b2 app/src/main/java/org/Views/VueControle.java
|
||||||
|
ecf3e5e7beff66c0fbf92639794f4879b3b54ea1 app/src/main/java/org/Views/VueControle.java
|
||||||
|
4af98386b8404e99248f3e607754f1b1ff2d7c5e app/src/main/java/org/Views/VueGrille.java
|
||||||
|
7358e68c8f6ef7f5f1566c5679da2dbd358cd7a8 app/src/main/java/org/Views/VueGrille.java
|
||||||
|
eeb4c236c10bb7bf6f457abe1b7f2cb895294967 app/src/main/java/org/Views/VueGrille.java
|
||||||
|
1c8f92d5442c0e29cffc9efb0bd220f702bb4c70 app/src/main/java/org/Views/VueTetris.java
|
||||||
|
9bea88db10d1104245a639fbdfc36d5ce5b3996e app/src/main/java/org/Views/VueTetris.java
|
||||||
|
a0fcdf9cd80ca09bb2e752b62600bb5b52525c87 app/src/main/java/org/Views/VueTetris.java
|
||||||
|
b9c58474b464a49fd2363102da7610b0f14b8789 app/src/main/java/org/Views/VueTetris.java
|
||||||
|
8f6480b8461fa38be6423a9843811a17dc792d37 app/src/main/resources
|
||||||
|
33f3440505856889eaca7a07c2b95de223c05962 app/src/main/resources/TetrisMusic.wav
|
||||||
|
2c4404f3029e26336e3c520686429d66a49d62f7 app/src/test
|
||||||
|
a8f00d3495d40e504c8ad30f8ea431be1371bb42 app/src/test/java
|
||||||
|
edc54f19667ec12b3325ae8418a318d2995b7f7f app/src/test/java/org
|
||||||
|
d73c43ece67b0651f4f602eadd5e5136fc7bbd77 app/src/test/java/org/example
|
||||||
|
998c02900d09b9572eff2e9fe488146010da28fb app/src/test/java/org/example/AppTest.java
|
||||||
|
723ca3a32bfd03239e931f38ae071989f1e17d37 gradle
|
||||||
|
377538c9965c6177781d5bbf1fdc2644e77d7950 gradle.properties
|
||||||
|
f5172b8e111dc2d56e4d73a30629ae7b35086711 gradle/libs.versions.toml
|
||||||
|
35fcf56b0a312bb6d76f3be24e580ec5ecd912df gradle/wrapper
|
||||||
|
1b33c55baabb587c669f562ae36f953de2481846 gradle/wrapper/gradle-wrapper.jar
|
||||||
|
ca025c83a7cc5e4f5eb7bc7a5ff8cae62df35ffb gradle/wrapper/gradle-wrapper.properties
|
||||||
|
23d15a9367071145e9c79bb4ddf879d1fbe78b5d gradlew
|
||||||
|
db3a6ac207e507b0bc1635a9f2c18d3b174e682e gradlew.bat
|
||||||
|
489872589b67af275bb7e2a96ec926b831e1dbc0 readme_files
|
||||||
|
3e51bb76143fcc8580ba88e2fb05df47ef0335df readme_files/ProjetEncadréTetris.pdf
|
||||||
|
b8db60d529f7cf31077a8a6b442a20395f32c592 readme_files/activiteTetris.svg
|
||||||
|
2f84576889e655dc28783d875bf1189708a4d3fc settings.gradle.kts
|
||||||
BIN
app/bin/main/TetrisMusic.mp3
Normal file
BIN
app/bin/main/TetrisMusic.mp3
Normal file
Binary file not shown.
@@ -23,6 +23,9 @@ dependencies {
|
|||||||
|
|
||||||
// This dependency is used by the application.
|
// This dependency is used by the application.
|
||||||
implementation(libs.guava)
|
implementation(libs.guava)
|
||||||
|
|
||||||
|
// JLayer pour lire les fichiers MP3
|
||||||
|
implementation("javazoom:jlayer:1.0.1")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply a specific Java toolchain to ease working on different environments.
|
// Apply a specific Java toolchain to ease working on different environments.
|
||||||
|
|||||||
@@ -6,25 +6,25 @@ package org;
|
|||||||
import org.Controllers.IO;
|
import org.Controllers.IO;
|
||||||
import org.Models.Grille;
|
import org.Models.Grille;
|
||||||
import org.Models.Jeu;
|
import org.Models.Jeu;
|
||||||
import org.Views.VueGrille;
|
import org.Views.VueTetris;
|
||||||
|
|
||||||
public class App {
|
public class App {
|
||||||
|
|
||||||
public String getGreeting() {
|
public String getGreeting() {
|
||||||
return "Hello World!";
|
return "Hello World!";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
System.out.println(new App().getGreeting());
|
|
||||||
|
|
||||||
// Models
|
// Models
|
||||||
Grille grille = new Grille(20, 10);
|
Grille grille = new Grille(20, 10);
|
||||||
Jeu jeu = new Jeu(grille);
|
Jeu jeu = new Jeu(grille);
|
||||||
|
|
||||||
// Views
|
// Views
|
||||||
VueGrille vueGrille = new VueGrille(grille, jeu);
|
VueTetris vueTetris = new VueTetris(grille, jeu);
|
||||||
|
|
||||||
// Controllers
|
// Controllers
|
||||||
IO io = new IO(jeu);
|
IO io = new IO(jeu);
|
||||||
vueGrille.addKeyListener(io);
|
vueTetris.addKeyListener(io);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package org.Controllers;
|
||||||
|
|
||||||
|
import org.Models.Musique;
|
||||||
|
import org.Views.VueBandeauControle;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
public class TetrisBandeauControleur {
|
||||||
|
private boolean partieEnPause = false;
|
||||||
|
private boolean partieTerminee = false;
|
||||||
|
private Musique musique;
|
||||||
|
private VueBandeauControle vueControle;
|
||||||
|
|
||||||
|
public TetrisBandeauControleur(VueBandeauControle vueControle) {
|
||||||
|
this.vueControle = vueControle;
|
||||||
|
this.musique = new Musique();
|
||||||
|
musique.start();// demarer musique
|
||||||
|
// action play/pause
|
||||||
|
this.vueControle.getPauseButton().addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
switchPlayPause();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
vueControle.getQuitterButton().addActionListener(e -> {
|
||||||
|
System.out.println("Fermeture de l'application...");
|
||||||
|
System.exit(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void switchPlayPause() {
|
||||||
|
if (partieTerminee) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
partieEnPause = !partieEnPause;
|
||||||
|
musique.basculePlayPause();
|
||||||
|
vueControle.getPauseButton().setText(partieEnPause ? "PLAY" : "PAUSE");
|
||||||
|
System.out.println(partieEnPause ? "Partie en pause" : "Partie en cours");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPartieTerminee() {
|
||||||
|
partieTerminee = true;
|
||||||
|
musique.arreterMusique();
|
||||||
|
vueControle.getPauseButton().setEnabled(false);
|
||||||
|
System.out.println("Partie terminée");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -19,7 +19,10 @@ public class Grille extends Observable { // TODO: ?? implements Runnable {
|
|||||||
this.nbLignes = nbLignes;
|
this.nbLignes = nbLignes;
|
||||||
this.nbColonnes = nbColonnes;
|
this.nbColonnes = nbColonnes;
|
||||||
this.grille = new boolean[nbLignes][nbColonnes];
|
this.grille = new boolean[nbLignes][nbColonnes];
|
||||||
|
initGrille();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void initGrille() {
|
||||||
for (int i = 0; i < nbLignes; i++) {
|
for (int i = 0; i < nbLignes; i++) {
|
||||||
for (int j = 0; j < nbColonnes; j++) {
|
for (int j = 0; j < nbColonnes; j++) {
|
||||||
this.grille[i][j] = false;
|
this.grille[i][j] = false;
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package org.Models;
|
|||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
import java.util.Observable;
|
import java.util.Observable;
|
||||||
|
|
||||||
import org.Models.Pieces.PieceCarre;
|
|
||||||
import org.Models.Pieces.PieceL;
|
import org.Models.Pieces.PieceL;
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
|
|||||||
51
app/src/main/java/org/Models/Musique.java
Normal file
51
app/src/main/java/org/Models/Musique.java
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
package org.Models;
|
||||||
|
|
||||||
|
import javazoom.jl.player.Player;
|
||||||
|
|
||||||
|
import java.io.BufferedInputStream;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
|
public class Musique extends Thread {
|
||||||
|
private Player player;
|
||||||
|
private boolean stop = false;
|
||||||
|
private boolean enPause = false;
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
while (!stop) {
|
||||||
|
try {
|
||||||
|
if (!enPause) {
|
||||||
|
InputStream musique = getClass().getResourceAsStream("/TetrisMusic.mp3");
|
||||||
|
if (musique == null) {
|
||||||
|
System.err.println("Erreur : le fichier musique.mp3 est introuvable.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
BufferedInputStream buffer = new BufferedInputStream(musique);
|
||||||
|
player = new Player(buffer);
|
||||||
|
player.play();
|
||||||
|
} else {
|
||||||
|
Thread.sleep(1000); // Attendre 1 seconde avant de vérifier à nouveau
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.err.println("Erreur lors de la lecture de la musique : " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void basculePlayPause() {
|
||||||
|
if (enPause) {
|
||||||
|
enPause = false;
|
||||||
|
} else {
|
||||||
|
enPause = true;
|
||||||
|
if (player != null) {
|
||||||
|
player.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void arreterMusique() {
|
||||||
|
stop = true;
|
||||||
|
if (player != null) {
|
||||||
|
player.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -11,6 +11,7 @@ public class PieceCarre implements PieceCourante {
|
|||||||
motif[2][2] = true;
|
motif[2][2] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean[][] getMotif() {
|
public boolean[][] getMotif() {
|
||||||
return motif;
|
return motif;
|
||||||
}
|
}
|
||||||
|
|||||||
18
app/src/main/java/org/Models/Pieces/PieceI.java
Normal file
18
app/src/main/java/org/Models/Pieces/PieceI.java
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
package org.Models.Pieces;
|
||||||
|
|
||||||
|
import org.Models.PieceCourante;
|
||||||
|
|
||||||
|
public class PieceI implements PieceCourante {
|
||||||
|
|
||||||
|
public PieceI() {
|
||||||
|
motif[0][1] = true;
|
||||||
|
motif[1][1] = true;
|
||||||
|
motif[2][1] = true;
|
||||||
|
motif[3][1] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean[][] getMotif() {
|
||||||
|
return motif;
|
||||||
|
}
|
||||||
|
}
|
||||||
17
app/src/main/java/org/Models/Pieces/PieceJ.java
Normal file
17
app/src/main/java/org/Models/Pieces/PieceJ.java
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package org.Models.Pieces;
|
||||||
|
|
||||||
|
import org.Models.PieceCourante;
|
||||||
|
|
||||||
|
public class PieceJ implements PieceCourante {
|
||||||
|
|
||||||
|
public PieceJ() {
|
||||||
|
motif[0][2] = true;
|
||||||
|
motif[1][2] = true;
|
||||||
|
motif[2][2] = true;
|
||||||
|
motif[2][1] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean[][] getMotif() {
|
||||||
|
return motif;
|
||||||
|
}
|
||||||
|
}
|
||||||
17
app/src/main/java/org/Models/Pieces/PieceO.java
Normal file
17
app/src/main/java/org/Models/Pieces/PieceO.java
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package org.Models.Pieces;
|
||||||
|
|
||||||
|
import org.Models.PieceCourante;
|
||||||
|
|
||||||
|
public class PieceO implements PieceCourante {
|
||||||
|
public PieceO() {
|
||||||
|
motif[0][1] = true;
|
||||||
|
motif[0][2] = true;
|
||||||
|
motif[1][1] = true;
|
||||||
|
motif[1][2] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean[][] getMotif() {
|
||||||
|
return motif;
|
||||||
|
}
|
||||||
|
}
|
||||||
18
app/src/main/java/org/Models/Pieces/PieceS.java
Normal file
18
app/src/main/java/org/Models/Pieces/PieceS.java
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
package org.Models.Pieces;
|
||||||
|
|
||||||
|
import org.Models.PieceCourante;
|
||||||
|
|
||||||
|
public class PieceS implements PieceCourante {
|
||||||
|
|
||||||
|
public PieceS() {
|
||||||
|
motif[0][1] = true;
|
||||||
|
motif[1][1] = true;
|
||||||
|
motif[1][2] = true;
|
||||||
|
motif[2][2] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean[][] getMotif() {
|
||||||
|
return motif;
|
||||||
|
}
|
||||||
|
}
|
||||||
18
app/src/main/java/org/Models/Pieces/PieceT.java
Normal file
18
app/src/main/java/org/Models/Pieces/PieceT.java
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
package org.Models.Pieces;
|
||||||
|
|
||||||
|
import org.Models.PieceCourante;
|
||||||
|
|
||||||
|
public class PieceT implements PieceCourante {
|
||||||
|
|
||||||
|
public PieceT() {
|
||||||
|
motif[0][1] = true;
|
||||||
|
motif[1][1] = true;
|
||||||
|
motif[2][1] = true;
|
||||||
|
motif[1][2] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean[][] getMotif() {
|
||||||
|
return motif;
|
||||||
|
}
|
||||||
|
}
|
||||||
18
app/src/main/java/org/Models/Pieces/PieceZ.java
Normal file
18
app/src/main/java/org/Models/Pieces/PieceZ.java
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
package org.Models.Pieces;
|
||||||
|
|
||||||
|
import org.Models.PieceCourante;
|
||||||
|
|
||||||
|
public class PieceZ implements PieceCourante {
|
||||||
|
|
||||||
|
public PieceZ() {
|
||||||
|
motif[0][2] = true;
|
||||||
|
motif[1][2] = true;
|
||||||
|
motif[1][1] = true;
|
||||||
|
motif[2][1] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean[][] getMotif() {
|
||||||
|
return motif;
|
||||||
|
}
|
||||||
|
}
|
||||||
116
app/src/main/java/org/Views/VueBandeauControle.java
Normal file
116
app/src/main/java/org/Views/VueBandeauControle.java
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
package org.Views;
|
||||||
|
|
||||||
|
import org.Models.PieceCourante;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class VueBandeauControle extends JPanel {
|
||||||
|
private JLabel scoreLabel;
|
||||||
|
private JPanel nextPiecePanel;
|
||||||
|
private JButton pauseButton;
|
||||||
|
private JPanel[][] caseNextPiece = new JPanel[4][4];
|
||||||
|
private JLabel nbLigneLabel;
|
||||||
|
private JButton quitterButton;
|
||||||
|
|
||||||
|
public VueBandeauControle() {
|
||||||
|
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
|
||||||
|
setBackground(Color.gray);
|
||||||
|
// setPreferredSize();
|
||||||
|
|
||||||
|
// SCORE
|
||||||
|
scoreLabel = new JLabel("SCORE : 0");
|
||||||
|
scoreLabel.setForeground(Color.white);
|
||||||
|
scoreLabel.setFont(new Font("Arial", Font.PLAIN, 16));
|
||||||
|
scoreLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
|
||||||
|
|
||||||
|
// NB LIGNE
|
||||||
|
nbLigneLabel = new JLabel("LIGNES : 0");
|
||||||
|
nbLigneLabel.setForeground(Color.white);
|
||||||
|
nbLigneLabel.setFont(new Font("Arial", Font.PLAIN, 16));
|
||||||
|
nbLigneLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
|
||||||
|
|
||||||
|
// NEXT PIECE
|
||||||
|
nextPiecePanel = new JPanel();
|
||||||
|
// nextPiecePanel.setPreferredSize(new Dimension(100, 100));
|
||||||
|
// nextPiecePanel.setMaximumSize(new Dimension(100, 100));
|
||||||
|
nextPiecePanel.setBackground(Color.LIGHT_GRAY);
|
||||||
|
nextPiecePanel.setAlignmentX(Component.CENTER_ALIGNMENT);
|
||||||
|
initierNextPiecePanel();
|
||||||
|
|
||||||
|
// PAUSE BUTTON & QUIT BUTTON
|
||||||
|
pauseButton = new JButton("PAUSE");
|
||||||
|
quitterButton = new JButton("QUITTER");
|
||||||
|
Dimension buttonSize = new Dimension(85, 30);
|
||||||
|
Insets margeBoutton = new Insets(2, 2, 2, 2);
|
||||||
|
// pauseButton.setPreferredSize(buttonSize);
|
||||||
|
pauseButton.setMargin(margeBoutton);
|
||||||
|
// quitterButton.setPreferredSize(buttonSize);
|
||||||
|
quitterButton.setMargin(margeBoutton);
|
||||||
|
JPanel boutonsPanel = new JPanel();
|
||||||
|
boutonsPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 0));
|
||||||
|
boutonsPanel.setOpaque(false);
|
||||||
|
boutonsPanel.add(pauseButton);
|
||||||
|
boutonsPanel.add(quitterButton);
|
||||||
|
pauseButton.setFocusable(false);
|
||||||
|
quitterButton.setFocusable(false);
|
||||||
|
|
||||||
|
add(Box.createVerticalStrut(20));
|
||||||
|
add(scoreLabel);
|
||||||
|
add(Box.createVerticalStrut(20));
|
||||||
|
add(nbLigneLabel);
|
||||||
|
add(Box.createVerticalStrut(20));
|
||||||
|
add(nextPiecePanel);
|
||||||
|
add(Box.createVerticalStrut(20));
|
||||||
|
add(boutonsPanel);
|
||||||
|
|
||||||
|
// setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setScore(int score) {
|
||||||
|
scoreLabel.setText("Score: " + score);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JButton getPauseButton() {
|
||||||
|
return pauseButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JButton getQuitterButton() {
|
||||||
|
return quitterButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JPanel getNextPiecePanel() {
|
||||||
|
return nextPiecePanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initierNextPiecePanel() {
|
||||||
|
nextPiecePanel.removeAll();
|
||||||
|
nextPiecePanel.setLayout(new GridLayout(4, 4));
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
for (int j = 0; j < 4; j++) {
|
||||||
|
JPanel caseG = new JPanel();
|
||||||
|
caseG.setBorder(BorderFactory.createLineBorder(Color.BLACK));
|
||||||
|
caseG.setBackground(Color.WHITE);
|
||||||
|
caseNextPiece[i][j] = caseG;
|
||||||
|
nextPiecePanel.add(caseG);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
nextPiecePanel.revalidate();
|
||||||
|
nextPiecePanel.repaint();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void afficherPieceSuivante(PieceCourante piece) {
|
||||||
|
boolean[][] motif = piece.getMotif();
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
for (int j = 0; j < 4; j++) {
|
||||||
|
if (motif[i][j]) {
|
||||||
|
caseNextPiece[i][j].setBackground(Color.RED);
|
||||||
|
} else {
|
||||||
|
caseNextPiece[i][j].setBackground(Color.WHITE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
nextPiecePanel.revalidate();
|
||||||
|
nextPiecePanel.repaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,10 +1,5 @@
|
|||||||
package org.Views;
|
package org.Views;
|
||||||
|
|
||||||
import javax.swing.BorderFactory;
|
|
||||||
import javax.swing.JButton;
|
|
||||||
import javax.swing.JDialog;
|
|
||||||
import javax.swing.JFrame;
|
|
||||||
import javax.swing.JLabel;
|
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
import org.Models.Grille;
|
import org.Models.Grille;
|
||||||
@@ -15,18 +10,14 @@ import org.Models.PieceCourante;
|
|||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.awt.Font;
|
|
||||||
import java.awt.GridLayout;
|
import java.awt.GridLayout;
|
||||||
import java.awt.Toolkit;
|
import java.awt.Toolkit;
|
||||||
import java.util.Observable;
|
import java.util.Observable;
|
||||||
import java.util.Observer;
|
import java.util.Observer;
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
public class VueGrille extends JFrame implements Observer, Runnable {
|
public class VueGrille extends JPanel implements Observer, Runnable {
|
||||||
private JPanel grillePanel;
|
private JPanel grillePanel;
|
||||||
private Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
|
|
||||||
private double tailleJPanelX = screenSize.getHeight() / 4;
|
|
||||||
private double tailleJPanelY = screenSize.getHeight() / 2;
|
|
||||||
|
|
||||||
private Grille grille;
|
private Grille grille;
|
||||||
private Jeu jeu;
|
private Jeu jeu;
|
||||||
@@ -34,12 +25,18 @@ public class VueGrille extends JFrame implements Observer, Runnable {
|
|||||||
|
|
||||||
private boolean afficherFenetreFinPartie = false;
|
private boolean afficherFenetreFinPartie = false;
|
||||||
|
|
||||||
|
private Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
|
||||||
|
private double tailleJFrameX = screenSize.getHeight() / 2;
|
||||||
|
private double tailleJFrameY = screenSize.getHeight();
|
||||||
|
|
||||||
public VueGrille(Grille grille, Jeu jeu) {
|
public VueGrille(Grille grille, Jeu jeu) {
|
||||||
this.grille = grille;
|
this.grille = grille;
|
||||||
this.jeu = jeu;
|
this.jeu = jeu;
|
||||||
|
setLayout(new BorderLayout());
|
||||||
grillePanel = new JPanel(new GridLayout(grille.getNbLignes(), grille.getNbColonnes()));
|
grillePanel = new JPanel(new GridLayout(grille.getNbLignes(), grille.getNbColonnes()));
|
||||||
setSize((int) tailleJPanelX, (int) tailleJPanelY);
|
setSize((int) tailleJFrameX, (int) tailleJFrameY);
|
||||||
setContentPane(grillePanel);
|
System.err.println("taille " + tailleJFrameX + " " + tailleJFrameY);
|
||||||
|
add(this.grillePanel, BorderLayout.CENTER);
|
||||||
initialiserVueGrille();
|
initialiserVueGrille();
|
||||||
|
|
||||||
grille.addObserver(this);
|
grille.addObserver(this);
|
||||||
@@ -57,10 +54,6 @@ public class VueGrille extends JFrame implements Observer, Runnable {
|
|||||||
grillePanel.add(caseG);
|
grillePanel.add(caseG);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setVisible(true);
|
|
||||||
|
|
||||||
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
|
||||||
setTitle("TETRIS");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void updateGrille() {
|
public synchronized void updateGrille() {
|
||||||
@@ -104,32 +97,8 @@ public class VueGrille extends JFrame implements Observer, Runnable {
|
|||||||
repaint();
|
repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
|
||||||
private void afficherFinPartie() {
|
private void afficherFinPartie() {
|
||||||
JDialog gameOverDialog = new JDialog(this, "Partie terminée", true);
|
System.err.println("FIN PARTIE"); // TODO : gerer affichage ?
|
||||||
gameOverDialog.setLayout(new BorderLayout());
|
|
||||||
|
|
||||||
gameOverDialog.setUndecorated(true);
|
|
||||||
|
|
||||||
gameOverDialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
|
|
||||||
|
|
||||||
JLabel gameOverLabel = new JLabel("GAME OVER", JLabel.CENTER);
|
|
||||||
gameOverLabel.setFont(new Font("Arial", Font.BOLD, 50));
|
|
||||||
gameOverLabel.setForeground(Color.RED);
|
|
||||||
gameOverLabel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
|
|
||||||
|
|
||||||
gameOverDialog.add(gameOverLabel, BorderLayout.CENTER);
|
|
||||||
|
|
||||||
JButton quitButton = new JButton("Quitter");
|
|
||||||
quitButton.addActionListener(e -> System.exit(0));
|
|
||||||
|
|
||||||
JPanel buttonPanel = new JPanel();
|
|
||||||
buttonPanel.add(quitButton);
|
|
||||||
gameOverDialog.add(buttonPanel, BorderLayout.SOUTH);
|
|
||||||
|
|
||||||
gameOverDialog.pack();
|
|
||||||
gameOverDialog.setLocationRelativeTo(this);
|
|
||||||
gameOverDialog.setVisible(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
34
app/src/main/java/org/Views/VueTetris.java
Normal file
34
app/src/main/java/org/Views/VueTetris.java
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
package org.Views;
|
||||||
|
|
||||||
|
import org.Controllers.TetrisBandeauControleur;
|
||||||
|
import org.Models.*;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class VueTetris extends JFrame {
|
||||||
|
private static Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
|
||||||
|
public static double tailleJFrameX = screenSize.getHeight() / 2;
|
||||||
|
public static double tailleJFrameY = screenSize.getHeight() / 2;
|
||||||
|
|
||||||
|
public VueTetris(Grille grille, Jeu jeu) {
|
||||||
|
super("Tetris");
|
||||||
|
|
||||||
|
VueGrille vueGrille = new VueGrille(grille, jeu);
|
||||||
|
VueBandeauControle vueControle = new VueBandeauControle();
|
||||||
|
TetrisBandeauControleur controleur = new TetrisBandeauControleur(vueControle);
|
||||||
|
|
||||||
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
setLayout(new BorderLayout());
|
||||||
|
|
||||||
|
add(vueGrille, BorderLayout.CENTER);
|
||||||
|
add(vueControle, BorderLayout.EAST);
|
||||||
|
|
||||||
|
setSize((int) tailleJFrameX, (int) tailleJFrameY);
|
||||||
|
setLocationRelativeTo(null);
|
||||||
|
setVisible(true);
|
||||||
|
|
||||||
|
// Utilisation de la pièce L
|
||||||
|
vueControle.afficherPieceSuivante(jeu.getPieceSuivante());
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
app/src/main/resources/TetrisMusic.mp3
Normal file
BIN
app/src/main/resources/TetrisMusic.mp3
Normal file
Binary file not shown.
Reference in New Issue
Block a user