From cad7ab6614e045b906aca00948cd6758f250652f Mon Sep 17 00:00:00 2001 From: sj801446 Date: Tue, 12 Mar 2019 10:12:37 +0100 Subject: [PATCH 001/271] Initial commit --- README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..627ec68 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# e-Chesstria + +Projet tutoré de jeux d'échec equestrien par le groupe "Good 3nough Team" \ No newline at end of file From c0ede9571ee5555497ed09cb06eb4822523c7bee Mon Sep 17 00:00:00 2001 From: sj801446 Date: Tue, 12 Mar 2019 10:14:13 +0100 Subject: [PATCH 002/271] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 627ec68..920d4d4 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ # e-Chesstria -Projet tutoré de jeux d'échec equestrien par le groupe "Good 3nough Team" \ No newline at end of file +Projet tutoré de jeux d'échec équestrien par le groupe "Good 3nough Team" \ No newline at end of file From 13859f1ac8fe2e880627ed3c59d82c5120e9019c Mon Sep 17 00:00:00 2001 From: rc804998 Date: Fri, 15 Mar 2019 14:37:57 +0100 Subject: [PATCH 003/271] Add LICENSE --- LICENSE | 339 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 339 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a1c6237 --- /dev/null +++ b/LICENSE @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + e-Chesstria + Copyright (C) 2019 Good3noughTeam + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. From 1fda6265711965500f23e7d933697e04e2c172ea Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:04:00 +0100 Subject: [PATCH 004/271] Upload New File --- .project | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .project diff --git a/.project b/.project new file mode 100644 index 0000000..8a3cfba --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + e-chesstria + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + From 86010dedc1509f7e5f1ffbd74bb8fd9707a26e9c Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:04:15 +0100 Subject: [PATCH 005/271] Upload New File --- .classpath | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .classpath diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..51a8bba --- /dev/null +++ b/.classpath @@ -0,0 +1,6 @@ + + + + + + From f8a3e7a2af79c963933a2d3d182745a710f33ff1 Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:05:29 +0100 Subject: [PATCH 006/271] Upload New File --- e-chesstria.zip | Bin 0 -> 14751 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 e-chesstria.zip diff --git a/e-chesstria.zip b/e-chesstria.zip new file mode 100644 index 0000000000000000000000000000000000000000..9dbb534be37591abcd56e7ec311c9bee5a46b270 GIT binary patch literal 14751 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 Date: Wed, 20 Mar 2019 14:07:15 +0100 Subject: [PATCH 007/271] Delete e-chesstria.zip --- e-chesstria.zip | Bin 14751 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 e-chesstria.zip diff --git a/e-chesstria.zip b/e-chesstria.zip deleted file mode 100644 index 9dbb534be37591abcd56e7ec311c9bee5a46b270..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14751 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 Date: Wed, 20 Mar 2019 14:07:41 +0100 Subject: [PATCH 008/271] Add new directory --- .setting/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .setting/.gitkeep diff --git a/.setting/.gitkeep b/.setting/.gitkeep new file mode 100644 index 0000000..e69de29 From ec7af6bc0d8948fd8ed73709bb736ebbae102d84 Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:07:48 +0100 Subject: [PATCH 009/271] Upload New File --- .setting/org.eclipse.jdt.core.prefs | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .setting/org.eclipse.jdt.core.prefs diff --git a/.setting/org.eclipse.jdt.core.prefs b/.setting/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..3a21537 --- /dev/null +++ b/.setting/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 From 2b0d775808833e7bbcadaab3fa2eb03d53a91fca Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:08:32 +0100 Subject: [PATCH 010/271] Add new directory --- bin/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 bin/.gitkeep diff --git a/bin/.gitkeep b/bin/.gitkeep new file mode 100644 index 0000000..e69de29 From 736b07912eb293ff027890d1f4ee62d3737d0573 Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:08:51 +0100 Subject: [PATCH 011/271] Upload New File --- bin/Joueur.class | Bin 0 -> 789 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 bin/Joueur.class diff --git a/bin/Joueur.class b/bin/Joueur.class new file mode 100644 index 0000000000000000000000000000000000000000..6d154c301c0df5a724a516b35e16c10a35e137de GIT binary patch literal 789 zcmZ{g%TB^T6o&sPS4%C3iV9wEC7_XwJB=F?7l!CUL*la321}q#O6zlJA~A8{1NczJ zf2LJbFimI9oa^_W_m9^%07t0jpb3}*KXRgA+`dqE4rzhXz+A6=HEFwQZNkUvB*J4pUE@b#%AzdZ z8AkGuN_D<&8JBs*)(Z-){Rzz0!33ozRZ!+xMw(}y=K?<+CJI=lryiGK1*?3q0V-@S zl(j}nqrHxeWK5g4jAdHSFdu1XY>cG9R1J+dA!#U3MJ*{lWws`>72gz1SKcxeEvpWd qIO`iJtCY*Zn{z=*e?cm9LAK_D{Mb Date: Wed, 20 Mar 2019 14:09:07 +0100 Subject: [PATCH 012/271] Delete Joueur.class --- bin/Joueur.class | Bin 789 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/Joueur.class diff --git a/bin/Joueur.class b/bin/Joueur.class deleted file mode 100644 index 6d154c301c0df5a724a516b35e16c10a35e137de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 789 zcmZ{g%TB^T6o&sPS4%C3iV9wEC7_XwJB=F?7l!CUL*la321}q#O6zlJA~A8{1NczJ zf2LJbFimI9oa^_W_m9^%07t0jpb3}*KXRgA+`dqE4rzhXz+A6=HEFwQZNkUvB*J4pUE@b#%AzdZ z8AkGuN_D<&8JBs*)(Z-){Rzz0!33ozRZ!+xMw(}y=K?<+CJI=lryiGK1*?3q0V-@S zl(j}nqrHxeWK5g4jAdHSFdu1XY>cG9R1J+dA!#U3MJ*{lWws`>72gz1SKcxeEvpWd qIO`iJtCY*Zn{z=*e?cm9LAK_D{Mb Date: Wed, 20 Mar 2019 14:09:23 +0100 Subject: [PATCH 013/271] Add new directory --- bin/joueurs/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 bin/joueurs/.gitkeep diff --git a/bin/joueurs/.gitkeep b/bin/joueurs/.gitkeep new file mode 100644 index 0000000..e69de29 From 1eacd16c1b1a10f3186d6afc4a38f2564799121a Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:09:58 +0100 Subject: [PATCH 014/271] Upload New File --- bin/joueurs/Joueur.class | Bin 0 -> 789 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 bin/joueurs/Joueur.class diff --git a/bin/joueurs/Joueur.class b/bin/joueurs/Joueur.class new file mode 100644 index 0000000000000000000000000000000000000000..6d154c301c0df5a724a516b35e16c10a35e137de GIT binary patch literal 789 zcmZ{g%TB^T6o&sPS4%C3iV9wEC7_XwJB=F?7l!CUL*la321}q#O6zlJA~A8{1NczJ zf2LJbFimI9oa^_W_m9^%07t0jpb3}*KXRgA+`dqE4rzhXz+A6=HEFwQZNkUvB*J4pUE@b#%AzdZ z8AkGuN_D<&8JBs*)(Z-){Rzz0!33ozRZ!+xMw(}y=K?<+CJI=lryiGK1*?3q0V-@S zl(j}nqrHxeWK5g4jAdHSFdu1XY>cG9R1J+dA!#U3MJ*{lWws`>72gz1SKcxeEvpWd qIO`iJtCY*Zn{z=*e?cm9LAK_D{Mb Date: Wed, 20 Mar 2019 14:10:36 +0100 Subject: [PATCH 015/271] Add new directory --- bin/piecesEchiquier/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 bin/piecesEchiquier/.gitkeep diff --git a/bin/piecesEchiquier/.gitkeep b/bin/piecesEchiquier/.gitkeep new file mode 100644 index 0000000..e69de29 From 41d4ba0a1a0d4b4de7714f6202c21bf409e29769 Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:10:44 +0100 Subject: [PATCH 016/271] Upload New File --- bin/piecesEchiquier/Cavalier.class | Bin 0 -> 399 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 bin/piecesEchiquier/Cavalier.class diff --git a/bin/piecesEchiquier/Cavalier.class b/bin/piecesEchiquier/Cavalier.class new file mode 100644 index 0000000000000000000000000000000000000000..82a7ba91dc80a92693dbc2e12483d8a9344955d3 GIT binary patch literal 399 zcmZWl!AiqG5Pg%zCdSrkwIG5AZ?%fKc&m5`dI}=6^uCQtyOJh#oA_Uz1P^|IA0@s; zdudsA=DnTwW`_O#`TPQKgI)knaI!Qy)2sVzZeDAnZJek#l@kQ;1-;GclT!~ZoecK6M>(U&pJW_yDjXXDd?o8(2w>;vIDv4@B;Vg@w Date: Wed, 20 Mar 2019 14:10:55 +0100 Subject: [PATCH 017/271] Upload New File --- bin/piecesEchiquier/Echiquier.class | Bin 0 -> 5535 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 bin/piecesEchiquier/Echiquier.class diff --git a/bin/piecesEchiquier/Echiquier.class b/bin/piecesEchiquier/Echiquier.class new file mode 100644 index 0000000000000000000000000000000000000000..66430ffba2f25f069698d210389aa2cdf3756bd7 GIT binary patch literal 5535 zcmbtYdwf*I6+UP0-Mu%<0Aa&B0V2;NJR%|CArK&e2ogeIF}R}0l3ZaSWMfDuU>~-% z?}u$|Yu{EZ(puXpC5Z*0T57FYOKr8*Qnc1utx{`?*7~I1nYnkvCb9qM5AS#O%=ymD zoICT)+&u91;bTNp&Pj(tOru&;UZb~jS>x8!RUIj>tu$jfWHaS%OYTaRHYZ!Ql&;>q z&1-CD3OA;kyq!!#H*BcwX^pqHrCPSkXNt6@(k)dpnTFT)PF;_dOhj1_Ix8^B1EV4^ zW(UTcz?kbBb?89%R2Sr_3-Z(jdFp~ZbwQrGAWxm-S(ol;>wloqA_LVC(t#MdOKrdt ztwvp%Q7=g_y3b65RwU_(JeMZPGA%NPa80^Hat-T~3k^u4+x<8p%WvU1YrRy9C(IFj zn7RpE6Qfyc)2aS@L4))HkT`o+s>$mwWxcEx1m<|bg258PLg@RdOxn8@Ye`}9~T7wVnOiN3xb~z1b+i?Hu#qdf`5e| z_(?(V8wJ5f?LxD`-y#TpN)Y_*zzXnp2!fv$1pg{Q@Ug8z72tOWg8v>t@b?IUe>Jci z{Pzih{{cbpKPU+PhXuj^h#>eM69oSgg5ZA&I1BvG2!el|Ao!mb1pj(L@V_Jo{tbfQ ze^n6tuLH}#|E3`LHwuD(lOXsv3xdC25c~sz;D1jL{O<#2g8u_S@P8x-{vCqg|5yXKfch@Fbc;(r#WJpfVl_tTF1kn7+0U4Yiu!6*Ur%*$ zgY@xpMGm=Q{X$WWv3{v2YODto4KUWP6e(l(7dY8S5{Kh8ydzibjy@(BJy0fe2KTo}qiB zyT2bOBo1QlwLBaURE@Q#!9OHC>m$1|0*gp z*6WJSqp=RXiS67w6@)5EZqOmMRlZ+KsG?^wi>_7&4XVF>~<%rJ1 zQAJazNb)E}#Z=_*pniIWm_>P@VGL1JLQ{p2r)U~Yb$D1mz0`}mMR_PyNaRRG(`kmo zqfwxDk~oPgP*h6iGYzhV6xVg^*zC2fOKxt42*hgBjmhSQWLrvp`%b%kYYH1ZzmI5U zj$X)|+Tyimej~W3`2VP^+L;wxQ1p(mBEoKa+UO~kPf>B-UEp#N6FFRh1EBW-U)7On zZt}3g=JGVf(|HC?7aW8g-s&rvCZD^>%ynUYKl!6v%;#fY@=Uyeb1D8EqPPKXfM+Q# z=L(!OC`7H--rk0C;t;78_8i4?c^=N?WNWL}(!^9yRNc2Df2{L`F<+mZ-?Tw97jdc z9k`MWGlNN`OY3n9YeyZuFaFFuBXyTet(aIIpd+qs1%KyQ?tSw99MT z=@p(A<@KC!_!8_P{lc>oDZW%*mD4J@n_D2oyYVx$M;^Oz1qtoJBN~VBG>#!wndp6vn58@mXPfP8eSh#uqi?%bM{OFmf})`kGL_A(U?k z<=aBpCzS7K$}O7mU7=*gb*oTr6Uq;Ta=TCt3gwWdbZN?+@pva4E;&MXC1S@)4$ev{5AOB=*f>_)^yWbo%D9LANA3GCgb)7U?NSFwXi4si&3 z2oS?A0t~=D0@$*X5c8VsCE$zLfTC7@hDS|?$8-jITxXz@Is={38R$tr!&82Sr;$O_ z%VgjYI)i|W0U%=l$QS@J27rt~qj4kZU1ty#d3R$FwR?9NwEFp_JZ?&PuPNnyrj+-a zQa)%(`H)}A6MiWl4%E<3@tjF<#-w=L)H2u9GRM@C{1mVFDV~Qqa{e81zVR45pP)H- zE+-r3oSgsieN~Awt`%Qb`|w@$2o1o^UhzB{$jvl}Z=_uArXhTSV*D)S@mU%g8bQNC zr8GRWoJNF_G%B>4Mu)DW{Ln2_5IRa@LXXhc&v}4(ZlhxBIF(o@X_|G0rrQH(hCQB2?RhlQUPEQ}Rw}ozp$hv3y1?E?3+$U|p?xb= z+NWtzcm^#Fx6+dEL8=PBOx2M&v^27pmPL-@j|y@lQ0Bzuaa@RBEVnvyn&aC5H$wPi zDdyh}!xSZ=o%KCr3TMa@c%o0P#8n{#PNZaNR!O7U+kkSe*BOSJC_e+@<@mV2+C z>jW-gHgc`Y<0-Y)!UI%eRUV)TN4PjK^-iAJ&80HJg0eAXU5tOTyZD0IYb_p=>)v$s z)HzXkyr7FKb!&(Vr1kJrnHNIw9Ir1}m!qeRc)gqOIlLKHo=sFvO|$~OwREK(afum= zKVqBec?nlxq!Fs+YF>)@44`6O2Fv0a_#S1xkeBU z2wPLq#Vf{?4YSK+bML3gncrQ!QtbS)0!(h@eo_ayE|1rBaYGOiG{=2I%Y!UqGqd5k zgYEc`Y{oTh2Q8%*s>k1OD3p2R_ I?htSKAG$TtiU0rr literal 0 HcmV?d00001 From 665797961bafa301e0b33e6e196bc7642d3562f7 Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:11:06 +0100 Subject: [PATCH 018/271] Upload New File --- bin/piecesEchiquier/Fou.class | Bin 0 -> 384 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 bin/piecesEchiquier/Fou.class diff --git a/bin/piecesEchiquier/Fou.class b/bin/piecesEchiquier/Fou.class new file mode 100644 index 0000000000000000000000000000000000000000..8e6f61c362cc5c293235885f892b90bb8df08409 GIT binary patch literal 384 zcmZWlO;5r=6r5KotrbO4jvl-r8hi1E@zThtF(wf1%esLzrNyQ7e|a+T;1BRe8E2y> z$jiRZnfE69{qy++;1>M|f#7s)jW(MHy|k~5H7*@jO@vU;-yS@9prCzcOIzOy27~-X zy{WWNh?6#ml0PSWOYq zfOvRyeg1*?oq2$SK4AoL5$%B4@DGO$4q1_bBXqgNXUEJuI>rflyu+Vn72xa_Jn>LO literal 0 HcmV?d00001 From e9b873dc9d1c702591afbbfa030eba74a4d29aea Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:11:14 +0100 Subject: [PATCH 019/271] Upload New File --- bin/piecesEchiquier/Piece.class | Bin 0 -> 1361 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 bin/piecesEchiquier/Piece.class diff --git a/bin/piecesEchiquier/Piece.class b/bin/piecesEchiquier/Piece.class new file mode 100644 index 0000000000000000000000000000000000000000..a94d0b1415506fbf2a7a6ed4a09d8705bdf3c837 GIT binary patch literal 1361 zcmZ{j&u-H|5XQev9H(&uP5(ohwvEUsJ)kS z9)?2cvi-ST^V^;C+Pkw$?S=|@x7+u1KTw!!4sTDw!0VhJDopFEYrpO4E8U^9>FY2I zw1TQDI9w}t)YD>YWcRy+iS(J(>;$8t%FJcM>*)0@dVOn9P>2>tm z{?(ZdKD5t#D$O;!Zrg9Q15eJ0(FiZRp2Bi7wJajq_9XbErCx1G@|7ZTFlDz|L>?yb zT~f13?tF#9xel92k*tMf7J5UAVN*uoKAjq)eOa)plNss9&|7|sDX1ct_j--Enas&{ zPDx;FFzi$Du$Z#`e^M5&hli7HKXCQ2Cmpn+S?|dpvB4sWnHGx@vEg2Wa^9)n05fzjfrYJMX3I!`z!)lbyi6xVC6z7c@A*^$6 zGNsravD7TB8+e?+)VNB4Ip+svzjBj-R27GAj#QGnsbmvRlHenHi?Hde+yb^D>lQn` z9VsluUN>;2JpU;1Q*0$#qac-UV<5Y!AltAfK-j~|uyZlUK0yxd0Fg%^9jL-d0hu4~ z$ct2v9qdkkup=X{BnEj&ki$Db Date: Wed, 20 Mar 2019 14:11:21 +0100 Subject: [PATCH 020/271] Upload New File --- bin/piecesEchiquier/Pion.class | Bin 0 -> 387 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 bin/piecesEchiquier/Pion.class diff --git a/bin/piecesEchiquier/Pion.class b/bin/piecesEchiquier/Pion.class new file mode 100644 index 0000000000000000000000000000000000000000..0a2ed6b166945d75323cb2b9b716252726cbb199 GIT binary patch literal 387 zcmZWlO;5r=5PefBEfob3ym|13XzaxshD)QT#+X33FLeWJ$`(uO|MFzw!5`p{GQN%8 zn#u0GH}mFW_xtDb3&1T#0X)HQXLP3b_u0n0)<&1{lPPQfUodKBs1&sCj5XCvFdnBb z>P^MDvg>$WmBy~8%}8>&6!=N;tRuA0>EZxwK`%8{Ki1ooE*EN*v+W=)GLg3lDWdh7J`=E?wHPb5N3+0#trJY7v8uUT!2b`2I$2t#ycQe zz^4J> Date: Wed, 20 Mar 2019 14:11:29 +0100 Subject: [PATCH 021/271] Upload New File --- bin/piecesEchiquier/Reine.class | Bin 0 -> 390 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 bin/piecesEchiquier/Reine.class diff --git a/bin/piecesEchiquier/Reine.class b/bin/piecesEchiquier/Reine.class new file mode 100644 index 0000000000000000000000000000000000000000..bda6818ca61f48afbfdc1630664badda7f489ae6 GIT binary patch literal 390 zcmZutO;5r=5PefBtrZ1P;>m+IL}M@BAYK|hHO2_xzSIq@DJ?Fo|I3q!2Y-M+%J^2j zK_1A-)0N*QX6gKM{Nonz~7R3a8f~YWC~N=2>Si> zS-q+_SH(OYSJo8s;btT`p9=h>e9{pb*ll44O+h>5nEQG;({`d}Ioo#AGE@0fS>yPB z(61I|EjUTHt~nG)<|;SV5H$31#dOY-2%>RW+f3gXH!1pkRlAE-p{s5xx<7h6*xefT^#BVIdzCbbU8 Date: Wed, 20 Mar 2019 14:11:40 +0100 Subject: [PATCH 022/271] Upload New File --- bin/piecesEchiquier/Roi.class | Bin 0 -> 384 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 bin/piecesEchiquier/Roi.class diff --git a/bin/piecesEchiquier/Roi.class b/bin/piecesEchiquier/Roi.class new file mode 100644 index 0000000000000000000000000000000000000000..68f511fdb1166e3130d6f847abe8f3ff9cd99fc3 GIT binary patch literal 384 zcmZWlyH3ME5S(>PY)l{!NJ&8#0>TYl5RCG%Iv+mJ0Yo8j)F4~$e#eCI9c=os|kD> z5DqUcPd^a8GxreDM~omYpzSdm{^8KUJ}WYCfG)SV?2ws5hd4ryclgt+Je>RjJvmTB literal 0 HcmV?d00001 From 3973b83bbb1c078c1a1af1aee48e954c6ee26ccd Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:11:47 +0100 Subject: [PATCH 023/271] Upload New File --- bin/piecesEchiquier/Tour.class | Bin 0 -> 387 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 bin/piecesEchiquier/Tour.class diff --git a/bin/piecesEchiquier/Tour.class b/bin/piecesEchiquier/Tour.class new file mode 100644 index 0000000000000000000000000000000000000000..0173dc101986efb4ddeb1d2dc5a7faf4f58c020e GIT binary patch literal 387 zcmZWl!A`U)Bw*DJ_=P|MFzw!4L4GjBleS z$Yy8W+j(zhvfn?SUjS|}4B!a{YiqRG-0P)%ZLF!{tZb?PzF@drd2&iY`_>k=z7vc_ z>5F<(ajuF*JgqBREGD}z$;C|IC*`w=&_bt+J+uYA)E4HkS(}{j}67pQ*|^ z{{QILOS=)ArrW!?Ehhre&bYIMpk-ETmUG@j5KSr9=E1r_9p}Av9-MGuEyfs- zW$<}`aC~`n_JQ!7*h9n^F@u@_A@+&Je>!w=Kt=}+(PI~fj) Date: Wed, 20 Mar 2019 14:12:07 +0100 Subject: [PATCH 024/271] Add new directory --- bin/visuel/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 bin/visuel/.gitkeep diff --git a/bin/visuel/.gitkeep b/bin/visuel/.gitkeep new file mode 100644 index 0000000..e69de29 From 6ec0ca2e55a65d0046215a33c1e2048360b65924 Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:12:14 +0100 Subject: [PATCH 025/271] Upload New File --- bin/visuel/main.class | Bin 0 -> 1878 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 bin/visuel/main.class diff --git a/bin/visuel/main.class b/bin/visuel/main.class new file mode 100644 index 0000000000000000000000000000000000000000..9a52413b4e43a2d2d2266d5fbfbfdd8c5744b5dd GIT binary patch literal 1878 zcmb_c&u<%55dNNHd)JPWrf!qeq`;;?Vz*69o3ssae~>h3o8q_)34yc}x>>(C>#lcQ zdpAldPDn_V_zOTnT+5Lj9EnI=dO$)#oH%jhfH-mCO!=Oj(v+G55|;P9*_qk-=6y5s zzW?)^Zvl*>sv#uMxnb7>>0~RW?P>@M^pwpFGwYacDSK_TEG=Ikde(Mr|GYp)I)R~h!#?Ycl$eh*}h;S{t$ zU;1YLDfFUWv)xiIv#epi!2YHo@NFl%Xqm1nYcU)^uZDxq*D%>jq!@J>{{Oum1-LZ7M#?Pk$CZuDSBosWmd8kYRM{$f)djXk$n*Vk3@g#p8 zBLc^#ZRu`EH;_irbnAvCjj{}k;;^*VrDfEEnqhfv-E*Wd7>^^16B=F@IMAe$gzO2J zz)6e=XjO&bDB9YbLNRhmAXT-cCF`@+x_vjWWi9)+6lYJx)H0F48<-T(eXqrUz`=Cp zc@{LB73lwG&8Gv~Dax7-_M5)s@fbyE#F4|BisCUv_H+Ul6+pBk{eo9f#@Pfe;WAZb zwJP1Bz(~6zJeR{RSWd^BfFMmdOz6l9EG%#+NL|%_^nlE6c!4ADsjY4lAAMDIOiR{` z3&xDcX1r(6(G4oH=BZpAyX5l2z^1EY4IJe&%Gf<9BybJa$+Rms{W+Hf=0wfucw1n0 z%D78NgUQ!C+czB3sCxDP4l<6V1l|G1R4>X_p2SPf@t0ZF@g84xNmU8mNZ_WL;E3fA zjBRMvN*vJxZAOt3RkvtrakzIDIl~=nJra0>PURDv$^5f(Lyu7TB$rJZ1*r~gQ3!1+ z)fN{)=z;vdb{0SHTJ%lp&b(P|-X$7t3B(uK9G1Lfs|zQlE|F2yOBe+6;SC3bDDi^g zs_`w$U2u;a-G=^k(;Vlj%s>pCToWw^?p;k?H}+A(k3+rmqqpeVLC?xVB)4%WA3nE( zftBQo$(Oe=SZKBZog#z} z@FC09#d_X`$?B)@2UcM*$07WRBBe0Vzl6jZ`@+X(C{c!{~hwk9nAghKhzBp<#f3>ILJeKJ)$pzB0Re literal 0 HcmV?d00001 From e10c853960520f037003ede43253bd132523c449 Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:12:43 +0100 Subject: [PATCH 026/271] Add new directory --- src/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/.gitkeep diff --git a/src/.gitkeep b/src/.gitkeep new file mode 100644 index 0000000..e69de29 From 91e7fe6667bc8a7f60eb4486a4ae1baa6228fe64 Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:12:57 +0100 Subject: [PATCH 027/271] Add new directory --- src/joueurs/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/joueurs/.gitkeep diff --git a/src/joueurs/.gitkeep b/src/joueurs/.gitkeep new file mode 100644 index 0000000..e69de29 From fb494ae054cf739c64644c9f60eb31c6fcffbcab Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:13:04 +0100 Subject: [PATCH 028/271] Upload New File --- src/joueurs/Joueur.java | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/joueurs/Joueur.java diff --git a/src/joueurs/Joueur.java b/src/joueurs/Joueur.java new file mode 100644 index 0000000..6e269ca --- /dev/null +++ b/src/joueurs/Joueur.java @@ -0,0 +1,31 @@ +package joueurs; + +public class Joueur { + private String nom; + private String couleur; + //private boolean tour = false; + + public Joueur(String n, String c) { + nom = n; + couleur = c; + } + + public String getNom() { + return nom; + } + + public void setNom(String nom) { + this.nom = nom; + } + + public String getCouleur() { + return couleur; + } + + public void setCouleur(String couleur) { + this.couleur = couleur; + } + + + +} From 5995312c555964e044e3b56d371f720b1d486bd2 Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:13:25 +0100 Subject: [PATCH 029/271] Add new directory --- src/piecesEchiquier/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/piecesEchiquier/.gitkeep diff --git a/src/piecesEchiquier/.gitkeep b/src/piecesEchiquier/.gitkeep new file mode 100644 index 0000000..e69de29 From 2279ee290fa4486f0c20dd258693e31e9348b373 Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:13:40 +0100 Subject: [PATCH 030/271] Upload New File --- src/piecesEchiquier/Cavalier.java | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 src/piecesEchiquier/Cavalier.java diff --git a/src/piecesEchiquier/Cavalier.java b/src/piecesEchiquier/Cavalier.java new file mode 100644 index 0000000..fcd02f1 --- /dev/null +++ b/src/piecesEchiquier/Cavalier.java @@ -0,0 +1,9 @@ +package piecesEchiquier; + +public class Cavalier extends Piece { + + public Cavalier(String c, String emp,char l) + { + super(c, emp,l); + } +} From b2cab8fa2632fc4647d086f0d90b913fd1580f1f Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:13:47 +0100 Subject: [PATCH 031/271] Upload New File --- src/piecesEchiquier/Echiquier.java | 114 +++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 src/piecesEchiquier/Echiquier.java diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java new file mode 100644 index 0000000..7ab1ae8 --- /dev/null +++ b/src/piecesEchiquier/Echiquier.java @@ -0,0 +1,114 @@ +package piecesEchiquier; + +public class Echiquier { + + private String[][] codes = +{ +{"8A","8B","8C","8D","8E","8F","8G","8H"}, +{"7A","7B","7C","7D","7E","7F","7G","7H"}, +{"6A","6B","6C","6D","6E","6F","6G","6H"}, +{"5A","5B","5C","5D","5E","5F","5G","5H"}, +{"4A","4B","4C","4D","4E","4F","4G","4H"}, +{"3A","3B","3C","3D","3E","3F","3G","3H"}, +{"2A","2B","2C","2D","2E","2F","2G","2H"}, +{"1A","1B","1C","1D","1E","1F","1G","1H"} +}; + public Pion pionB1 = new Pion("Blanc",codes[6][0],'P'); + public Pion pionB2 = new Pion("Blanc",codes[6][1],'P'); + public Pion pionB3 = new Pion("Blanc",codes[6][2],'P'); + public Pion pionB4 = new Pion("Blanc",codes[6][3],'P'); + public Pion pionB5 = new Pion("Blanc",codes[6][4],'P'); + public Pion pionB6 = new Pion("Blanc",codes[6][5],'P'); + public Pion pionB7 = new Pion("Blanc",codes[6][6],'P'); + public Pion pionB8 = new Pion("Blanc",codes[6][7],'P'); + + public Pion pionN1 = new Pion("Noir",codes[1][0],'P'); + public Pion pionN2 = new Pion("Noir",codes[1][1],'P'); + public Pion pionN3 = new Pion("Noir",codes[1][2],'P'); + public Pion pionN4 = new Pion("Noir",codes[1][3],'P'); + public Pion pionN5 = new Pion("Noir",codes[1][4],'P'); + public Pion pionN6 = new Pion("Noir",codes[1][5],'P'); + public Pion pionN7 = new Pion("Noir",codes[1][6],'P'); + public Pion pionN8 = new Pion("Noir",codes[1][7],'P'); + + public Tour TourB1 = new Tour("Blanc",codes[7][0],'T'); + public Tour TourB2 = new Tour("Blanc",codes[7][7],'T'); + public Tour TourN1 = new Tour("Noir",codes[0][0],'T'); + public Tour TourN2 = new Tour("Noir",codes[0][7],'T'); + + public Cavalier CavalierB1 = new Cavalier("Blanc",codes[7][1],'C'); + public Cavalier CavalierB2 = new Cavalier("Blanc",codes[7][6],'C'); + public Cavalier CavalierN1 = new Cavalier("Noir",codes[0][1],'C'); + public Cavalier CavalierN2 = new Cavalier("Noir",codes[0][6],'C'); + + public Fou FouB1 = new Fou("Blanc",codes[7][2],'F'); + public Fou FouB2 = new Fou("Blanc",codes[7][5],'F'); + public Fou FouN1 = new Fou("Noir",codes[0][2],'F'); + public Fou FouN2 = new Fou("Noir",codes[0][5],'F'); + + public Reine ReineB1 = new Reine("Blanc",codes[7][4],'R'); + public Reine ReineN1 = new Reine("Noir",codes[0][4],'R'); + + public Roi RoiB1 = new Roi("Blanc",codes[7][3],'K'); + public Roi RoiN1 = new Roi("Noir",codes[0][3],'K'); + + // A choisir soit on enleve abstract de piece pour avoir le vide soit on garde la classe vide + + //private Vide vide = new Vide(); + private Piece vide = new Piece(); + + private Piece[][] echiquier = + { + {TourN1,CavalierN1,FouN1,RoiN1,ReineN1,FouN2,CavalierN2,TourN2}, + {pionN1,pionN2,pionN3,pionN4,pionN5,pionN6,pionN7,pionN8}, + {vide,vide,vide,vide,vide,vide,vide,vide}, + {vide,vide,vide,vide,vide,vide,vide,vide}, + {vide,vide,vide,vide,vide,vide,vide,vide}, + {vide,vide,vide,vide,vide,vide,vide,vide}, + {pionB1,pionB2,pionB3,pionB4,pionB5,pionB6,pionB7,pionB8}, + {TourB1,CavalierB1,FouB1,RoiB1,ReineB1,FouB2,CavalierB2,TourB2} + }; + + public Echiquier() + { + + } + + + + public Piece[][] getEchiquier() { + return echiquier; + } + + + + public void setEchiquier(Piece[][] echiquier) { + this.echiquier = echiquier; + } + + + + public String toString() + { + String echec = ""; + for (int i = 0; i < 8;i++) + { + for (int j = 0; j < 8;j++) + { + echec += echiquier[i][j].getLettre(); + } + echec += "\n"; + } + return echec; + } + + public void deplacer(int x1,int y1,int x2,int y2) + { + if (this.getEchiquier()[x2][y2] != vide && this.getEchiquier()[x2][y2].getCouleur() != this.getEchiquier()[x1][y1].getCouleur()) + System.out.println("Vous avez manger une piece adverse !"); + this.getEchiquier()[x2][y2] = this.getEchiquier()[x1][y1]; + this.getEchiquier()[x1][y1] = vide; + } +} + + From 4e3f7c18ab4f412666ee1f7c8227173e6aac9827 Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:13:56 +0100 Subject: [PATCH 032/271] Upload New File --- src/piecesEchiquier/Fou.java | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 src/piecesEchiquier/Fou.java diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java new file mode 100644 index 0000000..bf590e6 --- /dev/null +++ b/src/piecesEchiquier/Fou.java @@ -0,0 +1,10 @@ +package piecesEchiquier; + +public class Fou extends Piece { + + public Fou(String c, String emp,char l) { + super(c, emp,l); + } + + +} From 99b0c266735d7865acbf9006de75119f533d2580 Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:14:08 +0100 Subject: [PATCH 033/271] Upload New File --- src/piecesEchiquier/Piece.java | 74 ++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/piecesEchiquier/Piece.java diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java new file mode 100644 index 0000000..9ef7878 --- /dev/null +++ b/src/piecesEchiquier/Piece.java @@ -0,0 +1,74 @@ +package piecesEchiquier; + +public class Piece { + + + //variables + + private String couleur; + private String emplacement; + private char lettre = '.'; + private boolean enVie = true; + + + + //constructeur par defaut qui devrait probablement remplacer vide + + public Piece() + { + + } + + // constructeur + + public Piece(String c, String emp,char l) + { + couleur = c; + emplacement = emp; + lettre = l; + } + + // gets & sets + + + public char getLettre() { + return lettre; + } + public void setLettre(char lettre) { + this.lettre = lettre; + } + + //////////// + + public String getEmplacement() { + return emplacement; + } + + public void setEmplacement(String emplacement) { + this.emplacement = emplacement; + } + + /////////// + + public boolean isEnVie() { + return enVie; + } + + public void setEnVie(boolean enVie) { + this.enVie = enVie; + } + + /////////// + + public String getCouleur() { + return couleur; + } + + public void setCouleur(String couleur) { + this.couleur = couleur; + } + + + + +} From 0ea02493ffa9f4c2227a00c928108cfeda96b399 Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:14:23 +0100 Subject: [PATCH 034/271] Upload New File --- src/piecesEchiquier/Pion.java | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/piecesEchiquier/Pion.java diff --git a/src/piecesEchiquier/Pion.java b/src/piecesEchiquier/Pion.java new file mode 100644 index 0000000..351e86c --- /dev/null +++ b/src/piecesEchiquier/Pion.java @@ -0,0 +1,11 @@ +package piecesEchiquier; + +public class Pion extends Piece { + + public Pion(String c, String emp,char l) { + super(c,emp,l); + } + + + +} From a658a002b2a9e9fb79d045be818fdb1fd7274658 Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:14:40 +0100 Subject: [PATCH 035/271] Upload New File --- src/piecesEchiquier/Reine.java | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/piecesEchiquier/Reine.java diff --git a/src/piecesEchiquier/Reine.java b/src/piecesEchiquier/Reine.java new file mode 100644 index 0000000..917b50d --- /dev/null +++ b/src/piecesEchiquier/Reine.java @@ -0,0 +1,8 @@ +package piecesEchiquier; + +public class Reine extends Piece { + + public Reine(String c, String emp,char l) { + super(c, emp,l); + } +} From 424b69eb118b85617a85ad22c4efb0dbc916de86 Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:14:48 +0100 Subject: [PATCH 036/271] Upload New File --- src/piecesEchiquier/Roi.java | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 src/piecesEchiquier/Roi.java diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java new file mode 100644 index 0000000..2f3a989 --- /dev/null +++ b/src/piecesEchiquier/Roi.java @@ -0,0 +1,9 @@ +package piecesEchiquier; + +public class Roi extends Piece { + + public Roi(String c, String emp, char l) { + super(c, emp,l); + } + +} From 553d91f1b1031d6fd9bf4e6723b680a4c7df2ab7 Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:14:56 +0100 Subject: [PATCH 037/271] Upload New File --- src/piecesEchiquier/Tour.java | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 src/piecesEchiquier/Tour.java diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java new file mode 100644 index 0000000..7fbd2bb --- /dev/null +++ b/src/piecesEchiquier/Tour.java @@ -0,0 +1,10 @@ +package piecesEchiquier; + +public class Tour extends Piece { + + + public Tour(String c, String emp, char l) { + super(c, emp,l); + } + +} From 5e24f2ceda33fb484bf76fdc63f0e8823cf03fa8 Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:15:19 +0100 Subject: [PATCH 038/271] Add new directory --- src/visuel/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/visuel/.gitkeep diff --git a/src/visuel/.gitkeep b/src/visuel/.gitkeep new file mode 100644 index 0000000..e69de29 From 5a9c5606e1d69ab26270beb7c167a1253e3e0bcb Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Wed, 20 Mar 2019 14:15:24 +0100 Subject: [PATCH 039/271] Upload New File --- src/visuel/main.java | 80 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/visuel/main.java diff --git a/src/visuel/main.java b/src/visuel/main.java new file mode 100644 index 0000000..7c50d49 --- /dev/null +++ b/src/visuel/main.java @@ -0,0 +1,80 @@ +package visuel; +// sert pour recup input clavier +import java.util.Scanner; + +import joueurs.Joueur; + +import piecesEchiquier.Echiquier; + +public class main { + + public static void main (String[] args) { + + //ouvre une porte pour input + Scanner sc = new Scanner(System.in); + + + // variable tempo pour tests + boolean jeu = true; + + + // joueurs APRES ON DEMANDERA NOM + Joueur j1 = new Joueur("Manon","Blanc"); + Joueur j2 = new Joueur("Autre","Noir"); + + + // vars pour deplacer + int x1; + int y1; + int x2; + int y2; + + + + System.out.println("Bienvenue dans ce jeu d'echec sur console !\n"); + + + do { + + Echiquier e = new Echiquier(); + + // AFFICHAGE ECHIQUIER + System.out.println(e.toString()); + + // JOUEUR1 + System.out.println("Tour de "+j1.getNom()+"\n"); + + System.out.println("Quelle pice voulez vous dplacer ? Donnez le numero de ligne puis de colonne.\n"); + + //entrer coordonnes piece a bouger APRES ON PASSERA PAR DIRECT COMBINAISON LETTRE-CHIFFRE + x1 = sc.nextInt(); + y1 = sc.nextInt(); + + System.out.println("A quel endroit la poser ? Donnez le numero de ligne puis de colonne.\n"); + //entrer coordonnes endroit vis APRES ON PASSERA PAR DIRECT COMBINAISON LETTRE-CHIFFRE + x2 = sc.nextInt(); + y2 = sc.nextInt(); + + // DEPLACEMENT (prototype minimum juste pour voir) + e.deplacer(x1-1,y1-1,x2-1,y2-1); + + //REAFFICHAGE ECHIQUIER + System.out.println(e.toString()); + + // JOUEUR2 + System.out.println("Tour de"+j2.getNom()+"\n"); + System.out.println("Quelle pice voulez vous dplacer ? Donnez le numero de ligne puis de colonne.\n"); + x1 = sc.nextInt(); + y1 = sc.nextInt(); + System.out.println("A quel endroit la poser ? Donnez le numero de ligne puis de colonne.\n"); + x2 = sc.nextInt(); + y2 = sc.nextInt(); + e.deplacer(x1-1,y1-1,x2-1,y2-1); + + //jeu = false; + + }while (jeu == true); + sc.close(); + } + +} From c3646b46a598ce367c836399da329017fe4d0164 Mon Sep 17 00:00:00 2001 From: AnthonyBit Date: Wed, 20 Mar 2019 14:47:46 +0100 Subject: [PATCH 040/271] Update Piece.java From cd2198d746845ebab7f73720cb020a251d9815a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Mon, 25 Mar 2019 08:39:58 +0100 Subject: [PATCH 041/271] Delete .gitkeep --- bin/joueurs/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/joueurs/.gitkeep diff --git a/bin/joueurs/.gitkeep b/bin/joueurs/.gitkeep deleted file mode 100644 index e69de29..0000000 From 955d0c826c99acb9912cb59d8aadbd3099710747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Mon, 25 Mar 2019 08:40:10 +0100 Subject: [PATCH 042/271] Delete Joueur.class --- bin/joueurs/Joueur.class | Bin 789 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/joueurs/Joueur.class diff --git a/bin/joueurs/Joueur.class b/bin/joueurs/Joueur.class deleted file mode 100644 index 6d154c301c0df5a724a516b35e16c10a35e137de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 789 zcmZ{g%TB^T6o&sPS4%C3iV9wEC7_XwJB=F?7l!CUL*la321}q#O6zlJA~A8{1NczJ zf2LJbFimI9oa^_W_m9^%07t0jpb3}*KXRgA+`dqE4rzhXz+A6=HEFwQZNkUvB*J4pUE@b#%AzdZ z8AkGuN_D<&8JBs*)(Z-){Rzz0!33ozRZ!+xMw(}y=K?<+CJI=lryiGK1*?3q0V-@S zl(j}nqrHxeWK5g4jAdHSFdu1XY>cG9R1J+dA!#U3MJ*{lWws`>72gz1SKcxeEvpWd qIO`iJtCY*Zn{z=*e?cm9LAK_D{Mb Date: Mon, 25 Mar 2019 08:46:03 +0100 Subject: [PATCH 043/271] Add .gitignore file. --- .gitignore | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a1c2a23 --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* From a30a553e11530cf13fed5efd0bd3eb62fd4cfcfe Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Tue, 26 Mar 2019 16:32:08 +0100 Subject: [PATCH 044/271] modify read me file --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 920d4d4..5fd0eb9 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ # e-Chesstria -Projet tutoré de jeux d'échec équestrien par le groupe "Good 3nough Team" \ No newline at end of file +Projet tutoré de jeux d'échec équestrien par le groupe "Good 3nough Team" +Ajout de cette ligne pour le td git + From 1212fa090b1df20b7972dd590c64f32e7b94c685 Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Tue, 26 Mar 2019 16:39:38 +0100 Subject: [PATCH 045/271] Remplacement du .gitignore --- .gitignore | 39 ++++++++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index a1c2a23..9414bc9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,17 +1,11 @@ +# For JAVA # Compiled class file *.class # Log file *.log -# BlueJ files -*.ctxt - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - # Package Files # -*.jar *.war *.nar *.ear @@ -19,5 +13,32 @@ *.tar.gz *.rar -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* +*.jar +*.war +*.ear +*.class + +# eclipse specific git ignore +.DS_Store +.project +.metadata +/bin/ +bin/** +tmp/** +tmp/**/* +*.tmp +*.bak +*.swp +*~.nib +local.properties +.classpath +.settings/ +.loadpath +.recommenders + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch +/.clover/ From 4f78800875614847c1768aa123a1a538e8286f34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Tue, 26 Mar 2019 16:42:54 +0100 Subject: [PATCH 046/271] creation du dossier "blanc" --- Blanc/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Blanc/.gitkeep diff --git a/Blanc/.gitkeep b/Blanc/.gitkeep new file mode 100644 index 0000000..e69de29 From fd767f79eee34e5a51bb25432ee4459955eafc5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Tue, 26 Mar 2019 16:43:11 +0100 Subject: [PATCH 047/271] creation du dossier "Bleu" --- Bleu/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Bleu/.gitkeep diff --git a/Bleu/.gitkeep b/Bleu/.gitkeep new file mode 100644 index 0000000..e69de29 From a950baefcf80d312ce5d604437fa52a13cdbb7c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Tue, 26 Mar 2019 16:43:24 +0100 Subject: [PATCH 048/271] creation du dossier "Vert" --- Vert/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Vert/.gitkeep diff --git a/Vert/.gitkeep b/Vert/.gitkeep new file mode 100644 index 0000000..e69de29 From c73e90f5467b3a9fb3d6d9a080e63af4ec856c37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Tue, 26 Mar 2019 16:43:42 +0100 Subject: [PATCH 049/271] creation du dossier "Jaune" --- Jaune/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Jaune/.gitkeep diff --git a/Jaune/.gitkeep b/Jaune/.gitkeep new file mode 100644 index 0000000..e69de29 From 503a64587bbc402e21be56b837277b10135d1ca8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Tue, 26 Mar 2019 16:44:06 +0100 Subject: [PATCH 050/271] creation du dossier "Rouge" --- Rouge/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Rouge/.gitkeep diff --git a/Rouge/.gitkeep b/Rouge/.gitkeep new file mode 100644 index 0000000..e69de29 From ce75b4bd905ee7b4137b80e3164f76f07dffeeec Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Tue, 26 Mar 2019 16:47:52 +0100 Subject: [PATCH 051/271] suppression rouge --- Rouge/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Rouge/.gitkeep diff --git a/Rouge/.gitkeep b/Rouge/.gitkeep deleted file mode 100644 index e69de29..0000000 From fcfac4dcc8986ca4f10daf66b7f28712f26059df Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Tue, 26 Mar 2019 16:50:11 +0100 Subject: [PATCH 052/271] suppression des dossiers teams --- bin/.gitkeep | 0 src/.gitkeep | 0 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/.gitkeep delete mode 100644 src/.gitkeep diff --git a/bin/.gitkeep b/bin/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/.gitkeep b/src/.gitkeep deleted file mode 100644 index e69de29..0000000 From 3d506f8a78dc059fda023b8566e2b5aa603093ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Wed, 27 Mar 2019 08:04:32 +0100 Subject: [PATCH 053/271] Delete .gitkeep --- Blanc/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Blanc/.gitkeep diff --git a/Blanc/.gitkeep b/Blanc/.gitkeep deleted file mode 100644 index e69de29..0000000 From 1c350f7d26197b0b96d1aec1dfd0468c8125f35d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Wed, 27 Mar 2019 08:04:51 +0100 Subject: [PATCH 054/271] Delete .gitkeep --- Bleu/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Bleu/.gitkeep diff --git a/Bleu/.gitkeep b/Bleu/.gitkeep deleted file mode 100644 index e69de29..0000000 From 0fdf46548b6667e3a34ad88b78b221722bb05ad5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Wed, 27 Mar 2019 08:05:07 +0100 Subject: [PATCH 055/271] Delete .gitkeep --- Jaune/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Jaune/.gitkeep diff --git a/Jaune/.gitkeep b/Jaune/.gitkeep deleted file mode 100644 index e69de29..0000000 From 93ba1508cec58973460c829726c58744fe8f9811 Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Thu, 28 Mar 2019 12:44:56 +0100 Subject: [PATCH 056/271] modification des packages pour differents implements --- game/.gitkeep | 0 gamemanager/.gitkeep | 0 ia/.gitkeep | 0 move/.gitkeep | 0 player/.gitkeep | 0 src/game/.gitkeep | 0 src/gamemanager/.gitkeep | 0 src/ia/.gitkeep | 0 src/move/.gitkeep | 0 src/player/.gitkeep | 0 10 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 game/.gitkeep create mode 100644 gamemanager/.gitkeep create mode 100644 ia/.gitkeep create mode 100644 move/.gitkeep create mode 100644 player/.gitkeep create mode 100644 src/game/.gitkeep create mode 100644 src/gamemanager/.gitkeep create mode 100644 src/ia/.gitkeep create mode 100644 src/move/.gitkeep create mode 100644 src/player/.gitkeep diff --git a/game/.gitkeep b/game/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/gamemanager/.gitkeep b/gamemanager/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/ia/.gitkeep b/ia/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/move/.gitkeep b/move/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/player/.gitkeep b/player/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/game/.gitkeep b/src/game/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/gamemanager/.gitkeep b/src/gamemanager/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/ia/.gitkeep b/src/ia/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/move/.gitkeep b/src/move/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/player/.gitkeep b/src/player/.gitkeep new file mode 100644 index 0000000..e69de29 From 672e2fded5815fb2f36b10607c7f675a8af964aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Fri, 29 Mar 2019 08:33:48 +0100 Subject: [PATCH 057/271] Delete .gitkeep --- Vert/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Vert/.gitkeep diff --git a/Vert/.gitkeep b/Vert/.gitkeep deleted file mode 100644 index e69de29..0000000 From 36bd7db9b846f7a2c01b47f4ff890f27999389e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Fri, 29 Mar 2019 08:33:58 +0100 Subject: [PATCH 058/271] Delete .gitkeep --- bin/piecesEchiquier/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/piecesEchiquier/.gitkeep diff --git a/bin/piecesEchiquier/.gitkeep b/bin/piecesEchiquier/.gitkeep deleted file mode 100644 index e69de29..0000000 From c103677db97b50d95ff73b169451b05544e0d382 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Fri, 29 Mar 2019 08:34:02 +0100 Subject: [PATCH 059/271] Delete Cavalier.class --- bin/piecesEchiquier/Cavalier.class | Bin 399 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/piecesEchiquier/Cavalier.class diff --git a/bin/piecesEchiquier/Cavalier.class b/bin/piecesEchiquier/Cavalier.class deleted file mode 100644 index 82a7ba91dc80a92693dbc2e12483d8a9344955d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 399 zcmZWl!AiqG5Pg%zCdSrkwIG5AZ?%fKc&m5`dI}=6^uCQtyOJh#oA_Uz1P^|IA0@s; zdudsA=DnTwW`_O#`TPQKgI)knaI!Qy)2sVzZeDAnZJek#l@kQ;1-;GclT!~ZoecK6M>(U&pJW_yDjXXDd?o8(2w>;vIDv4@B;Vg@w Date: Fri, 29 Mar 2019 08:34:05 +0100 Subject: [PATCH 060/271] Delete Echiquier.class --- bin/piecesEchiquier/Echiquier.class | Bin 5535 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/piecesEchiquier/Echiquier.class diff --git a/bin/piecesEchiquier/Echiquier.class b/bin/piecesEchiquier/Echiquier.class deleted file mode 100644 index 66430ffba2f25f069698d210389aa2cdf3756bd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5535 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 I?htSKAG$TtiU0rr From 389320475d391127c79be52a812b298debc11b1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Fri, 29 Mar 2019 08:34:09 +0100 Subject: [PATCH 061/271] Delete Fou.class --- bin/piecesEchiquier/Fou.class | Bin 384 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/piecesEchiquier/Fou.class diff --git a/bin/piecesEchiquier/Fou.class b/bin/piecesEchiquier/Fou.class deleted file mode 100644 index 8e6f61c362cc5c293235885f892b90bb8df08409..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 384 zcmZWlO;5r=6r5KotrbO4jvl-r8hi1E@zThtF(wf1%esLzrNyQ7e|a+T;1BRe8E2y> z$jiRZnfE69{qy++;1>M|f#7s)jW(MHy|k~5H7*@jO@vU;-yS@9prCzcOIzOy27~-X zy{WWNh?6#ml0PSWOYq zfOvRyeg1*?oq2$SK4AoL5$%B4@DGO$4q1_bBXqgNXUEJuI>rflyu+Vn72xa_Jn>LO From 0349b7bd0ea7a8100523270ae241f7ca0ddc221e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Fri, 29 Mar 2019 08:34:12 +0100 Subject: [PATCH 062/271] Delete Piece.class --- bin/piecesEchiquier/Piece.class | Bin 1361 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/piecesEchiquier/Piece.class diff --git a/bin/piecesEchiquier/Piece.class b/bin/piecesEchiquier/Piece.class deleted file mode 100644 index a94d0b1415506fbf2a7a6ed4a09d8705bdf3c837..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1361 zcmZ{j&u-H|5XQev9H(&uP5(ohwvEUsJ)kS z9)?2cvi-ST^V^;C+Pkw$?S=|@x7+u1KTw!!4sTDw!0VhJDopFEYrpO4E8U^9>FY2I zw1TQDI9w}t)YD>YWcRy+iS(J(>;$8t%FJcM>*)0@dVOn9P>2>tm z{?(ZdKD5t#D$O;!Zrg9Q15eJ0(FiZRp2Bi7wJajq_9XbErCx1G@|7ZTFlDz|L>?yb zT~f13?tF#9xel92k*tMf7J5UAVN*uoKAjq)eOa)plNss9&|7|sDX1ct_j--Enas&{ zPDx;FFzi$Du$Z#`e^M5&hli7HKXCQ2Cmpn+S?|dpvB4sWnHGx@vEg2Wa^9)n05fzjfrYJMX3I!`z!)lbyi6xVC6z7c@A*^$6 zGNsravD7TB8+e?+)VNB4Ip+svzjBj-R27GAj#QGnsbmvRlHenHi?Hde+yb^D>lQn` z9VsluUN>;2JpU;1Q*0$#qac-UV<5Y!AltAfK-j~|uyZlUK0yxd0Fg%^9jL-d0hu4~ z$ct2v9qdkkup=X{BnEj&ki$Db Date: Fri, 29 Mar 2019 08:34:16 +0100 Subject: [PATCH 063/271] Delete Pion.class --- bin/piecesEchiquier/Pion.class | Bin 387 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/piecesEchiquier/Pion.class diff --git a/bin/piecesEchiquier/Pion.class b/bin/piecesEchiquier/Pion.class deleted file mode 100644 index 0a2ed6b166945d75323cb2b9b716252726cbb199..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 387 zcmZWlO;5r=5PefBEfob3ym|13XzaxshD)QT#+X33FLeWJ$`(uO|MFzw!5`p{GQN%8 zn#u0GH}mFW_xtDb3&1T#0X)HQXLP3b_u0n0)<&1{lPPQfUodKBs1&sCj5XCvFdnBb z>P^MDvg>$WmBy~8%}8>&6!=N;tRuA0>EZxwK`%8{Ki1ooE*EN*v+W=)GLg3lDWdh7J`=E?wHPb5N3+0#trJY7v8uUT!2b`2I$2t#ycQe zz^4J> Date: Fri, 29 Mar 2019 08:34:19 +0100 Subject: [PATCH 064/271] Delete Roi.class --- bin/piecesEchiquier/Roi.class | Bin 384 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/piecesEchiquier/Roi.class diff --git a/bin/piecesEchiquier/Roi.class b/bin/piecesEchiquier/Roi.class deleted file mode 100644 index 68f511fdb1166e3130d6f847abe8f3ff9cd99fc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 384 zcmZWlyH3ME5S(>PY)l{!NJ&8#0>TYl5RCG%Iv+mJ0Yo8j)F4~$e#eCI9c=os|kD> z5DqUcPd^a8GxreDM~omYpzSdm{^8KUJ}WYCfG)SV?2ws5hd4ryclgt+Je>RjJvmTB From 5bacdced70cb54ebca66bc1b87830de49f33ddfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Fri, 29 Mar 2019 08:34:23 +0100 Subject: [PATCH 065/271] Delete Tour.class --- bin/piecesEchiquier/Tour.class | Bin 387 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/piecesEchiquier/Tour.class diff --git a/bin/piecesEchiquier/Tour.class b/bin/piecesEchiquier/Tour.class deleted file mode 100644 index 0173dc101986efb4ddeb1d2dc5a7faf4f58c020e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 387 zcmZWl!A`U)Bw*DJ_=P|MFzw!4L4GjBleS z$Yy8W+j(zhvfn?SUjS|}4B!a{YiqRG-0P)%ZLF!{tZb?PzF@drd2&iY`_>k=z7vc_ z>5F<(ajuF*JgqBREGD}z$;C|IC*`w=&_bt+J+uYA)E4HkS(}{j}67pQ*|^ z{{QILOS=)ArrW!?Ehhre&bYIMpk-ETmUG@j5KSr9=E1r_9p}Av9-MGuEyfs- zW$<}`aC~`n_JQ!7*h9n^F@u@_A@+&Je>!w=Kt=}+(PI~fj) Date: Fri, 29 Mar 2019 08:34:27 +0100 Subject: [PATCH 066/271] Delete Reine.class --- bin/piecesEchiquier/Reine.class | Bin 390 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/piecesEchiquier/Reine.class diff --git a/bin/piecesEchiquier/Reine.class b/bin/piecesEchiquier/Reine.class deleted file mode 100644 index bda6818ca61f48afbfdc1630664badda7f489ae6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 390 zcmZutO;5r=5PefBtrZ1P;>m+IL}M@BAYK|hHO2_xzSIq@DJ?Fo|I3q!2Y-M+%J^2j zK_1A-)0N*QX6gKM{Nonz~7R3a8f~YWC~N=2>Si> zS-q+_SH(OYSJo8s;btT`p9=h>e9{pb*ll44O+h>5nEQG;({`d}Ioo#AGE@0fS>yPB z(61I|EjUTHt~nG)<|;SV5H$31#dOY-2%>RW+f3gXH!1pkRlAE-p{s5xx<7h6*xefT^#BVIdzCbbU8 Date: Fri, 29 Mar 2019 08:34:34 +0100 Subject: [PATCH 067/271] Delete main.class --- bin/visuel/main.class | Bin 1878 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/visuel/main.class diff --git a/bin/visuel/main.class b/bin/visuel/main.class deleted file mode 100644 index 9a52413b4e43a2d2d2266d5fbfbfdd8c5744b5dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1878 zcmb_c&u<%55dNNHd)JPWrf!qeq`;;?Vz*69o3ssae~>h3o8q_)34yc}x>>(C>#lcQ zdpAldPDn_V_zOTnT+5Lj9EnI=dO$)#oH%jhfH-mCO!=Oj(v+G55|;P9*_qk-=6y5s zzW?)^Zvl*>sv#uMxnb7>>0~RW?P>@M^pwpFGwYacDSK_TEG=Ikde(Mr|GYp)I)R~h!#?Ycl$eh*}h;S{t$ zU;1YLDfFUWv)xiIv#epi!2YHo@NFl%Xqm1nYcU)^uZDxq*D%>jq!@J>{{Oum1-LZ7M#?Pk$CZuDSBosWmd8kYRM{$f)djXk$n*Vk3@g#p8 zBLc^#ZRu`EH;_irbnAvCjj{}k;;^*VrDfEEnqhfv-E*Wd7>^^16B=F@IMAe$gzO2J zz)6e=XjO&bDB9YbLNRhmAXT-cCF`@+x_vjWWi9)+6lYJx)H0F48<-T(eXqrUz`=Cp zc@{LB73lwG&8Gv~Dax7-_M5)s@fbyE#F4|BisCUv_H+Ul6+pBk{eo9f#@Pfe;WAZb zwJP1Bz(~6zJeR{RSWd^BfFMmdOz6l9EG%#+NL|%_^nlE6c!4ADsjY4lAAMDIOiR{` z3&xDcX1r(6(G4oH=BZpAyX5l2z^1EY4IJe&%Gf<9BybJa$+Rms{W+Hf=0wfucw1n0 z%D78NgUQ!C+czB3sCxDP4l<6V1l|G1R4>X_p2SPf@t0ZF@g84xNmU8mNZ_WL;E3fA zjBRMvN*vJxZAOt3RkvtrakzIDIl~=nJra0>PURDv$^5f(Lyu7TB$rJZ1*r~gQ3!1+ z)fN{)=z;vdb{0SHTJ%lp&b(P|-X$7t3B(uK9G1Lfs|zQlE|F2yOBe+6;SC3bDDi^g zs_`w$U2u;a-G=^k(;Vlj%s>pCToWw^?p;k?H}+A(k3+rmqqpeVLC?xVB)4%WA3nE( zftBQo$(Oe=SZKBZog#z} z@FC09#d_X`$?B)@2UcM*$07WRBBe0Vzl6jZ`@+X(C{c!{~hwk9nAghKhzBp<#f3>ILJeKJ)$pzB0Re From 044d6f2733541bb82e9141a54742535f64c0f065 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Fri, 29 Mar 2019 08:34:38 +0100 Subject: [PATCH 068/271] Delete .gitkeep --- bin/visuel/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/visuel/.gitkeep diff --git a/bin/visuel/.gitkeep b/bin/visuel/.gitkeep deleted file mode 100644 index e69de29..0000000 From 7c2f2faaf896c675757991aef04d7676995fcc45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Fri, 29 Mar 2019 08:34:52 +0100 Subject: [PATCH 069/271] Delete .gitkeep --- player/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 player/.gitkeep diff --git a/player/.gitkeep b/player/.gitkeep deleted file mode 100644 index e69de29..0000000 From de99bcad7aa0fd36e509eaebad27da1cbe3fabfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Fri, 29 Mar 2019 08:34:59 +0100 Subject: [PATCH 070/271] Delete .gitkeep --- game/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 game/.gitkeep diff --git a/game/.gitkeep b/game/.gitkeep deleted file mode 100644 index e69de29..0000000 From 4ee6e09cdd4929af307769a94465ee794dedadf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Fri, 29 Mar 2019 08:35:05 +0100 Subject: [PATCH 071/271] Delete .gitkeep --- gamemanager/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 gamemanager/.gitkeep diff --git a/gamemanager/.gitkeep b/gamemanager/.gitkeep deleted file mode 100644 index e69de29..0000000 From 1bf9df11bb492652dec2a1fa7695d149059b1eb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Fri, 29 Mar 2019 08:35:11 +0100 Subject: [PATCH 072/271] Delete .gitkeep --- ia/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ia/.gitkeep diff --git a/ia/.gitkeep b/ia/.gitkeep deleted file mode 100644 index e69de29..0000000 From dc70ecdc13a9976d0f829e3e8d3d3a57be5ba779 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Fri, 29 Mar 2019 08:35:18 +0100 Subject: [PATCH 073/271] Delete .gitkeep --- move/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 move/.gitkeep diff --git a/move/.gitkeep b/move/.gitkeep deleted file mode 100644 index e69de29..0000000 From 897fb7b8cbabd686ef3f734ca93ac727242aaf5b Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Fri, 29 Mar 2019 10:29:49 +0100 Subject: [PATCH 074/271] ajout du X.java --- X.java | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 X.java diff --git a/X.java b/X.java new file mode 100644 index 0000000..3792b30 --- /dev/null +++ b/X.java @@ -0,0 +1,36 @@ +public class X { + private String nom; + private String prenom; + + + public X() { + this.nom = null; + this.preom = null; + } + + public X(String s1, String s2) { + this.nom = s1; + this.prenom = s2; + } + + public getNom() { + return this.nom; + } + + public getPrenom() { + return this.prenom; + } + + public setNom(String s) { + this.nom = s; + } + + public setPrenom(Sting s) { + this.prenom = s; + } + + @Override + public String toString() { + return "La personne s'appelle " + this.prenom + " " + this.nom; + } +} From bbc2cd6b3b2445adf87c312e14ab40805ae1dd87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Fri, 29 Mar 2019 10:34:20 +0100 Subject: [PATCH 075/271] Update X.java, supression du caractere special --- X.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/X.java b/X.java index 3792b30..03cd04c 100644 --- a/X.java +++ b/X.java @@ -13,7 +13,7 @@ public class X { this.prenom = s2; } - public getNom() { + public getNom() { return this.nom; } From 9fdf776a07d693cee6367b161cf90a0f908414de Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Sat, 30 Mar 2019 22:29:23 +0100 Subject: [PATCH 076/271] Update all the repo update all the repo by creating correct packages and deletting all .class files --- .classpath | 0 .gitignore | 0 .gitkeep | 0 .project | 0 .setting/.gitkeep | 0 .setting/org.eclipse.jdt.core.prefs | 0 LICENSE | 0 README.md | 0 src/game/.gitkeep | 0 src/gamemanager/.gitkeep | 0 src/ia/.gitkeep | 0 src/joueurs/.gitkeep | 0 src/joueurs/Joueur.java | 7 +++++-- src/move/.gitkeep | 0 src/piecesEchiquier/.gitkeep | 0 src/piecesEchiquier/Cavalier.java | 0 src/piecesEchiquier/Echiquier.java | 0 src/piecesEchiquier/Fou.java | 0 src/piecesEchiquier/Piece.java | 0 src/piecesEchiquier/Pion.java | 0 src/piecesEchiquier/Reine.java | 0 src/piecesEchiquier/Roi.java | 0 src/piecesEchiquier/Tour.java | 0 src/player/.gitkeep | 0 src/visuel/.gitkeep | 0 src/visuel/main.java | 0 26 files changed, 5 insertions(+), 2 deletions(-) mode change 100644 => 100755 .classpath mode change 100644 => 100755 .gitignore create mode 100755 .gitkeep mode change 100644 => 100755 .project mode change 100644 => 100755 .setting/.gitkeep mode change 100644 => 100755 .setting/org.eclipse.jdt.core.prefs mode change 100644 => 100755 LICENSE mode change 100644 => 100755 README.md mode change 100644 => 100755 src/game/.gitkeep mode change 100644 => 100755 src/gamemanager/.gitkeep mode change 100644 => 100755 src/ia/.gitkeep mode change 100644 => 100755 src/joueurs/.gitkeep mode change 100644 => 100755 src/joueurs/Joueur.java mode change 100644 => 100755 src/move/.gitkeep mode change 100644 => 100755 src/piecesEchiquier/.gitkeep mode change 100644 => 100755 src/piecesEchiquier/Cavalier.java mode change 100644 => 100755 src/piecesEchiquier/Echiquier.java mode change 100644 => 100755 src/piecesEchiquier/Fou.java mode change 100644 => 100755 src/piecesEchiquier/Piece.java mode change 100644 => 100755 src/piecesEchiquier/Pion.java mode change 100644 => 100755 src/piecesEchiquier/Reine.java mode change 100644 => 100755 src/piecesEchiquier/Roi.java mode change 100644 => 100755 src/piecesEchiquier/Tour.java mode change 100644 => 100755 src/player/.gitkeep mode change 100644 => 100755 src/visuel/.gitkeep mode change 100644 => 100755 src/visuel/main.java diff --git a/.classpath b/.classpath old mode 100644 new mode 100755 diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/.gitkeep b/.gitkeep new file mode 100755 index 0000000..e69de29 diff --git a/.project b/.project old mode 100644 new mode 100755 diff --git a/.setting/.gitkeep b/.setting/.gitkeep old mode 100644 new mode 100755 diff --git a/.setting/org.eclipse.jdt.core.prefs b/.setting/org.eclipse.jdt.core.prefs old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/src/game/.gitkeep b/src/game/.gitkeep old mode 100644 new mode 100755 diff --git a/src/gamemanager/.gitkeep b/src/gamemanager/.gitkeep old mode 100644 new mode 100755 diff --git a/src/ia/.gitkeep b/src/ia/.gitkeep old mode 100644 new mode 100755 diff --git a/src/joueurs/.gitkeep b/src/joueurs/.gitkeep old mode 100644 new mode 100755 diff --git a/src/joueurs/Joueur.java b/src/joueurs/Joueur.java old mode 100644 new mode 100755 index 6e269ca..f9dfce0 --- a/src/joueurs/Joueur.java +++ b/src/joueurs/Joueur.java @@ -5,6 +5,10 @@ public class Joueur { private String couleur; //private boolean tour = false; + public Joueur() { + this.nom = null; + this.couleur = null; + public Joueur(String n, String c) { nom = n; couleur = c; @@ -25,7 +29,6 @@ public class Joueur { public void setCouleur(String couleur) { this.couleur = couleur; } - - + } diff --git a/src/move/.gitkeep b/src/move/.gitkeep old mode 100644 new mode 100755 diff --git a/src/piecesEchiquier/.gitkeep b/src/piecesEchiquier/.gitkeep old mode 100644 new mode 100755 diff --git a/src/piecesEchiquier/Cavalier.java b/src/piecesEchiquier/Cavalier.java old mode 100644 new mode 100755 diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java old mode 100644 new mode 100755 diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java old mode 100644 new mode 100755 diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java old mode 100644 new mode 100755 diff --git a/src/piecesEchiquier/Pion.java b/src/piecesEchiquier/Pion.java old mode 100644 new mode 100755 diff --git a/src/piecesEchiquier/Reine.java b/src/piecesEchiquier/Reine.java old mode 100644 new mode 100755 diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java old mode 100644 new mode 100755 diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java old mode 100644 new mode 100755 diff --git a/src/player/.gitkeep b/src/player/.gitkeep old mode 100644 new mode 100755 diff --git a/src/visuel/.gitkeep b/src/visuel/.gitkeep old mode 100644 new mode 100755 diff --git a/src/visuel/main.java b/src/visuel/main.java old mode 100644 new mode 100755 From a2abb440700d1196408e0d47233425b17cde077c Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Tue, 2 Apr 2019 10:30:30 +0200 Subject: [PATCH 077/271] ajout de la fonction nulle pour test --- X.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/X.java b/X.java index 03cd04c..549b751 100644 --- a/X.java +++ b/X.java @@ -33,4 +33,6 @@ public class X { public String toString() { return "La personne s'appelle " + this.prenom + " " + this.nom; } +//ajoute methode nulle + } From e2bef776088756a237942fd4338e602c16f4ac52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Tue, 2 Apr 2019 10:43:01 +0200 Subject: [PATCH 078/271] Update X.java = suppression du commentaire ajout ligne nulle. --- X.java | 1 - 1 file changed, 1 deletion(-) diff --git a/X.java b/X.java index 549b751..f79506f 100644 --- a/X.java +++ b/X.java @@ -33,6 +33,5 @@ public class X { public String toString() { return "La personne s'appelle " + this.prenom + " " + this.nom; } -//ajoute methode nulle } From 450d786921c9af80891312e6eafc4ee215d56a5b Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Tue, 2 Apr 2019 10:51:56 +0200 Subject: [PATCH 079/271] issou test --- antho.java | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 antho.java diff --git a/antho.java b/antho.java new file mode 100644 index 0000000..cab9a75 --- /dev/null +++ b/antho.java @@ -0,0 +1,5 @@ +public class Antho { + + private Nom; + +} From fec42a6dd50a34d28bb4708ad6f324ca600c8a63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Srifi?= Date: Tue, 2 Apr 2019 10:53:32 +0200 Subject: [PATCH 080/271] Update antho.java ajout commentaire --- antho.java | 1 + 1 file changed, 1 insertion(+) diff --git a/antho.java b/antho.java index cab9a75..7e83f13 100644 --- a/antho.java +++ b/antho.java @@ -2,4 +2,5 @@ public class Antho { private Nom; + //ajout commentaire } From d58f3f9f24fc58fad7bca18d07bb3b0e7970bc2a Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Tue, 2 Apr 2019 10:55:21 +0200 Subject: [PATCH 081/271] supression du fichier antho.java --- antho.java | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 antho.java diff --git a/antho.java b/antho.java deleted file mode 100644 index 7e83f13..0000000 --- a/antho.java +++ /dev/null @@ -1,6 +0,0 @@ -public class Antho { - - private Nom; - - //ajout commentaire -} From d9a7b1c53217a9c28eb6f788c4d937865e6baaf1 Mon Sep 17 00:00:00 2001 From: rc804998 Date: Tue, 2 Apr 2019 16:20:11 +0200 Subject: [PATCH 082/271] Ajout d'un } pour fixer les erreurs --- src/joueurs/Joueur.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/joueurs/Joueur.java b/src/joueurs/Joueur.java index f9dfce0..bb20758 100755 --- a/src/joueurs/Joueur.java +++ b/src/joueurs/Joueur.java @@ -8,6 +8,7 @@ public class Joueur { public Joueur() { this.nom = null; this.couleur = null; + } public Joueur(String n, String c) { nom = n; From b7223a5cee4e9939933fa9a96f69bec519c1d8a8 Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Tue, 2 Apr 2019 16:54:14 +0200 Subject: [PATCH 083/271] update des attributs des pieces --- src/piecesEchiquier/Piece.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index 9ef7878..ce751b1 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -5,7 +5,7 @@ public class Piece { //variables - private String couleur; + private boolean couleur; private String emplacement; private char lettre = '.'; private boolean enVie = true; @@ -21,11 +21,11 @@ public class Piece { // constructeur - public Piece(String c, String emp,char l) + public Piece(boolean couleur, String emp,char l) { - couleur = c; - emplacement = emp; - lettre = l; + this.setCouleur(couleur); + this.emplacement = emp; + this.lettre = l; } // gets & sets @@ -60,11 +60,11 @@ public class Piece { /////////// - public String getCouleur() { + public boolean isCouleur() { return couleur; } - public void setCouleur(String couleur) { + public void setCouleur(boolean couleur) { this.couleur = couleur; } From 111caf24d7973d02c75f2b2153511f012d0d1a24 Mon Sep 17 00:00:00 2001 From: aa700867 Date: Tue, 2 Apr 2019 16:57:11 +0200 Subject: [PATCH 084/271] SAVE roi.java avant pull --- src/piecesEchiquier/Roi.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index 2f3a989..3c68073 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -6,4 +6,10 @@ public class Roi extends Piece { super(c, emp,l); } + public void enEchec() { + int[][] positionCourante; + positionCourante=Piece.getPositionCourante(); + + } + } From cf88454384c78818ad2577b873d52bf80177fc34 Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Tue, 2 Apr 2019 17:13:37 +0200 Subject: [PATCH 085/271] Update des couleurs from String to boolean --- src/piecesEchiquier/Cavalier.java | 2 +- src/piecesEchiquier/Fou.java | 2 +- src/piecesEchiquier/Reine.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/piecesEchiquier/Cavalier.java b/src/piecesEchiquier/Cavalier.java index fcd02f1..70b27b5 100755 --- a/src/piecesEchiquier/Cavalier.java +++ b/src/piecesEchiquier/Cavalier.java @@ -2,7 +2,7 @@ package piecesEchiquier; public class Cavalier extends Piece { - public Cavalier(String c, String emp,char l) + public Cavalier(boolean c, String emp,char l) { super(c, emp,l); } diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java index bf590e6..280b496 100755 --- a/src/piecesEchiquier/Fou.java +++ b/src/piecesEchiquier/Fou.java @@ -2,7 +2,7 @@ package piecesEchiquier; public class Fou extends Piece { - public Fou(String c, String emp,char l) { + public Fou(boolean c, String emp,char l) { super(c, emp,l); } diff --git a/src/piecesEchiquier/Reine.java b/src/piecesEchiquier/Reine.java index 917b50d..c1ab3ea 100755 --- a/src/piecesEchiquier/Reine.java +++ b/src/piecesEchiquier/Reine.java @@ -2,7 +2,7 @@ package piecesEchiquier; public class Reine extends Piece { - public Reine(String c, String emp,char l) { + public Reine(boolean c, String emp,char l) { super(c, emp,l); } } From 371b0f8322af015621b80fd1b138fe1745e60cf2 Mon Sep 17 00:00:00 2001 From: rc804998 Date: Tue, 2 Apr 2019 17:20:48 +0200 Subject: [PATCH 086/271] Ajout classe Position --- src/piecesEchiquier/Position.java | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/piecesEchiquier/Position.java diff --git a/src/piecesEchiquier/Position.java b/src/piecesEchiquier/Position.java new file mode 100644 index 0000000..9b5883e --- /dev/null +++ b/src/piecesEchiquier/Position.java @@ -0,0 +1,34 @@ +package piecesEchiquier; + +public class Position { + private int ligne; + private int colonne; + + public Position() { + + } + + public Position(int x, int y) + { + ligne = x; + colonne = y; + } + + public int getLigne() { + return ligne; + } + + public void setLigne(int ligne) { + this.ligne = ligne; + } + + public int getColonne() { + return colonne; + } + + public void setColonne(int colonne) { + this.colonne = colonne; + } + + +} From 43ba7daf15128d95333bb96acb6f863b941c2001 Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Tue, 2 Apr 2019 17:38:04 +0200 Subject: [PATCH 087/271] Modification des attributs de postion + ajout attribut depart --- src/piecesEchiquier/Piece.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index ce751b1..cb3b9dc 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -6,9 +6,10 @@ public class Piece { //variables private boolean couleur; - private String emplacement; + private Position emplacement; private char lettre = '.'; private boolean enVie = true; + private Position depart; @@ -21,11 +22,12 @@ public class Piece { // constructeur - public Piece(boolean couleur, String emp,char l) + public Piece(boolean couleur,char l, int X, int Y) { this.setCouleur(couleur); - this.emplacement = emp; this.lettre = l; + this.emplacement.setEmplacement(X, Y); + this.depart.setEmplacement(X, Y); } // gets & sets From 98c7d397328e7aea09b75431cb9fc820040f8c2b Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Tue, 2 Apr 2019 17:42:22 +0200 Subject: [PATCH 088/271] sauvegarde des fichiers echiquiers pieces et position --- src/piecesEchiquier/Echiquier.java | 1 + src/piecesEchiquier/Piece.java | 2 +- src/piecesEchiquier/Position.java | 0 3 files changed, 2 insertions(+), 1 deletion(-) mode change 100644 => 100755 src/piecesEchiquier/Position.java diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 7ab1ae8..28f2cd3 100755 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -13,6 +13,7 @@ public class Echiquier { {"2A","2B","2C","2D","2E","2F","2G","2H"}, {"1A","1B","1C","1D","1E","1F","1G","1H"} }; +//a refaire public Pion pionB1 = new Pion("Blanc",codes[6][0],'P'); public Pion pionB2 = new Pion("Blanc",codes[6][1],'P'); public Pion pionB3 = new Pion("Blanc",codes[6][2],'P'); diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index cb3b9dc..8b8fc25 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -5,7 +5,7 @@ public class Piece { //variables - private boolean couleur; + private boolean couleur; /* True = blanc & Flase = noir */ private Position emplacement; private char lettre = '.'; private boolean enVie = true; diff --git a/src/piecesEchiquier/Position.java b/src/piecesEchiquier/Position.java old mode 100644 new mode 100755 From ebfe4d71f5b30bcc2d20ff6e144ac226d5ada129 Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Tue, 2 Apr 2019 17:51:13 +0200 Subject: [PATCH 089/271] adaptation du main a l'ajout de la classe position --- src/visuel/main.java | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/src/visuel/main.java b/src/visuel/main.java index 7c50d49..4c6b2ba 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -5,6 +5,7 @@ import java.util.Scanner; import joueurs.Joueur; import piecesEchiquier.Echiquier; +import piecesEchiquier.Position; public class main { @@ -13,22 +14,25 @@ public class main { //ouvre une porte pour input Scanner sc = new Scanner(System.in); - // variable tempo pour tests boolean jeu = true; - + //position de la piece choisie et l'emplacement ou la poser + Position p1 = new Position(); + Position p2 = new Position(); // joueurs APRES ON DEMANDERA NOM Joueur j1 = new Joueur("Manon","Blanc"); Joueur j2 = new Joueur("Autre","Noir"); // vars pour deplacer + /* int x1; int y1; int x2; int y2; - + */ + String dep; System.out.println("Bienvenue dans ce jeu d'echec sur console !\n"); @@ -44,33 +48,39 @@ public class main { // JOUEUR1 System.out.println("Tour de "+j1.getNom()+"\n"); - System.out.println("Quelle pice voulez vous dplacer ? Donnez le numero de ligne puis de colonne.\n"); + do + { + System.out.println("Quelle pièce voulez vous déplacer ? Donnez la combinaison lettre/chiffre.\n"); + String initial = sc.nextLine(); + p1 = e.traduction(initial); + }while (p1 == null); - //entrer coordonnes piece a bouger APRES ON PASSERA PAR DIRECT COMBINAISON LETTRE-CHIFFRE - x1 = sc.nextInt(); - y1 = sc.nextInt(); + do + { + System.out.println("A quel endroit la poser ? Donnez la combinaison lettre/chiffre.\\n"); + //entrer coordonnées endroit visé APRES ON PASSERA PAR DIRECT COMBINAISON LETTRE-CHIFFRE - System.out.println("A quel endroit la poser ? Donnez le numero de ligne puis de colonne.\n"); - //entrer coordonnes endroit vis APRES ON PASSERA PAR DIRECT COMBINAISON LETTRE-CHIFFRE - x2 = sc.nextInt(); - y2 = sc.nextInt(); + String newemp = sc.nextLine(); + p2 = e.traduction(newemp); + }while (p2 == null); // DEPLACEMENT (prototype minimum juste pour voir) - e.deplacer(x1-1,y1-1,x2-1,y2-1); + e.deplacer(p1,p2); //REAFFICHAGE ECHIQUIER System.out.println(e.toString()); // JOUEUR2 + /* System.out.println("Tour de"+j2.getNom()+"\n"); - System.out.println("Quelle pice voulez vous dplacer ? Donnez le numero de ligne puis de colonne.\n"); + System.out.println("Quelle pièce voulez vous déplacer ? Donnez le numero de ligne puis de colonne.\n"); x1 = sc.nextInt(); y1 = sc.nextInt(); System.out.println("A quel endroit la poser ? Donnez le numero de ligne puis de colonne.\n"); x2 = sc.nextInt(); y2 = sc.nextInt(); e.deplacer(x1-1,y1-1,x2-1,y2-1); - +*/ //jeu = false; }while (jeu == true); From 8523bdc45a361e8142f812e32763af986891eeac Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Tue, 23 Apr 2019 16:29:33 +0200 Subject: [PATCH 090/271] add Plateau.java --- src/piecesEchiquier/Plateau.java | 162 +++++++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100755 src/piecesEchiquier/Plateau.java diff --git a/src/piecesEchiquier/Plateau.java b/src/piecesEchiquier/Plateau.java new file mode 100755 index 0000000..ada7532 --- /dev/null +++ b/src/piecesEchiquier/Plateau.java @@ -0,0 +1,162 @@ +package piecesEchiquier; + +public class Plateau { + //attributs + private Case[][] cases; + + //constructeur + public Plateau() { + this.cases= new Case[8][8]; + } + + //1 + this.cases[0][0] = new Case("A1",1,1); + this.cases[1][0] = new Case("B1",2,1); + this.cases[2][0] = new Case("C1",3,1); + this.cases[3][0] = new Case("D1",4,1); + this.cases[4][0] = new Case("E1",5,1); + this.cases[5][0] = new Case("F1",6,1); + this.cases[6][0] = new Case("G1",7,1); + this.cases[7][0] = new Case("H1",8,1); + + //2 + this.cases[0][1] = new Case("A2",1,2); + this.cases[1][1] = new Case("B2",2,2); + this.cases[2][1] = new Case("C2",3,2); + this.cases[3][1] = new Case("D2",4,2); + this.cases[4][1] = new Case("E2",5,2); + this.cases[5][1] = new Case("F2",6,2); + this.cases[6][1] = new Case("G2",7,2); + this.cases[7][1] = new Case("H2",8,2); + + //3 + this.cases[0][2] = new Case("A3",1,3); + this.cases[1][2] = new Case("B3",2,3); + this.cases[2][2] = new Case("C3",3,3); + this.cases[3][2] = new Case("D3",4,3); + this.cases[4][2] = new Case("E3",5,3); + this.cases[5][2] = new Case("F3",6,3); + this.cases[6][2] = new Case("G3",7,3); + this.cases[7][2] = new Case("H3",8,3); + + //4 + this.cases[0][3] = new Case("A4",1,4); + this.cases[1][3] = new Case("B4",2,4); + this.cases[2][3] = new Case("C4",3,4); + this.cases[3][3] = new Case("D4",4,4); + this.cases[4][3] = new Case("E4",5,4); + this.cases[5][3] = new Case("F4",6,4); + this.cases[6][3] = new Case("G4",7,4); + this.cases[7][3] = new Case("H4",8,4); + + //5 + this.cases[0][4] = new Case("A5",1,5); + this.cases[1][4] = new Case("B5",2,5); + this.cases[2][4] = new Case("C5",3,5); + this.cases[3][4] = new Case("D5",4,5); + this.cases[4][4] = new Case("E5",5,5); + this.cases[5][4] = new Case("F5",6,5); + this.cases[6][4] = new Case("G5",7,5); + this.cases[7][4] = new Case("H5",8,5); + + //6 + this.cases[0][5] = new Case("A6",1,6); + this.cases[1][5] = new Case("B6",2,6); + this.cases[2][5] = new Case("C6",3,6); + this.cases[3][5] = new Case("D6",4,6); + this.cases[4][5] = new Case("E6",5,6); + this.cases[5][5] = new Case("F6",6,6); + this.cases[6][5] = new Case("G6",7,6); + this.cases[7][5] = new Case("H6",8,6); + + //7 + this.cases[0][6] = new Case("A7",1,7); + this.cases[1][6] = new Case("B7",2,7); + this.cases[2][6] = new Case("C7",3,7); + this.cases[3][6] = new Case("D7",4,7); + this.cases[4][6] = new Case("E7",5,7); + this.cases[5][6] = new Case("F7",6,7); + this.cases[6][6] = new Case("G7",7,7); + this.cases[7][6] = new Case("H7",8,7); + + //8 + this.cases[0][7] = new Case("A8",1,8); + this.cases[1][7] = new Case("B8",2,8); + this.cases[2][7] = new Case("C8",3,8); + this.cases[3][7] = new Case("D8",4,8); + this.cases[4][7] = new Case("E8",5,8); + this.cases[5][7] = new Case("F8",6,8); + this.cases[6][7] = new Case("G8",7,8); + this.cases[7][7] = new Case("H8",8,8); + } + + + public void afficherPlateau() { + for (int j = 7 ; j > -1 ; j--) { + System.out.print(j+1+" |"); + for (int i = 0 ; i < 8 ; i++){ + if(this.getCases()[i][j].getPieceCase() == null) { + System.out.print(" |"); + } + else { + System.out.print(this.getCases()[i][j].getPieceCase().getNom()+"|"); + } + + } + System.out.println(); + System.out.println(" +---+---+---+---+---+---+---+---+"); + } + System.out.print(" A B C D E F G H "); + System.out.println(); + } + + //place les points au commencement de la partie + public void ajouterPions(Joueur J1, Joueur J2) { + for (int x = 0; x<8;x++) + { + cases[x][1].ajouterPion(J1); + cases[x][6].ajouterPion(J2); + + } + cases[0][0].ajouterTour(J1); + cases[1][0].ajouterCavalier(J1); + cases[2][0].ajouterFou(J1); + cases[3][0].ajouterRoi(J1); + cases[4][0].ajouterReine(J1); + cases[5][0].ajouterFou(J1); + cases[6][0].ajouterCavalier(J1); + cases[7][0].ajouterTour(J1); + + cases[0][7].ajouterTour(J2); + cases[1][7].ajouterCavalier(J2); + cases[2][7].ajouterFou(J2); + cases[3][7].ajouterReine(J2); + cases[4][7].ajouterRoi(J2); + cases[5][7].ajouterFou(J2); + cases[6][7].ajouterCavalier(J2); + cases[7][7].ajouterTour(J2); + + } + + //simplification pour bouger des pieces + public static boolean move(Plateau p, Joueur J, String depart, String arrivee) { + Case dep = Case.stringToCase(p, depart); + if(dep == null) { + System.err.println("Case Inexistante"); + return false; + } + int dX = dep.getcX(); + int dY = dep.getcY(); + return p.getCases()[dX-1][dY-1].getPieceCase().move(p,J,depart,arrivee); + } + + //getters and setters + public Case[][] getCases() { + return cases; + } + + public void setCases(Case[][] cases) { + this.cases = cases; + } + +} From a030b7c865a83afe50f96cdf4211fd1de40581d1 Mon Sep 17 00:00:00 2001 From: Anthony Date: Tue, 23 Apr 2019 16:40:23 +0200 Subject: [PATCH 091/271] ajout chiffre ajout 8612781; ligne x --- src/piecesEchiquier/Pion.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/piecesEchiquier/Pion.java b/src/piecesEchiquier/Pion.java index 351e86c..e136bcd 100755 --- a/src/piecesEchiquier/Pion.java +++ b/src/piecesEchiquier/Pion.java @@ -7,5 +7,5 @@ public class Pion extends Piece { } - +95879; } From 5acb2af73af2eb0e729fa81c40749c65300c15d6 Mon Sep 17 00:00:00 2001 From: Anthony Date: Tue, 23 Apr 2019 16:41:07 +0200 Subject: [PATCH 092/271] undo 88452 --- src/piecesEchiquier/Pion.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/piecesEchiquier/Pion.java b/src/piecesEchiquier/Pion.java index e136bcd..fbb0bbb 100755 --- a/src/piecesEchiquier/Pion.java +++ b/src/piecesEchiquier/Pion.java @@ -7,5 +7,4 @@ public class Pion extends Piece { } -95879; } From 1975eb6019670f9072d0d000e134020ff54e785f Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Tue, 23 Apr 2019 16:48:42 +0200 Subject: [PATCH 093/271] add class Case.java --- src/piecesEchiquier/Case.java | 94 +++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100755 src/piecesEchiquier/Case.java diff --git a/src/piecesEchiquier/Case.java b/src/piecesEchiquier/Case.java new file mode 100755 index 0000000..7df1d0d --- /dev/null +++ b/src/piecesEchiquier/Case.java @@ -0,0 +1,94 @@ +package echec; + +public class Case { + //attribut + private String NomCase; + private int posXCase; + private int posYCase; + private Piece pieceCase; + + //constructeur + public Case(String name, int x, int y) { + this.NomCase=name; + this.posXCase=x; + this.posYCase=y; + } + + //méthodes + public boolean estVide() { + return pieceCase == null; + } + + //piecesInstantiation + + public void pieceClone(Case clone) { + clone.setPieceCase(this.getPieceCase()); + } + + public void ajouterPion(Joueur j) { + this.pieceCase = new Pion("Pi"+j.getNom().charAt(0), j); + } + + public void ajouterTour(Joueur j) { + this.pieceCase = new Tour("To"+j.getNom().charAt(0), j); + } + + public void ajouterCavalier(Joueur j) { + this.pieceCase = new Cavalier("Ca"+j.getNom().charAt(0), j); + } + + public void ajouterFou(Joueur j) { + this.pieceCase = new Fou("Fo"+j.getNom().charAt(0), j); + } + + public void ajouterReine(Joueur j) { + this.pieceCase = new Reine("Re"+j.getNom().charAt(0), j); + } + + public void ajouterRoi(Joueur j) { + this.pieceCase = new Roi("Ro"+j.getNom().charAt(0), j); + } + + public void vider() { + this.pieceCase = null; + } + + public int stringToX(Plateau p, String cas) { + for (Case[] cl : p.getCases()) { + for (Case c : cl) { + if(c.getcNom()== cas) { + return c.getcX(); + } + } + } + return -1; + } + + public int stringToY(Plateau p, String cas) { + for (Case[] cl : p.getCases()) { + for (Case c : cl) { + if(c.getcNom()== cas) { + return c.getcY(); + } + } + } + return -1; + } + + public static Case stringToCase(Plateau p, String cas) { + for (Case[] cl : p.getCases()) { + for (Case c : cl) { + if(c.getcNom().equals(cas)) { + return c; + } + } + } + return null; + } + + @Override + public String toString() { + return "Case [cNom=" + cNom + ", cX=" + cX + ", cY=" + cY + ", pieceCase=" + pieceCase + "]"; + } + + } From cc2e62c50fab9736368c0c4e8d915c64790c465c Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Tue, 23 Apr 2019 17:03:08 +0200 Subject: [PATCH 094/271] update classes add attributes on joueur.java add methods and getters/setter on Case.java update Piece.java --- src/joueurs/Joueur.java | 20 +++++++++++ src/piecesEchiquier/Case.java | 66 ++++++++++++++++++++++++++++++++-- src/piecesEchiquier/Piece.java | 16 ++++++++- 3 files changed, 98 insertions(+), 4 deletions(-) diff --git a/src/joueurs/Joueur.java b/src/joueurs/Joueur.java index bb20758..63af03e 100755 --- a/src/joueurs/Joueur.java +++ b/src/joueurs/Joueur.java @@ -3,6 +3,7 @@ package joueurs; public class Joueur { private String nom; private String couleur; + private boolean aGagne; //private boolean tour = false; public Joueur() { @@ -31,5 +32,24 @@ public class Joueur { this.couleur = couleur; } + @Override + public String toString() { + return "Joueur [nom=" + nom + ", couleur=" + couleur + "]"; + } + + /** + * @return the aGagne + */ + public boolean isaGagne() { + return aGagne; + } + + /** + * @param aGagne the aGagne to set + */ + public void setaGagne(boolean aGagne) { + this.aGagne = aGagne; + } + } diff --git a/src/piecesEchiquier/Case.java b/src/piecesEchiquier/Case.java index 7df1d0d..b2761cb 100755 --- a/src/piecesEchiquier/Case.java +++ b/src/piecesEchiquier/Case.java @@ -1,4 +1,6 @@ -package echec; +package piecesEchiquier; + +import joueurs.Joueur; public class Case { //attribut @@ -14,6 +16,7 @@ public class Case { this.posYCase=y; } + //méthodes public boolean estVide() { return pieceCase == null; @@ -24,7 +27,7 @@ public class Case { public void pieceClone(Case clone) { clone.setPieceCase(this.getPieceCase()); } - + /* public void ajouterPion(Joueur j) { this.pieceCase = new Pion("Pi"+j.getNom().charAt(0), j); } @@ -90,5 +93,62 @@ public class Case { public String toString() { return "Case [cNom=" + cNom + ", cX=" + cX + ", cY=" + cY + ", pieceCase=" + pieceCase + "]"; } +*/ + /** + * @return the nomCase + */ + public String getNomCase() { + return NomCase; + } - } + /** + * @param nomCase the nomCase to set + */ + public void setNomCase(String nomCase) { + NomCase = nomCase; + } + + /** + * @return the posXCase + */ + public int getPosXCase() { + return posXCase; + } + + /** + * @param posXCase the posXCase to set + */ + public void setPosXCase(int posXCase) { + this.posXCase = posXCase; + } + + /** + * @return the posYCase + */ + public int getPosYCase() { + return posYCase; + } + + /** + * @param posYCase the posYCase to set + */ + public void setPosYCase(int posYCase) { + this.posYCase = posYCase; + } + + /** + * @return the pieceCase + */ + public Piece getPieceCase() { + return pieceCase; + } + + /** + * @param pieceCase the pieceCase to set + */ + public void setPieceCase(Piece pieceCase) { + this.pieceCase = pieceCase; + } + + + } \ No newline at end of file diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index 8b8fc25..97a6bd6 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -1,6 +1,6 @@ package piecesEchiquier; -public class Piece { +public abstract class Piece { //variables @@ -29,6 +29,19 @@ public class Piece { this.emplacement.setEmplacement(X, Y); this.depart.setEmplacement(X, Y); } + + //vérifie une éventuelle collision a chaque case + public boolean collision(Case caseArrivee){ + return caseArrivee.estVide(); + } + + //check si la case est alliee + public boolean estAllie(Case caseArrivee) { + return possesseur.equals(caseArrivee.getPieceCase().getPossesseur()) ; + } + + + // gets & sets @@ -70,6 +83,7 @@ public class Piece { this.couleur = couleur; } + From 3b22db3cd36d9338aa69e6874b9cff61c2b22516 Mon Sep 17 00:00:00 2001 From: Anthony Date: Tue, 23 Apr 2019 17:30:04 +0200 Subject: [PATCH 095/271] Update Constructor Title update title on : - Cavalier.java - Fou.java - Piece.java - Pion.java - Reine.java - Roi.java - Tour.java --- src/piecesEchiquier/Cavalier.java | 4 ++-- src/piecesEchiquier/Fou.java | 5 +++-- src/piecesEchiquier/Piece.java | 10 +++++----- src/piecesEchiquier/Pion.java | 5 +++-- src/piecesEchiquier/Reine.java | 5 +++-- src/piecesEchiquier/Roi.java | 9 +++++---- src/piecesEchiquier/Tour.java | 6 +++--- 7 files changed, 24 insertions(+), 20 deletions(-) diff --git a/src/piecesEchiquier/Cavalier.java b/src/piecesEchiquier/Cavalier.java index 70b27b5..8b79faf 100755 --- a/src/piecesEchiquier/Cavalier.java +++ b/src/piecesEchiquier/Cavalier.java @@ -2,8 +2,8 @@ package piecesEchiquier; public class Cavalier extends Piece { - public Cavalier(boolean c, String emp,char l) + public Cavalier(boolean couleur,char l, int x, int y) { - super(c, emp,l); + super(couleur, l, x, y); } } diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java index 280b496..1eee235 100755 --- a/src/piecesEchiquier/Fou.java +++ b/src/piecesEchiquier/Fou.java @@ -2,8 +2,9 @@ package piecesEchiquier; public class Fou extends Piece { - public Fou(boolean c, String emp,char l) { - super(c, emp,l); + public Fou(boolean couleur,char l, int x, int y) + { + super(couleur, l, x, y); } diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index 8b8fc25..25cace8 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -22,12 +22,12 @@ public class Piece { // constructeur - public Piece(boolean couleur,char l, int X, int Y) + public Piece(boolean couleur,char l, int x, int y) { this.setCouleur(couleur); this.lettre = l; - this.emplacement.setEmplacement(X, Y); - this.depart.setEmplacement(X, Y); + this.emplacement = new Position (x, y); + this.depart = new Position(x, y); } // gets & sets @@ -42,11 +42,11 @@ public class Piece { //////////// - public String getEmplacement() { + public Position getEmplacement() { return emplacement; } - public void setEmplacement(String emplacement) { + public void setEmplacement(Position emplacement) { this.emplacement = emplacement; } diff --git a/src/piecesEchiquier/Pion.java b/src/piecesEchiquier/Pion.java index fbb0bbb..e2d3820 100755 --- a/src/piecesEchiquier/Pion.java +++ b/src/piecesEchiquier/Pion.java @@ -2,8 +2,9 @@ package piecesEchiquier; public class Pion extends Piece { - public Pion(String c, String emp,char l) { - super(c,emp,l); + public Pion(boolean couleur,char l, int x, int y) + { + super(couleur, l, x, y); } diff --git a/src/piecesEchiquier/Reine.java b/src/piecesEchiquier/Reine.java index c1ab3ea..7d0349e 100755 --- a/src/piecesEchiquier/Reine.java +++ b/src/piecesEchiquier/Reine.java @@ -2,7 +2,8 @@ package piecesEchiquier; public class Reine extends Piece { - public Reine(boolean c, String emp,char l) { - super(c, emp,l); + public Reine(boolean couleur,char l, int x, int y) + { + super(couleur, l, x, y); } } diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index 3c68073..da7fe04 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -2,13 +2,14 @@ package piecesEchiquier; public class Roi extends Piece { - public Roi(String c, String emp, char l) { - super(c, emp,l); + public Roi(boolean couleur,char l, int x, int y) + { + super(couleur, l, x, y); } public void enEchec() { - int[][] positionCourante; - positionCourante=Piece.getPositionCourante(); + Position positionCourante; + positionCourante= super.getEmplacement(); } diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java index 7fbd2bb..3515313 100755 --- a/src/piecesEchiquier/Tour.java +++ b/src/piecesEchiquier/Tour.java @@ -2,9 +2,9 @@ package piecesEchiquier; public class Tour extends Piece { - - public Tour(String c, String emp, char l) { - super(c, emp,l); + public Tour(boolean couleur,char l, int x, int y) + { + super(couleur, l, x, y); } } From 75db360fe703a31d5179f897b2d0f73dfe55b735 Mon Sep 17 00:00:00 2001 From: Chiara Relevat Date: Tue, 23 Apr 2019 19:32:14 +0200 Subject: [PATCH 096/271] adaptation aux nouveaux constructeur --- src/piecesEchiquier/Echiquier.java | 82 +++++++++++++++--------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 28f2cd3..ae17d9e 100755 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -3,55 +3,55 @@ package piecesEchiquier; public class Echiquier { private String[][] codes = -{ -{"8A","8B","8C","8D","8E","8F","8G","8H"}, -{"7A","7B","7C","7D","7E","7F","7G","7H"}, -{"6A","6B","6C","6D","6E","6F","6G","6H"}, -{"5A","5B","5C","5D","5E","5F","5G","5H"}, -{"4A","4B","4C","4D","4E","4F","4G","4H"}, -{"3A","3B","3C","3D","3E","3F","3G","3H"}, -{"2A","2B","2C","2D","2E","2F","2G","2H"}, -{"1A","1B","1C","1D","1E","1F","1G","1H"} + { +{"A8","B8","C8","D8","E8","F8","G8","H8"}, +{"A7","B7","C7","D7","E7","F7","G7","H7"}, +{"A6","B6","C6","D6","E6","F6","G6","H6"}, +{"A5","B5","C5","D5","E5","F5","G5","H5"}, +{"A4","B4","C4","D4","E4","F4","G4","H4"}, +{"A3","B3","C3","D3","E3","F3","G3","H3"}, +{"A2","B2","C2","D2","E2","F2","G2","H2"}, +{"A1","B1","C1","D1","E1","F1","G1","H1"} }; //a refaire - public Pion pionB1 = new Pion("Blanc",codes[6][0],'P'); - public Pion pionB2 = new Pion("Blanc",codes[6][1],'P'); - public Pion pionB3 = new Pion("Blanc",codes[6][2],'P'); - public Pion pionB4 = new Pion("Blanc",codes[6][3],'P'); - public Pion pionB5 = new Pion("Blanc",codes[6][4],'P'); - public Pion pionB6 = new Pion("Blanc",codes[6][5],'P'); - public Pion pionB7 = new Pion("Blanc",codes[6][6],'P'); - public Pion pionB8 = new Pion("Blanc",codes[6][7],'P'); + public Pion pionB1 = new Pion(true, 'P', 6, 0); + public Pion pionB2 = new Pion(true, 'P', 6, 1); + public Pion pionB3 = new Pion(true, 'P', 6, 2); + public Pion pionB4 = new Pion(true, 'P', 6, 3); + public Pion pionB5 = new Pion(true, 'P', 6, 4); + public Pion pionB6 = new Pion(true, 'P', 6, 5); + public Pion pionB7 = new Pion(true, 'P', 6, 6); + public Pion pionB8 = new Pion(true, 'P', 6, 7); - public Pion pionN1 = new Pion("Noir",codes[1][0],'P'); - public Pion pionN2 = new Pion("Noir",codes[1][1],'P'); - public Pion pionN3 = new Pion("Noir",codes[1][2],'P'); - public Pion pionN4 = new Pion("Noir",codes[1][3],'P'); - public Pion pionN5 = new Pion("Noir",codes[1][4],'P'); - public Pion pionN6 = new Pion("Noir",codes[1][5],'P'); - public Pion pionN7 = new Pion("Noir",codes[1][6],'P'); - public Pion pionN8 = new Pion("Noir",codes[1][7],'P'); + public Pion pionN1 = new Pion(false, 'P', 1, 0); + public Pion pionN2 = new Pion(false, 'P', 1, 1); + public Pion pionN3 = new Pion(false, 'P', 1, 2); + public Pion pionN4 = new Pion(false, 'P', 1, 3); + public Pion pionN5 = new Pion(false, 'P', 1, 4); + public Pion pionN6 = new Pion(false, 'P', 1, 5); + public Pion pionN7 = new Pion(false, 'P', 1, 6); + public Pion pionN8 = new Pion(false, 'P', 1, 7); - public Tour TourB1 = new Tour("Blanc",codes[7][0],'T'); - public Tour TourB2 = new Tour("Blanc",codes[7][7],'T'); - public Tour TourN1 = new Tour("Noir",codes[0][0],'T'); - public Tour TourN2 = new Tour("Noir",codes[0][7],'T'); + public Tour TourB1 = new Tour(true, 'T', 7, 0); + public Tour TourB2 = new Tour(true, 'T', 7, 7); + public Tour TourN1 = new Tour(false, 'T', 0, 0); + public Tour TourN2 = new Tour(false, 'T', 0, 7); - public Cavalier CavalierB1 = new Cavalier("Blanc",codes[7][1],'C'); - public Cavalier CavalierB2 = new Cavalier("Blanc",codes[7][6],'C'); - public Cavalier CavalierN1 = new Cavalier("Noir",codes[0][1],'C'); - public Cavalier CavalierN2 = new Cavalier("Noir",codes[0][6],'C'); + public Cavalier CavalierB1 = new Cavalier(true, 'C', 7, 1); + public Cavalier CavalierB2 = new Cavalier(true, 'C', 7, 6); + public Cavalier CavalierN1 = new Cavalier(false, 'C', 0, 1); + public Cavalier CavalierN2 = new Cavalier(false, 'C', 0, 6); - public Fou FouB1 = new Fou("Blanc",codes[7][2],'F'); - public Fou FouB2 = new Fou("Blanc",codes[7][5],'F'); - public Fou FouN1 = new Fou("Noir",codes[0][2],'F'); - public Fou FouN2 = new Fou("Noir",codes[0][5],'F'); + public Fou FouB1 = new Fou(true ,'F' , 7, 2); + public Fou FouB2 = new Fou(true ,'F' , 7, 5); + public Fou FouN1 = new Fou(false ,'F' , 0, 2); + public Fou FouN2 = new Fou(false ,'F' , 0, 5); - public Reine ReineB1 = new Reine("Blanc",codes[7][4],'R'); - public Reine ReineN1 = new Reine("Noir",codes[0][4],'R'); + public Reine ReineB1 = new Reine(true ,'R' , 7, 4); + public Reine ReineN1 = new Reine(false ,'R' , 0, 4); - public Roi RoiB1 = new Roi("Blanc",codes[7][3],'K'); - public Roi RoiN1 = new Roi("Noir",codes[0][3],'K'); + public Roi RoiB1 = new Roi(true ,'K' , 7, 3); + public Roi RoiN1 = new Roi(false ,'K' , 0, 3); // A choisir soit on enleve abstract de piece pour avoir le vide soit on garde la classe vide From 4eecbc579b56cb86a4d85845a3290a4625c012d7 Mon Sep 17 00:00:00 2001 From: Manon Date: Fri, 3 May 2019 18:32:02 +0200 Subject: [PATCH 097/271] Changements ensemble --- src/piecesEchiquier/Cavalier.java | 4 +- src/piecesEchiquier/Echiquier.java | 219 +++++++++++++++++++++++------ src/piecesEchiquier/Fou.java | 4 +- src/piecesEchiquier/Piece.java | 47 ++++--- src/piecesEchiquier/Pion.java | 23 ++- src/piecesEchiquier/Plateau.java | 162 --------------------- src/piecesEchiquier/Position.java | 24 ++-- src/piecesEchiquier/Reine.java | 4 +- src/piecesEchiquier/Roi.java | 7 +- src/piecesEchiquier/Tour.java | 5 +- src/visuel/main.java | 66 ++++----- 11 files changed, 288 insertions(+), 277 deletions(-) delete mode 100755 src/piecesEchiquier/Plateau.java diff --git a/src/piecesEchiquier/Cavalier.java b/src/piecesEchiquier/Cavalier.java index 8b79faf..1f4f75e 100755 --- a/src/piecesEchiquier/Cavalier.java +++ b/src/piecesEchiquier/Cavalier.java @@ -2,8 +2,8 @@ package piecesEchiquier; public class Cavalier extends Piece { - public Cavalier(boolean couleur,char l, int x, int y) + public Cavalier(String c, String emp,char l, Position pos) { - super(couleur, l, x, y); + super(c,emp,l,pos); } } diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index ae17d9e..2c1bff1 100755 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -1,9 +1,10 @@ package piecesEchiquier; +import joueurs.Joueur; + public class Echiquier { - private String[][] codes = - { +{ {"A8","B8","C8","D8","E8","F8","G8","H8"}, {"A7","B7","C7","D7","E7","F7","G7","H7"}, {"A6","B6","C6","D6","E6","F6","G6","H6"}, @@ -13,48 +14,46 @@ public class Echiquier { {"A2","B2","C2","D2","E2","F2","G2","H2"}, {"A1","B1","C1","D1","E1","F1","G1","H1"} }; -//a refaire - public Pion pionB1 = new Pion(true, 'P', 6, 0); - public Pion pionB2 = new Pion(true, 'P', 6, 1); - public Pion pionB3 = new Pion(true, 'P', 6, 2); - public Pion pionB4 = new Pion(true, 'P', 6, 3); - public Pion pionB5 = new Pion(true, 'P', 6, 4); - public Pion pionB6 = new Pion(true, 'P', 6, 5); - public Pion pionB7 = new Pion(true, 'P', 6, 6); - public Pion pionB8 = new Pion(true, 'P', 6, 7); + private Pion pionB1 = new Pion("Blanc",codes[6][0],'P',new Position(1,2)); + private Pion pionB2 = new Pion("Blanc",codes[6][1],'P',new Position(2,2)); + private Pion pionB3 = new Pion("Blanc",codes[6][2],'P',new Position(3,2)); + private Pion pionB4 = new Pion("Blanc",codes[6][3],'P',new Position(4,2)); + private Pion pionB5 = new Pion("Blanc",codes[6][4],'P',new Position(5,2)); + private Pion pionB6 = new Pion("Blanc",codes[6][5],'P',new Position(6,2)); + private Pion pionB7 = new Pion("Blanc",codes[6][6],'P',new Position(7,2)); + private Pion pionB8 = new Pion("Blanc",codes[6][7],'P',new Position(8,2)); - public Pion pionN1 = new Pion(false, 'P', 1, 0); - public Pion pionN2 = new Pion(false, 'P', 1, 1); - public Pion pionN3 = new Pion(false, 'P', 1, 2); - public Pion pionN4 = new Pion(false, 'P', 1, 3); - public Pion pionN5 = new Pion(false, 'P', 1, 4); - public Pion pionN6 = new Pion(false, 'P', 1, 5); - public Pion pionN7 = new Pion(false, 'P', 1, 6); - public Pion pionN8 = new Pion(false, 'P', 1, 7); + private Pion pionN1 = new Pion("Noir",codes[1][0],'p',new Position(1,7)); + private Pion pionN2 = new Pion("Noir",codes[1][1],'p',new Position(2,7)); + private Pion pionN3 = new Pion("Noir",codes[1][2],'p',new Position(3,7)); + private Pion pionN4 = new Pion("Noir",codes[1][3],'p',new Position(4,7)); + private Pion pionN5 = new Pion("Noir",codes[1][4],'p',new Position(5,7)); + private Pion pionN6 = new Pion("Noir",codes[1][5],'p',new Position(6,7)); + private Pion pionN7 = new Pion("Noir",codes[1][6],'p',new Position(7,7)); + private Pion pionN8 = new Pion("Noir",codes[1][7],'p',new Position(8,7)); - public Tour TourB1 = new Tour(true, 'T', 7, 0); - public Tour TourB2 = new Tour(true, 'T', 7, 7); - public Tour TourN1 = new Tour(false, 'T', 0, 0); - public Tour TourN2 = new Tour(false, 'T', 0, 7); + private Tour TourB1 = new Tour("Blanc",codes[7][0],'T',new Position(1,1)); + private Tour TourB2 = new Tour("Blanc",codes[7][7],'T',new Position(8,1)); + private Tour TourN1 = new Tour("Noir",codes[0][0],'t',new Position(1,8)); + private Tour TourN2 = new Tour("Noir",codes[0][7],'t',new Position(8,8)); - public Cavalier CavalierB1 = new Cavalier(true, 'C', 7, 1); - public Cavalier CavalierB2 = new Cavalier(true, 'C', 7, 6); - public Cavalier CavalierN1 = new Cavalier(false, 'C', 0, 1); - public Cavalier CavalierN2 = new Cavalier(false, 'C', 0, 6); + private Cavalier CavalierB1 = new Cavalier("Blanc",codes[7][1],'C',new Position(2,1)); + private Cavalier CavalierB2 = new Cavalier("Blanc",codes[7][6],'C',new Position(7,1)); + private Cavalier CavalierN1 = new Cavalier("Noir",codes[0][1],'c',new Position(2,8)); + private Cavalier CavalierN2 = new Cavalier("Noir",codes[0][6],'c',new Position(7,8)); - public Fou FouB1 = new Fou(true ,'F' , 7, 2); - public Fou FouB2 = new Fou(true ,'F' , 7, 5); - public Fou FouN1 = new Fou(false ,'F' , 0, 2); - public Fou FouN2 = new Fou(false ,'F' , 0, 5); + private Fou FouB1 = new Fou("Blanc",codes[7][2],'F',new Position(3,1)); + private Fou FouB2 = new Fou("Blanc",codes[7][5],'F',new Position(6,1)); + private Fou FouN1 = new Fou("Noir",codes[0][2],'f',new Position(3,8)); + private Fou FouN2 = new Fou("Noir",codes[0][5],'f',new Position(6,8)); - public Reine ReineB1 = new Reine(true ,'R' , 7, 4); - public Reine ReineN1 = new Reine(false ,'R' , 0, 4); + private Reine ReineB1 = new Reine("Blanc",codes[7][4],'R',new Position(4,1)); + private Reine ReineN1 = new Reine("Noir",codes[0][4],'r',new Position(4,8)); - public Roi RoiB1 = new Roi(true ,'K' , 7, 3); - public Roi RoiN1 = new Roi(false ,'K' , 0, 3); + private Roi RoiB1 = new Roi("Blanc",codes[7][3],'K',new Position(5,1)); + private Roi RoiN1 = new Roi("Noir",codes[0][3],'k',new Position(5,8)); // A choisir soit on enleve abstract de piece pour avoir le vide soit on garde la classe vide - //private Vide vide = new Vide(); private Piece vide = new Piece(); @@ -88,6 +87,11 @@ public class Echiquier { } + public String[][] getCodes() { + return codes; + } + + public String toString() { @@ -96,20 +100,155 @@ public class Echiquier { { for (int j = 0; j < 8;j++) { - echec += echiquier[i][j].getLettre(); + echec +=echiquier[i][j].getLettre(); } echec += "\n"; } return echec; } - - public void deplacer(int x1,int y1,int x2,int y2) + /* + public boolean verifierSelection(Joueur J, String A) { + for (int i = 1; i <9;i++) + { + for (int j = 1; j < 9;j++) { + if (getCodes()[i][j] == A) + { + if (this.getEchiquier()[i][j] == vide) + { + System.out.println("Vous avez choisi une case vide. Recommencez."); + return false; + } + else if (this.getEchiquier()[i][j].getCouleur() != J.getCouleur()) + { + System.out.println("Le pion choisi n'est pas de votre faction. Recommencez."); + return false; + } + else + return true; + } + } + } + System.out.println("Un de vos codes est faux. Recommencez."); + return false; + } + + public boolean verifierPlacementEtDeplacement(Joueur J, String A) + { + for (int i = 1; i <9;i++) + { + for (int j = 1; j < 9;j++) { + if (getCodes()[i][j] == A) + { + if (this.getEchiquier()[i][j].getCouleur() == J.getCouleur()) + { + System.out.println("Le pion que vous voulez manger est de votre faction. Recommencez."); + return false; + }else if (this.getEchiquier()[i][j].deplacable) + { + + } + else + return true; + } + } + } + System.out.println("Un de vos codes est faux. Recommencez."); + return false; + } + */ + + public boolean VerifFinale(Joueur J, String A, String B) + { + int i = -1; + int j = -1; + int k; + int l; + + do { + i++; + j = -1; + do { + j++; + if (getCodes()[i][j].equals(A)) + { + if (this.getEchiquier()[i][j] == vide) + { + System.out.println("Vous avez choisi une case vide. Recommencez."); + return false; + } + else if (this.getEchiquier()[i][j].getCouleur() != J.getCouleur()) + { + System.out.println("Le pion choisi n'est pas de votre faction. Recommencez."); + return false; + } + } + + }while(( (getCodes()[i][j].equals(A)) == false) && (j+1 < codes.length)); + + }while((getCodes()[i][j].equals(A) == false) && (i+1 < codes.length)); + if (i == 9) + { + System.out.println("Code de la pice a dplacer invalide. Recommencez."); + return false; + } + + + + + for (k = 0; k < codes.length;k++) + { + for (l = 0; l < codes.length;l++) { + if (getCodes()[k][l].equals(B) == true) + { + if (this.getEchiquier()[k][l].getCouleur() == J.getCouleur()) + { + System.out.println("Le pion que vous voulez manger est de votre faction. Recommencez."); + return false; + }else if (this.getEchiquier()[i][j].deplacable(this.getEchiquier()[k][l]) == false) + { + System.out.println("Dplacement impossible. Recommencez."); + return false; + }else + { + System.out.println("Choix valids. Dplacement en cours."); + this.getEchiquier()[k][l]=this.getEchiquier()[i][j]; + this.getEchiquier()[i][j] = vide; + return true; + } + + } + } + } + System.out.println("Un de vos codes est faux. Recommencez."); + return false; + } + + /* + public Piece recupererPiece(Joueur J, String A) + { + for (int i = 1; i <9;i++) + { + for (int j = 1; j < 9;j++) { + if (getCodes()[i][j] == A) + { + return this.getEchiquier()[i][j]; + } + } + } + }*/ + + /* + public void deplacer(String A , String B) + { + if (this.getEchiquier()[x2][y2] != vide && this.getEchiquier()[x2][y2].getCouleur() != this.getEchiquier()[x1][y1].getCouleur()) System.out.println("Vous avez manger une piece adverse !"); this.getEchiquier()[x2][y2] = this.getEchiquier()[x1][y1]; this.getEchiquier()[x1][y1] = vide; + */ + } -} + diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java index 1eee235..cf69a39 100755 --- a/src/piecesEchiquier/Fou.java +++ b/src/piecesEchiquier/Fou.java @@ -2,9 +2,9 @@ package piecesEchiquier; public class Fou extends Piece { - public Fou(boolean couleur,char l, int x, int y) + public Fou(String c, String emp,char l, Position pos) { - super(couleur, l, x, y); + super(c,emp,l,pos); } diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index 09e3c6f..9b9bc88 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -1,15 +1,16 @@ + package piecesEchiquier; -public abstract class Piece { +public class Piece { //variables - private boolean couleur; /* True = blanc & Flase = noir */ - private Position emplacement; + private String couleur; /* True = blanc & Flase = noir */ + private String emplacement; private char lettre = '.'; private boolean enVie = true; - private Position depart; + private Position position; @@ -22,24 +23,24 @@ public abstract class Piece { // constructeur - public Piece(boolean couleur,char l, int x, int y) + public Piece(String couleur,String emp, char l, Position pos) { - this.setCouleur(couleur); + this.couleur = couleur; this.lettre = l; - this.emplacement = new Position (x, y); - this.depart = new Position(x, y); + this.emplacement = emp; + this.position = pos; } - //vérifie une éventuelle collision a chaque case +/* //vérifie une éventuelle collision a chaque case public boolean collision(Case caseArrivee){ return caseArrivee.estVide(); - } - + }*/ + /* //check si la case est alliee public boolean estAllie(Case caseArrivee) { return possesseur.equals(caseArrivee.getPieceCase().getPossesseur()) ; } - +*/ @@ -55,11 +56,11 @@ public abstract class Piece { //////////// - public Position getEmplacement() { + public String getEmplacement() { return emplacement; } - public void setEmplacement(Position emplacement) { + public void setEmplacement(String emplacement) { this.emplacement = emplacement; } @@ -75,14 +76,28 @@ public abstract class Piece { /////////// - public boolean isCouleur() { + public String getCouleur() { return couleur; } - public void setCouleur(boolean couleur) { + public void setCouleur(String couleur) { this.couleur = couleur; } + public Position getPosition() { + return position; + } + + public void setPosition(Position position) { + this.position = position; + } + + public boolean deplacable(Piece p) + { + return true; + } + + diff --git a/src/piecesEchiquier/Pion.java b/src/piecesEchiquier/Pion.java index e2d3820..17c330c 100755 --- a/src/piecesEchiquier/Pion.java +++ b/src/piecesEchiquier/Pion.java @@ -1,11 +1,26 @@ package piecesEchiquier; public class Pion extends Piece { - - public Pion(boolean couleur,char l, int x, int y) - { - super(couleur, l, x, y); + public Pion(String c, String emp,char l, Position pos) { + + super(c,emp,l, pos); + + } + public boolean deplacable(Piece p) + { + if (this.getPosition().getX() != p.getPosition().getX()) + { + return false; + } + else if (p.getPosition().getY()-1 > this.getPosition().getY()) + { + return false; + } + else + return true; + } + } diff --git a/src/piecesEchiquier/Plateau.java b/src/piecesEchiquier/Plateau.java deleted file mode 100755 index ada7532..0000000 --- a/src/piecesEchiquier/Plateau.java +++ /dev/null @@ -1,162 +0,0 @@ -package piecesEchiquier; - -public class Plateau { - //attributs - private Case[][] cases; - - //constructeur - public Plateau() { - this.cases= new Case[8][8]; - } - - //1 - this.cases[0][0] = new Case("A1",1,1); - this.cases[1][0] = new Case("B1",2,1); - this.cases[2][0] = new Case("C1",3,1); - this.cases[3][0] = new Case("D1",4,1); - this.cases[4][0] = new Case("E1",5,1); - this.cases[5][0] = new Case("F1",6,1); - this.cases[6][0] = new Case("G1",7,1); - this.cases[7][0] = new Case("H1",8,1); - - //2 - this.cases[0][1] = new Case("A2",1,2); - this.cases[1][1] = new Case("B2",2,2); - this.cases[2][1] = new Case("C2",3,2); - this.cases[3][1] = new Case("D2",4,2); - this.cases[4][1] = new Case("E2",5,2); - this.cases[5][1] = new Case("F2",6,2); - this.cases[6][1] = new Case("G2",7,2); - this.cases[7][1] = new Case("H2",8,2); - - //3 - this.cases[0][2] = new Case("A3",1,3); - this.cases[1][2] = new Case("B3",2,3); - this.cases[2][2] = new Case("C3",3,3); - this.cases[3][2] = new Case("D3",4,3); - this.cases[4][2] = new Case("E3",5,3); - this.cases[5][2] = new Case("F3",6,3); - this.cases[6][2] = new Case("G3",7,3); - this.cases[7][2] = new Case("H3",8,3); - - //4 - this.cases[0][3] = new Case("A4",1,4); - this.cases[1][3] = new Case("B4",2,4); - this.cases[2][3] = new Case("C4",3,4); - this.cases[3][3] = new Case("D4",4,4); - this.cases[4][3] = new Case("E4",5,4); - this.cases[5][3] = new Case("F4",6,4); - this.cases[6][3] = new Case("G4",7,4); - this.cases[7][3] = new Case("H4",8,4); - - //5 - this.cases[0][4] = new Case("A5",1,5); - this.cases[1][4] = new Case("B5",2,5); - this.cases[2][4] = new Case("C5",3,5); - this.cases[3][4] = new Case("D5",4,5); - this.cases[4][4] = new Case("E5",5,5); - this.cases[5][4] = new Case("F5",6,5); - this.cases[6][4] = new Case("G5",7,5); - this.cases[7][4] = new Case("H5",8,5); - - //6 - this.cases[0][5] = new Case("A6",1,6); - this.cases[1][5] = new Case("B6",2,6); - this.cases[2][5] = new Case("C6",3,6); - this.cases[3][5] = new Case("D6",4,6); - this.cases[4][5] = new Case("E6",5,6); - this.cases[5][5] = new Case("F6",6,6); - this.cases[6][5] = new Case("G6",7,6); - this.cases[7][5] = new Case("H6",8,6); - - //7 - this.cases[0][6] = new Case("A7",1,7); - this.cases[1][6] = new Case("B7",2,7); - this.cases[2][6] = new Case("C7",3,7); - this.cases[3][6] = new Case("D7",4,7); - this.cases[4][6] = new Case("E7",5,7); - this.cases[5][6] = new Case("F7",6,7); - this.cases[6][6] = new Case("G7",7,7); - this.cases[7][6] = new Case("H7",8,7); - - //8 - this.cases[0][7] = new Case("A8",1,8); - this.cases[1][7] = new Case("B8",2,8); - this.cases[2][7] = new Case("C8",3,8); - this.cases[3][7] = new Case("D8",4,8); - this.cases[4][7] = new Case("E8",5,8); - this.cases[5][7] = new Case("F8",6,8); - this.cases[6][7] = new Case("G8",7,8); - this.cases[7][7] = new Case("H8",8,8); - } - - - public void afficherPlateau() { - for (int j = 7 ; j > -1 ; j--) { - System.out.print(j+1+" |"); - for (int i = 0 ; i < 8 ; i++){ - if(this.getCases()[i][j].getPieceCase() == null) { - System.out.print(" |"); - } - else { - System.out.print(this.getCases()[i][j].getPieceCase().getNom()+"|"); - } - - } - System.out.println(); - System.out.println(" +---+---+---+---+---+---+---+---+"); - } - System.out.print(" A B C D E F G H "); - System.out.println(); - } - - //place les points au commencement de la partie - public void ajouterPions(Joueur J1, Joueur J2) { - for (int x = 0; x<8;x++) - { - cases[x][1].ajouterPion(J1); - cases[x][6].ajouterPion(J2); - - } - cases[0][0].ajouterTour(J1); - cases[1][0].ajouterCavalier(J1); - cases[2][0].ajouterFou(J1); - cases[3][0].ajouterRoi(J1); - cases[4][0].ajouterReine(J1); - cases[5][0].ajouterFou(J1); - cases[6][0].ajouterCavalier(J1); - cases[7][0].ajouterTour(J1); - - cases[0][7].ajouterTour(J2); - cases[1][7].ajouterCavalier(J2); - cases[2][7].ajouterFou(J2); - cases[3][7].ajouterReine(J2); - cases[4][7].ajouterRoi(J2); - cases[5][7].ajouterFou(J2); - cases[6][7].ajouterCavalier(J2); - cases[7][7].ajouterTour(J2); - - } - - //simplification pour bouger des pieces - public static boolean move(Plateau p, Joueur J, String depart, String arrivee) { - Case dep = Case.stringToCase(p, depart); - if(dep == null) { - System.err.println("Case Inexistante"); - return false; - } - int dX = dep.getcX(); - int dY = dep.getcY(); - return p.getCases()[dX-1][dY-1].getPieceCase().move(p,J,depart,arrivee); - } - - //getters and setters - public Case[][] getCases() { - return cases; - } - - public void setCases(Case[][] cases) { - this.cases = cases; - } - -} diff --git a/src/piecesEchiquier/Position.java b/src/piecesEchiquier/Position.java index 9b5883e..f83091d 100755 --- a/src/piecesEchiquier/Position.java +++ b/src/piecesEchiquier/Position.java @@ -1,8 +1,8 @@ package piecesEchiquier; public class Position { - private int ligne; - private int colonne; + private int x; + private int y; public Position() { @@ -10,24 +10,24 @@ public class Position { public Position(int x, int y) { - ligne = x; - colonne = y; + this.x = x; + this.y = y; } - public int getLigne() { - return ligne; + public int getX() { + return x; } - public void setLigne(int ligne) { - this.ligne = ligne; + public void setX(int x) { + this.x = x; } - public int getColonne() { - return colonne; + public int getY() { + return y; } - public void setColonne(int colonne) { - this.colonne = colonne; + public void setY(int y) { + this.y = y; } diff --git a/src/piecesEchiquier/Reine.java b/src/piecesEchiquier/Reine.java index 7d0349e..e1cc68f 100755 --- a/src/piecesEchiquier/Reine.java +++ b/src/piecesEchiquier/Reine.java @@ -2,8 +2,8 @@ package piecesEchiquier; public class Reine extends Piece { - public Reine(boolean couleur,char l, int x, int y) + public Reine(String c, String emp,char l, Position pos) { - super(couleur, l, x, y); + super(c,emp,l,pos); } } diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index da7fe04..988d99a 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -2,15 +2,16 @@ package piecesEchiquier; public class Roi extends Piece { - public Roi(boolean couleur,char l, int x, int y) + public Roi(String c, String emp,char l, Position pos) { - super(couleur, l, x, y); + super(c,emp,l,pos); } + /* public void enEchec() { Position positionCourante; positionCourante= super.getEmplacement(); } - + */ } diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java index 3515313..97d03f1 100755 --- a/src/piecesEchiquier/Tour.java +++ b/src/piecesEchiquier/Tour.java @@ -2,9 +2,10 @@ package piecesEchiquier; public class Tour extends Piece { - public Tour(boolean couleur,char l, int x, int y) + + public Tour(String c, String emp,char l, Position pos) { - super(couleur, l, x, y); + super(c,emp,l,pos); } } diff --git a/src/visuel/main.java b/src/visuel/main.java index 4c6b2ba..2412265 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -5,7 +5,6 @@ import java.util.Scanner; import joueurs.Joueur; import piecesEchiquier.Echiquier; -import piecesEchiquier.Position; public class main { @@ -14,25 +13,20 @@ public class main { //ouvre une porte pour input Scanner sc = new Scanner(System.in); + // variable tempo pour tests boolean jeu = true; - //position de la piece choisie et l'emplacement ou la poser - Position p1 = new Position(); - Position p2 = new Position(); + // joueurs APRES ON DEMANDERA NOM Joueur j1 = new Joueur("Manon","Blanc"); Joueur j2 = new Joueur("Autre","Noir"); // vars pour deplacer - /* - int x1; - int y1; - int x2; - int y2; - */ - String dep; + String A; + String B; + System.out.println("Bienvenue dans ce jeu d'echec sur console !\n"); @@ -46,41 +40,49 @@ public class main { System.out.println(e.toString()); // JOUEUR1 + System.out.println("Tour de "+j1.getNom()+"\n"); - do - { - System.out.println("Quelle pièce voulez vous déplacer ? Donnez la combinaison lettre/chiffre.\n"); - String initial = sc.nextLine(); - p1 = e.traduction(initial); - }while (p1 == null); - do - { - System.out.println("A quel endroit la poser ? Donnez la combinaison lettre/chiffre.\\n"); - //entrer coordonnées endroit visé APRES ON PASSERA PAR DIRECT COMBINAISON LETTRE-CHIFFRE + do { + System.out.println("Quelle pice voulez vous dplacer ? Donnez le code correspondant la pice dplacer(ex : A1).\n"); + + //entrer coordonnes piece a bouger APRES ON PASSERA PAR DIRECT COMBINAISON LETTRE-CHIFFRE + A = sc.nextLine(); + //if (A.equals("A1")) + // System.out.println("OK"); + System.out.println("A quel endroit la poser ? Donnez le code correspondant l'endroit o poser la pice.\n"); + //entrer coordonnes endroit vis APRES ON PASSERA PAR DIRECT COMBINAISON LETTRE-CHIFFRE + B = sc.nextLine(); + + }while (e.VerifFinale(j1, A,B) != true); - String newemp = sc.nextLine(); - p2 = e.traduction(newemp); - }while (p2 == null); - - // DEPLACEMENT (prototype minimum juste pour voir) - e.deplacer(p1,p2); + //e.deplacer(A,B); //REAFFICHAGE ECHIQUIER System.out.println(e.toString()); // JOUEUR2 - /* - System.out.println("Tour de"+j2.getNom()+"\n"); - System.out.println("Quelle pièce voulez vous déplacer ? Donnez le numero de ligne puis de colonne.\n"); + /*System.out.println("Tour de"+j2.getNom()+"\n"); + System.out.println("Quelle pice voulez vous dplacer ? Donnez le numero de ligne puis de colonne.\n"); x1 = sc.nextInt(); y1 = sc.nextInt(); System.out.println("A quel endroit la poser ? Donnez le numero de ligne puis de colonne.\n"); x2 = sc.nextInt(); y2 = sc.nextInt(); - e.deplacer(x1-1,y1-1,x2-1,y2-1); -*/ + e.deplacer(x1-1,y1-1,x2-1,y2-1);*/ + do { + System.out.println("Quelle pice voulez vous dplacer ? Donnez le code correspondant la pice dplacer(ex : A1).\n"); + + //entrer coordonnes piece a bouger APRES ON PASSERA PAR DIRECT COMBINAISON LETTRE-CHIFFRE + A = sc.nextLine(); + + System.out.println("A quel endroit la poser ? Donnez le code correspondant l'endroit o poser la pice.\n"); + //entrer coordonnes endroit vis APRES ON PASSERA PAR DIRECT COMBINAISON LETTRE-CHIFFRE + B = sc.nextLine(); + + }while (e.VerifFinale(j2, A,B) != true); + //jeu = false; }while (jeu == true); From 7a021bdfffd438d396a6a07483c6c2da58911f93 Mon Sep 17 00:00:00 2001 From: Manon Date: Fri, 3 May 2019 19:19:37 +0200 Subject: [PATCH 098/271] =?UTF-8?q?transformation=20vide=20->=20new=20piec?= =?UTF-8?q?e=20et=20bug=20r=C3=A9par=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/piecesEchiquier/Echiquier.java | 60 +++--------------------------- src/piecesEchiquier/Piece.java | 20 ++++++---- src/visuel/main.java | 6 --- 3 files changed, 17 insertions(+), 69 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 2c1bff1..0d7a48c 100755 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -61,14 +61,15 @@ public class Echiquier { { {TourN1,CavalierN1,FouN1,RoiN1,ReineN1,FouN2,CavalierN2,TourN2}, {pionN1,pionN2,pionN3,pionN4,pionN5,pionN6,pionN7,pionN8}, - {vide,vide,vide,vide,vide,vide,vide,vide}, - {vide,vide,vide,vide,vide,vide,vide,vide}, - {vide,vide,vide,vide,vide,vide,vide,vide}, - {vide,vide,vide,vide,vide,vide,vide,vide}, + {new Piece(new Position(1,6)),new Piece(new Position(2,6)),new Piece(new Position(3,6)),new Piece(new Position(4,6)),new Piece(new Position(5,6)),new Piece(new Position(6,6)),new Piece(new Position(7,6)),new Piece(new Position(8,6))}, + {new Piece(new Position(1,5)),new Piece(new Position(2,5)),new Piece(new Position(3,5)),new Piece(new Position(4,5)),new Piece(new Position(5,5)),new Piece(new Position(6,5)),new Piece(new Position(7,5)),new Piece(new Position(8,5))}, + {new Piece(new Position(1,4)),new Piece(new Position(2,4)),new Piece(new Position(3,4)),new Piece(new Position(4,4)),new Piece(new Position(5,4)),new Piece(new Position(6,4)),new Piece(new Position(7,4)),new Piece(new Position(8,4))}, + {new Piece(new Position(1,3)),new Piece(new Position(2,3)),new Piece(new Position(3,3)),new Piece(new Position(4,3)),new Piece(new Position(5,3)),new Piece(new Position(6,3)),new Piece(new Position(7,3)),new Piece(new Position(8,3))}, {pionB1,pionB2,pionB3,pionB4,pionB5,pionB6,pionB7,pionB8}, {TourB1,CavalierB1,FouB1,RoiB1,ReineB1,FouB2,CavalierB2,TourB2} }; + public Echiquier() { @@ -106,57 +107,6 @@ public class Echiquier { } return echec; } - /* - public boolean verifierSelection(Joueur J, String A) - { - for (int i = 1; i <9;i++) - { - for (int j = 1; j < 9;j++) { - if (getCodes()[i][j] == A) - { - if (this.getEchiquier()[i][j] == vide) - { - System.out.println("Vous avez choisi une case vide. Recommencez."); - return false; - } - else if (this.getEchiquier()[i][j].getCouleur() != J.getCouleur()) - { - System.out.println("Le pion choisi n'est pas de votre faction. Recommencez."); - return false; - } - else - return true; - } - } - } - System.out.println("Un de vos codes est faux. Recommencez."); - return false; - } - - public boolean verifierPlacementEtDeplacement(Joueur J, String A) - { - for (int i = 1; i <9;i++) - { - for (int j = 1; j < 9;j++) { - if (getCodes()[i][j] == A) - { - if (this.getEchiquier()[i][j].getCouleur() == J.getCouleur()) - { - System.out.println("Le pion que vous voulez manger est de votre faction. Recommencez."); - return false; - }else if (this.getEchiquier()[i][j].deplacable) - { - - } - else - return true; - } - } - } - System.out.println("Un de vos codes est faux. Recommencez."); - return false; - } - */ public boolean VerifFinale(Joueur J, String A, String B) { diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index 9b9bc88..076924d 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -4,13 +4,12 @@ package piecesEchiquier; public class Piece { - //variables - - private String couleur; /* True = blanc & Flase = noir */ - private String emplacement; + private String couleur; + //private Position emplacementIni; + private String emp; private char lettre = '.'; private boolean enVie = true; - private Position position; + private Position position = new Position(0,0); @@ -22,12 +21,17 @@ public class Piece { } // constructeur + public Piece(Position pos) + { + position = pos; + } public Piece(String couleur,String emp, char l, Position pos) { this.couleur = couleur; this.lettre = l; - this.emplacement = emp; + //this.emplacementIni = emp; + this.emp = emp; this.position = pos; } @@ -55,7 +59,7 @@ public class Piece { } //////////// - + /* public String getEmplacement() { return emplacement; } @@ -63,7 +67,7 @@ public class Piece { public void setEmplacement(String emplacement) { this.emplacement = emplacement; } - +*/ /////////// public boolean isEnVie() { diff --git a/src/visuel/main.java b/src/visuel/main.java index 2412265..731ddee 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -13,7 +13,6 @@ public class main { //ouvre une porte pour input Scanner sc = new Scanner(System.in); - // variable tempo pour tests boolean jeu = true; @@ -46,13 +45,8 @@ public class main { do { System.out.println("Quelle pice voulez vous dplacer ? Donnez le code correspondant la pice dplacer(ex : A1).\n"); - - //entrer coordonnes piece a bouger APRES ON PASSERA PAR DIRECT COMBINAISON LETTRE-CHIFFRE A = sc.nextLine(); - //if (A.equals("A1")) - // System.out.println("OK"); System.out.println("A quel endroit la poser ? Donnez le code correspondant l'endroit o poser la pice.\n"); - //entrer coordonnes endroit vis APRES ON PASSERA PAR DIRECT COMBINAISON LETTRE-CHIFFRE B = sc.nextLine(); }while (e.VerifFinale(j1, A,B) != true); From 1f47ab7850be075a2d558b80921f1195dfa631f3 Mon Sep 17 00:00:00 2001 From: Manon Date: Fri, 3 May 2019 23:11:52 +0200 Subject: [PATCH 099/271] Changements vide => new piece + autres modif annexes --- src/piecesEchiquier/Echiquier.java | 24 ++++++++++++------------ src/piecesEchiquier/Piece.java | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 0d7a48c..9be8587 100755 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -5,14 +5,14 @@ import joueurs.Joueur; public class Echiquier { private String[][] codes = { -{"A8","B8","C8","D8","E8","F8","G8","H8"}, -{"A7","B7","C7","D7","E7","F7","G7","H7"}, -{"A6","B6","C6","D6","E6","F6","G6","H6"}, -{"A5","B5","C5","D5","E5","F5","G5","H5"}, -{"A4","B4","C4","D4","E4","F4","G4","H4"}, -{"A3","B3","C3","D3","E3","F3","G3","H3"}, -{"A2","B2","C2","D2","E2","F2","G2","H2"}, -{"A1","B1","C1","D1","E1","F1","G1","H1"} + {"A8","B8","C8","D8","E8","F8","G8","H8"}, + {"A7","B7","C7","D7","E7","F7","G7","H7"}, + {"A6","B6","C6","D6","E6","F6","G6","H6"}, + {"A5","B5","C5","D5","E5","F5","G5","H5"}, + {"A4","B4","C4","D4","E4","F4","G4","H4"}, + {"A3","B3","C3","D3","E3","F3","G3","H3"}, + {"A2","B2","C2","D2","E2","F2","G2","H2"}, + {"A1","B1","C1","D1","E1","F1","G1","H1"} }; private Pion pionB1 = new Pion("Blanc",codes[6][0],'P',new Position(1,2)); private Pion pionB2 = new Pion("Blanc",codes[6][1],'P',new Position(2,2)); @@ -55,7 +55,7 @@ public class Echiquier { // A choisir soit on enleve abstract de piece pour avoir le vide soit on garde la classe vide //private Vide vide = new Vide(); - private Piece vide = new Piece(); + //private Piece vide = new Piece(); private Piece[][] echiquier = { @@ -122,7 +122,7 @@ public class Echiquier { j++; if (getCodes()[i][j].equals(A)) { - if (this.getEchiquier()[i][j] == vide) + if (this.getEchiquier()[i][j].getClass().getName().equals("Piece")) { System.out.println("Vous avez choisi une case vide. Recommencez."); return false; @@ -162,8 +162,8 @@ public class Echiquier { }else { System.out.println("Choix valids. Dplacement en cours."); - this.getEchiquier()[k][l]=this.getEchiquier()[i][j]; - this.getEchiquier()[i][j] = vide; + this.getEchiquier()[k][l] = this.getEchiquier()[i][j]; + this.getEchiquier()[i][j] = new Piece(new Position(i,j)); return true; } diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index 076924d..ceb2481 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -9,7 +9,7 @@ public class Piece { private String emp; private char lettre = '.'; private boolean enVie = true; - private Position position = new Position(0,0); + private Position position; From bd0f4f68f4325d8dad7ffd7ae69b5db521f193df Mon Sep 17 00:00:00 2001 From: Manon Date: Fri, 3 May 2019 23:53:45 +0200 Subject: [PATCH 100/271] Push final du jour. --- src/game/.gitkeep | 0 src/gamemanager/.gitkeep | 0 src/ia/.gitkeep | 0 src/move/.gitkeep | 0 src/piecesEchiquier/Case.java | 154 ----------------------------- src/piecesEchiquier/Echiquier.java | 33 +------ src/piecesEchiquier/Piece.java | 1 + src/piecesEchiquier/Roi.java | 3 +- src/piecesEchiquier/Tour.java | 1 - src/player/.gitkeep | 0 src/visuel/main.java | 14 +-- 11 files changed, 9 insertions(+), 197 deletions(-) delete mode 100755 src/game/.gitkeep delete mode 100755 src/gamemanager/.gitkeep delete mode 100755 src/ia/.gitkeep delete mode 100755 src/move/.gitkeep delete mode 100755 src/piecesEchiquier/Case.java delete mode 100755 src/player/.gitkeep diff --git a/src/game/.gitkeep b/src/game/.gitkeep deleted file mode 100755 index e69de29..0000000 diff --git a/src/gamemanager/.gitkeep b/src/gamemanager/.gitkeep deleted file mode 100755 index e69de29..0000000 diff --git a/src/ia/.gitkeep b/src/ia/.gitkeep deleted file mode 100755 index e69de29..0000000 diff --git a/src/move/.gitkeep b/src/move/.gitkeep deleted file mode 100755 index e69de29..0000000 diff --git a/src/piecesEchiquier/Case.java b/src/piecesEchiquier/Case.java deleted file mode 100755 index b2761cb..0000000 --- a/src/piecesEchiquier/Case.java +++ /dev/null @@ -1,154 +0,0 @@ -package piecesEchiquier; - -import joueurs.Joueur; - -public class Case { - //attribut - private String NomCase; - private int posXCase; - private int posYCase; - private Piece pieceCase; - - //constructeur - public Case(String name, int x, int y) { - this.NomCase=name; - this.posXCase=x; - this.posYCase=y; - } - - - //méthodes - public boolean estVide() { - return pieceCase == null; - } - - //piecesInstantiation - - public void pieceClone(Case clone) { - clone.setPieceCase(this.getPieceCase()); - } - /* - public void ajouterPion(Joueur j) { - this.pieceCase = new Pion("Pi"+j.getNom().charAt(0), j); - } - - public void ajouterTour(Joueur j) { - this.pieceCase = new Tour("To"+j.getNom().charAt(0), j); - } - - public void ajouterCavalier(Joueur j) { - this.pieceCase = new Cavalier("Ca"+j.getNom().charAt(0), j); - } - - public void ajouterFou(Joueur j) { - this.pieceCase = new Fou("Fo"+j.getNom().charAt(0), j); - } - - public void ajouterReine(Joueur j) { - this.pieceCase = new Reine("Re"+j.getNom().charAt(0), j); - } - - public void ajouterRoi(Joueur j) { - this.pieceCase = new Roi("Ro"+j.getNom().charAt(0), j); - } - - public void vider() { - this.pieceCase = null; - } - - public int stringToX(Plateau p, String cas) { - for (Case[] cl : p.getCases()) { - for (Case c : cl) { - if(c.getcNom()== cas) { - return c.getcX(); - } - } - } - return -1; - } - - public int stringToY(Plateau p, String cas) { - for (Case[] cl : p.getCases()) { - for (Case c : cl) { - if(c.getcNom()== cas) { - return c.getcY(); - } - } - } - return -1; - } - - public static Case stringToCase(Plateau p, String cas) { - for (Case[] cl : p.getCases()) { - for (Case c : cl) { - if(c.getcNom().equals(cas)) { - return c; - } - } - } - return null; - } - - @Override - public String toString() { - return "Case [cNom=" + cNom + ", cX=" + cX + ", cY=" + cY + ", pieceCase=" + pieceCase + "]"; - } -*/ - /** - * @return the nomCase - */ - public String getNomCase() { - return NomCase; - } - - /** - * @param nomCase the nomCase to set - */ - public void setNomCase(String nomCase) { - NomCase = nomCase; - } - - /** - * @return the posXCase - */ - public int getPosXCase() { - return posXCase; - } - - /** - * @param posXCase the posXCase to set - */ - public void setPosXCase(int posXCase) { - this.posXCase = posXCase; - } - - /** - * @return the posYCase - */ - public int getPosYCase() { - return posYCase; - } - - /** - * @param posYCase the posYCase to set - */ - public void setPosYCase(int posYCase) { - this.posYCase = posYCase; - } - - /** - * @return the pieceCase - */ - public Piece getPieceCase() { - return pieceCase; - } - - /** - * @param pieceCase the pieceCase to set - */ - public void setPieceCase(Piece pieceCase) { - this.pieceCase = pieceCase; - } - - - } \ No newline at end of file diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 9be8587..5497baa 100755 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -99,6 +99,7 @@ public class Echiquier { String echec = ""; for (int i = 0; i < 8;i++) { + for (int j = 0; j < 8;j++) { echec +=echiquier[i][j].getLettre(); @@ -172,33 +173,5 @@ public class Echiquier { } System.out.println("Un de vos codes est faux. Recommencez."); return false; - } - - /* - public Piece recupererPiece(Joueur J, String A) - { - for (int i = 1; i <9;i++) - { - for (int j = 1; j < 9;j++) { - if (getCodes()[i][j] == A) - { - return this.getEchiquier()[i][j]; - } - } - } - }*/ - - /* - public void deplacer(String A , String B) - { - - if (this.getEchiquier()[x2][y2] != vide && this.getEchiquier()[x2][y2].getCouleur() != this.getEchiquier()[x1][y1].getCouleur()) - System.out.println("Vous avez manger une piece adverse !"); - this.getEchiquier()[x2][y2] = this.getEchiquier()[x1][y1]; - this.getEchiquier()[x1][y1] = vide; - */ - - } - - - + } +} diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index ceb2481..bcf6191 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -26,6 +26,7 @@ public class Piece { position = pos; } + public Piece(String couleur,String emp, char l, Position pos) { this.couleur = couleur; diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index 988d99a..b6dd98c 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -10,7 +10,8 @@ public class Roi extends Piece { /* public void enEchec() { Position positionCourante; - positionCourante= super.getEmplacement(); + positionCourante = super.getEmplacement(); + } */ diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java index 97d03f1..929b676 100755 --- a/src/piecesEchiquier/Tour.java +++ b/src/piecesEchiquier/Tour.java @@ -2,7 +2,6 @@ package piecesEchiquier; public class Tour extends Piece { - public Tour(String c, String emp,char l, Position pos) { super(c,emp,l,pos); diff --git a/src/player/.gitkeep b/src/player/.gitkeep deleted file mode 100755 index e69de29..0000000 diff --git a/src/visuel/main.java b/src/visuel/main.java index 731ddee..bcc37ee 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -30,11 +30,9 @@ public class main { System.out.println("Bienvenue dans ce jeu d'echec sur console !\n"); - + Echiquier e = new Echiquier(); do { - Echiquier e = new Echiquier(); - // AFFICHAGE ECHIQUIER System.out.println(e.toString()); @@ -57,14 +55,8 @@ public class main { System.out.println(e.toString()); // JOUEUR2 - /*System.out.println("Tour de"+j2.getNom()+"\n"); - System.out.println("Quelle pice voulez vous dplacer ? Donnez le numero de ligne puis de colonne.\n"); - x1 = sc.nextInt(); - y1 = sc.nextInt(); - System.out.println("A quel endroit la poser ? Donnez le numero de ligne puis de colonne.\n"); - x2 = sc.nextInt(); - y2 = sc.nextInt(); - e.deplacer(x1-1,y1-1,x2-1,y2-1);*/ + System.out.println("Tour de"+j2.getNom()+"\n"); + do { System.out.println("Quelle pice voulez vous dplacer ? Donnez le code correspondant la pice dplacer(ex : A1).\n"); From 9b1eb76ffd7178801b3b4bf387cc9b29b532d34b Mon Sep 17 00:00:00 2001 From: Johann Date: Sat, 4 May 2019 12:57:53 +0200 Subject: [PATCH 101/271] =?UTF-8?q?Changement=20visuel=20=C3=A9chiquier?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/piecesEchiquier/Cavalier.java | 2 +- src/piecesEchiquier/Echiquier.java | 74 +++++++++++++++++------------- src/piecesEchiquier/Fou.java | 2 +- src/piecesEchiquier/Piece.java | 8 ++-- src/piecesEchiquier/Pion.java | 5 +- src/piecesEchiquier/Reine.java | 2 +- src/piecesEchiquier/Roi.java | 2 +- src/piecesEchiquier/Tour.java | 2 +- 8 files changed, 52 insertions(+), 45 deletions(-) diff --git a/src/piecesEchiquier/Cavalier.java b/src/piecesEchiquier/Cavalier.java index 1f4f75e..2332ee7 100755 --- a/src/piecesEchiquier/Cavalier.java +++ b/src/piecesEchiquier/Cavalier.java @@ -2,7 +2,7 @@ package piecesEchiquier; public class Cavalier extends Piece { - public Cavalier(String c, String emp,char l, Position pos) + public Cavalier(String c, String emp,String l, Position pos) { super(c,emp,l,pos); } diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 5497baa..84f6e1f 100755 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -14,44 +14,44 @@ public class Echiquier { {"A2","B2","C2","D2","E2","F2","G2","H2"}, {"A1","B1","C1","D1","E1","F1","G1","H1"} }; - private Pion pionB1 = new Pion("Blanc",codes[6][0],'P',new Position(1,2)); - private Pion pionB2 = new Pion("Blanc",codes[6][1],'P',new Position(2,2)); - private Pion pionB3 = new Pion("Blanc",codes[6][2],'P',new Position(3,2)); - private Pion pionB4 = new Pion("Blanc",codes[6][3],'P',new Position(4,2)); - private Pion pionB5 = new Pion("Blanc",codes[6][4],'P',new Position(5,2)); - private Pion pionB6 = new Pion("Blanc",codes[6][5],'P',new Position(6,2)); - private Pion pionB7 = new Pion("Blanc",codes[6][6],'P',new Position(7,2)); - private Pion pionB8 = new Pion("Blanc",codes[6][7],'P',new Position(8,2)); + private Pion pionB1 = new Pion("Blanc",codes[6][0],"PB",new Position(1,2)); + private Pion pionB2 = new Pion("Blanc",codes[6][1],"PB",new Position(2,2)); + private Pion pionB3 = new Pion("Blanc",codes[6][2],"PB",new Position(3,2)); + private Pion pionB4 = new Pion("Blanc",codes[6][3],"PB",new Position(4,2)); + private Pion pionB5 = new Pion("Blanc",codes[6][4],"PB",new Position(5,2)); + private Pion pionB6 = new Pion("Blanc",codes[6][5],"PB",new Position(6,2)); + private Pion pionB7 = new Pion("Blanc",codes[6][6],"PB",new Position(7,2)); + private Pion pionB8 = new Pion("Blanc",codes[6][7],"PB",new Position(8,2)); - private Pion pionN1 = new Pion("Noir",codes[1][0],'p',new Position(1,7)); - private Pion pionN2 = new Pion("Noir",codes[1][1],'p',new Position(2,7)); - private Pion pionN3 = new Pion("Noir",codes[1][2],'p',new Position(3,7)); - private Pion pionN4 = new Pion("Noir",codes[1][3],'p',new Position(4,7)); - private Pion pionN5 = new Pion("Noir",codes[1][4],'p',new Position(5,7)); - private Pion pionN6 = new Pion("Noir",codes[1][5],'p',new Position(6,7)); - private Pion pionN7 = new Pion("Noir",codes[1][6],'p',new Position(7,7)); - private Pion pionN8 = new Pion("Noir",codes[1][7],'p',new Position(8,7)); + private Pion pionN1 = new Pion("Noir",codes[1][0],"PN",new Position(1,7)); + private Pion pionN2 = new Pion("Noir",codes[1][1],"PN",new Position(2,7)); + private Pion pionN3 = new Pion("Noir",codes[1][2],"PN",new Position(3,7)); + private Pion pionN4 = new Pion("Noir",codes[1][3],"PN",new Position(4,7)); + private Pion pionN5 = new Pion("Noir",codes[1][4],"PN",new Position(5,7)); + private Pion pionN6 = new Pion("Noir",codes[1][5],"PN",new Position(6,7)); + private Pion pionN7 = new Pion("Noir",codes[1][6],"PN",new Position(7,7)); + private Pion pionN8 = new Pion("Noir",codes[1][7],"PN",new Position(8,7)); - private Tour TourB1 = new Tour("Blanc",codes[7][0],'T',new Position(1,1)); - private Tour TourB2 = new Tour("Blanc",codes[7][7],'T',new Position(8,1)); - private Tour TourN1 = new Tour("Noir",codes[0][0],'t',new Position(1,8)); - private Tour TourN2 = new Tour("Noir",codes[0][7],'t',new Position(8,8)); + private Tour TourB1 = new Tour("Blanc",codes[7][0],"TB",new Position(1,1)); + private Tour TourB2 = new Tour("Blanc",codes[7][7],"TB",new Position(8,1)); + private Tour TourN1 = new Tour("Noir",codes[0][0],"TN",new Position(1,8)); + private Tour TourN2 = new Tour("Noir",codes[0][7],"TN",new Position(8,8)); - private Cavalier CavalierB1 = new Cavalier("Blanc",codes[7][1],'C',new Position(2,1)); - private Cavalier CavalierB2 = new Cavalier("Blanc",codes[7][6],'C',new Position(7,1)); - private Cavalier CavalierN1 = new Cavalier("Noir",codes[0][1],'c',new Position(2,8)); - private Cavalier CavalierN2 = new Cavalier("Noir",codes[0][6],'c',new Position(7,8)); + private Cavalier CavalierB1 = new Cavalier("Blanc",codes[7][1],"CB",new Position(2,1)); + private Cavalier CavalierB2 = new Cavalier("Blanc",codes[7][6],"CB",new Position(7,1)); + private Cavalier CavalierN1 = new Cavalier("Noir",codes[0][1],"CN",new Position(2,8)); + private Cavalier CavalierN2 = new Cavalier("Noir",codes[0][6],"CN",new Position(7,8)); - private Fou FouB1 = new Fou("Blanc",codes[7][2],'F',new Position(3,1)); - private Fou FouB2 = new Fou("Blanc",codes[7][5],'F',new Position(6,1)); - private Fou FouN1 = new Fou("Noir",codes[0][2],'f',new Position(3,8)); - private Fou FouN2 = new Fou("Noir",codes[0][5],'f',new Position(6,8)); + private Fou FouB1 = new Fou("Blanc",codes[7][2],"FB",new Position(3,1)); + private Fou FouB2 = new Fou("Blanc",codes[7][5],"FB",new Position(6,1)); + private Fou FouN1 = new Fou("Noir",codes[0][2],"FN",new Position(3,8)); + private Fou FouN2 = new Fou("Noir",codes[0][5],"FN",new Position(6,8)); - private Reine ReineB1 = new Reine("Blanc",codes[7][4],'R',new Position(4,1)); - private Reine ReineN1 = new Reine("Noir",codes[0][4],'r',new Position(4,8)); + private Reine ReineB1 = new Reine("Blanc",codes[7][4],"RB",new Position(4,1)); + private Reine ReineN1 = new Reine("Noir",codes[0][4],"RN",new Position(4,8)); - private Roi RoiB1 = new Roi("Blanc",codes[7][3],'K',new Position(5,1)); - private Roi RoiN1 = new Roi("Noir",codes[0][3],'k',new Position(5,8)); + private Roi RoiB1 = new Roi("Blanc",codes[7][3],"KB",new Position(5,1)); + private Roi RoiN1 = new Roi("Noir",codes[0][3],"KN",new Position(5,8)); // A choisir soit on enleve abstract de piece pour avoir le vide soit on garde la classe vide //private Vide vide = new Vide(); @@ -96,15 +96,23 @@ public class Echiquier { public String toString() { + char alphabet[]= {'A','B','C','D','E','F','G','H'}; String echec = ""; + int compteur=8; for (int i = 0; i < 8;i++) { - + echec+= compteur + " "; for (int j = 0; j < 8;j++) { echec +=echiquier[i][j].getLettre(); + echec += " "; } echec += "\n"; + compteur--; + } + for (int i=0; i<8;i++) + { + echec+= " " + alphabet[i]; } return echec; } diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java index cf69a39..ffdd8b4 100755 --- a/src/piecesEchiquier/Fou.java +++ b/src/piecesEchiquier/Fou.java @@ -2,7 +2,7 @@ package piecesEchiquier; public class Fou extends Piece { - public Fou(String c, String emp,char l, Position pos) + public Fou(String c, String emp,String l, Position pos) { super(c,emp,l,pos); } diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index bcf6191..4fe0d25 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -7,7 +7,7 @@ public class Piece { private String couleur; //private Position emplacementIni; private String emp; - private char lettre = '.'; + private String lettre = ".."; private boolean enVie = true; private Position position; @@ -27,7 +27,7 @@ public class Piece { } - public Piece(String couleur,String emp, char l, Position pos) + public Piece(String couleur,String emp, String l, Position pos) { this.couleur = couleur; this.lettre = l; @@ -52,10 +52,10 @@ public class Piece { // gets & sets - public char getLettre() { + public String getLettre() { return lettre; } - public void setLettre(char lettre) { + public void setLettre(String lettre) { this.lettre = lettre; } diff --git a/src/piecesEchiquier/Pion.java b/src/piecesEchiquier/Pion.java index 17c330c..220271a 100755 --- a/src/piecesEchiquier/Pion.java +++ b/src/piecesEchiquier/Pion.java @@ -1,10 +1,9 @@ package piecesEchiquier; public class Pion extends Piece { - public Pion(String c, String emp,char l, Position pos) { - - super(c,emp,l, pos); + public Pion(String couleur, String emp,String l, Position pos) { + super(couleur,emp,l, pos); } diff --git a/src/piecesEchiquier/Reine.java b/src/piecesEchiquier/Reine.java index e1cc68f..38a965a 100755 --- a/src/piecesEchiquier/Reine.java +++ b/src/piecesEchiquier/Reine.java @@ -2,7 +2,7 @@ package piecesEchiquier; public class Reine extends Piece { - public Reine(String c, String emp,char l, Position pos) + public Reine(String c, String emp,String l, Position pos) { super(c,emp,l,pos); } diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index b6dd98c..8d77f76 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -2,7 +2,7 @@ package piecesEchiquier; public class Roi extends Piece { - public Roi(String c, String emp,char l, Position pos) + public Roi(String c, String emp,String l, Position pos) { super(c,emp,l,pos); } diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java index 929b676..106314f 100755 --- a/src/piecesEchiquier/Tour.java +++ b/src/piecesEchiquier/Tour.java @@ -2,7 +2,7 @@ package piecesEchiquier; public class Tour extends Piece { - public Tour(String c, String emp,char l, Position pos) + public Tour(String c, String emp,String l, Position pos) { super(c,emp,l,pos); } From cd0b79be58f1c150ec37d3aa07ee50218c885cbc Mon Sep 17 00:00:00 2001 From: Johann Date: Sat, 4 May 2019 21:08:15 +0200 Subject: [PATCH 102/271] Rajout de l'attribut Position ini + methode aBouge() --- src/piecesEchiquier/Cavalier.java | 4 +- src/piecesEchiquier/Echiquier.java | 67 ++++++++++++++---------------- src/piecesEchiquier/Fou.java | 4 +- src/piecesEchiquier/Piece.java | 17 +++++--- src/piecesEchiquier/Pion.java | 18 +++++++- src/piecesEchiquier/Reine.java | 4 +- src/piecesEchiquier/Roi.java | 17 +++++++- src/piecesEchiquier/Tour.java | 19 +++++++-- 8 files changed, 97 insertions(+), 53 deletions(-) diff --git a/src/piecesEchiquier/Cavalier.java b/src/piecesEchiquier/Cavalier.java index 2332ee7..182f440 100755 --- a/src/piecesEchiquier/Cavalier.java +++ b/src/piecesEchiquier/Cavalier.java @@ -2,8 +2,8 @@ package piecesEchiquier; public class Cavalier extends Piece { - public Cavalier(String c, String emp,String l, Position pos) + public Cavalier(String c,String l, Position pos) { - super(c,emp,l,pos); + super(c,l,pos); } } diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 84f6e1f..85031e8 100755 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -14,48 +14,45 @@ public class Echiquier { {"A2","B2","C2","D2","E2","F2","G2","H2"}, {"A1","B1","C1","D1","E1","F1","G1","H1"} }; - private Pion pionB1 = new Pion("Blanc",codes[6][0],"PB",new Position(1,2)); - private Pion pionB2 = new Pion("Blanc",codes[6][1],"PB",new Position(2,2)); - private Pion pionB3 = new Pion("Blanc",codes[6][2],"PB",new Position(3,2)); - private Pion pionB4 = new Pion("Blanc",codes[6][3],"PB",new Position(4,2)); - private Pion pionB5 = new Pion("Blanc",codes[6][4],"PB",new Position(5,2)); - private Pion pionB6 = new Pion("Blanc",codes[6][5],"PB",new Position(6,2)); - private Pion pionB7 = new Pion("Blanc",codes[6][6],"PB",new Position(7,2)); - private Pion pionB8 = new Pion("Blanc",codes[6][7],"PB",new Position(8,2)); + private Pion pionB1 = new Pion("Blanc","PB",new Position(1,2)); + private Pion pionB2 = new Pion("Blanc","PB",new Position(2,2)); + private Pion pionB3 = new Pion("Blanc","PB",new Position(3,2)); + private Pion pionB4 = new Pion("Blanc","PB",new Position(4,2)); + private Pion pionB5 = new Pion("Blanc","PB",new Position(5,2)); + private Pion pionB6 = new Pion("Blanc","PB",new Position(6,2)); + private Pion pionB7 = new Pion("Blanc","PB",new Position(7,2)); + private Pion pionB8 = new Pion("Blanc","PB",new Position(8,2)); - private Pion pionN1 = new Pion("Noir",codes[1][0],"PN",new Position(1,7)); - private Pion pionN2 = new Pion("Noir",codes[1][1],"PN",new Position(2,7)); - private Pion pionN3 = new Pion("Noir",codes[1][2],"PN",new Position(3,7)); - private Pion pionN4 = new Pion("Noir",codes[1][3],"PN",new Position(4,7)); - private Pion pionN5 = new Pion("Noir",codes[1][4],"PN",new Position(5,7)); - private Pion pionN6 = new Pion("Noir",codes[1][5],"PN",new Position(6,7)); - private Pion pionN7 = new Pion("Noir",codes[1][6],"PN",new Position(7,7)); - private Pion pionN8 = new Pion("Noir",codes[1][7],"PN",new Position(8,7)); + private Pion pionN1 = new Pion("Noir","PN",new Position(1,7)); + private Pion pionN2 = new Pion("Noir","PN",new Position(2,7)); + private Pion pionN3 = new Pion("Noir","PN",new Position(3,7)); + private Pion pionN4 = new Pion("Noir","PN",new Position(4,7)); + private Pion pionN5 = new Pion("Noir","PN",new Position(5,7)); + private Pion pionN6 = new Pion("Noir","PN",new Position(6,7)); + private Pion pionN7 = new Pion("Noir","PN",new Position(7,7)); + private Pion pionN8 = new Pion("Noir","PN",new Position(8,7)); - private Tour TourB1 = new Tour("Blanc",codes[7][0],"TB",new Position(1,1)); - private Tour TourB2 = new Tour("Blanc",codes[7][7],"TB",new Position(8,1)); - private Tour TourN1 = new Tour("Noir",codes[0][0],"TN",new Position(1,8)); - private Tour TourN2 = new Tour("Noir",codes[0][7],"TN",new Position(8,8)); + private Tour TourB1 = new Tour("Blanc","TB",new Position(1,1)); + private Tour TourB2 = new Tour("Blanc","TB",new Position(8,1)); + private Tour TourN1 = new Tour("Noir","TN",new Position(1,8)); + private Tour TourN2 = new Tour("Noir","TN",new Position(8,8)); - private Cavalier CavalierB1 = new Cavalier("Blanc",codes[7][1],"CB",new Position(2,1)); - private Cavalier CavalierB2 = new Cavalier("Blanc",codes[7][6],"CB",new Position(7,1)); - private Cavalier CavalierN1 = new Cavalier("Noir",codes[0][1],"CN",new Position(2,8)); - private Cavalier CavalierN2 = new Cavalier("Noir",codes[0][6],"CN",new Position(7,8)); + private Cavalier CavalierB1 = new Cavalier("Blanc","CB",new Position(2,1)); + private Cavalier CavalierB2 = new Cavalier("Blanc","CB",new Position(7,1)); + private Cavalier CavalierN1 = new Cavalier("Noir","CN",new Position(2,8)); + private Cavalier CavalierN2 = new Cavalier("Noir","CN",new Position(7,8)); - private Fou FouB1 = new Fou("Blanc",codes[7][2],"FB",new Position(3,1)); - private Fou FouB2 = new Fou("Blanc",codes[7][5],"FB",new Position(6,1)); - private Fou FouN1 = new Fou("Noir",codes[0][2],"FN",new Position(3,8)); - private Fou FouN2 = new Fou("Noir",codes[0][5],"FN",new Position(6,8)); + private Fou FouB1 = new Fou("Blanc","FB",new Position(3,1)); + private Fou FouB2 = new Fou("Blanc","FB",new Position(6,1)); + private Fou FouN1 = new Fou("Noir","FN",new Position(3,8)); + private Fou FouN2 = new Fou("Noir","FN",new Position(6,8)); - private Reine ReineB1 = new Reine("Blanc",codes[7][4],"RB",new Position(4,1)); - private Reine ReineN1 = new Reine("Noir",codes[0][4],"RN",new Position(4,8)); + private Reine ReineB1 = new Reine("Blanc","RB",new Position(4,1)); + private Reine ReineN1 = new Reine("Noir","RN",new Position(4,8)); - private Roi RoiB1 = new Roi("Blanc",codes[7][3],"KB",new Position(5,1)); - private Roi RoiN1 = new Roi("Noir",codes[0][3],"KN",new Position(5,8)); + private Roi RoiB1 = new Roi("Blanc","KB",new Position(5,1)); + private Roi RoiN1 = new Roi("Noir","KN",new Position(5,8)); - // A choisir soit on enleve abstract de piece pour avoir le vide soit on garde la classe vide - //private Vide vide = new Vide(); - //private Piece vide = new Piece(); private Piece[][] echiquier = { diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java index ffdd8b4..a6378f0 100755 --- a/src/piecesEchiquier/Fou.java +++ b/src/piecesEchiquier/Fou.java @@ -2,9 +2,9 @@ package piecesEchiquier; public class Fou extends Piece { - public Fou(String c, String emp,String l, Position pos) + public Fou(String c,String l, Position pos) { - super(c,emp,l,pos); + super(c,l,pos); } diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index 4fe0d25..710320c 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -5,12 +5,10 @@ public class Piece { private String couleur; - //private Position emplacementIni; - private String emp; private String lettre = ".."; private boolean enVie = true; private Position position; - + private Position ini; //constructeur par defaut qui devrait probablement remplacer vide @@ -27,13 +25,14 @@ public class Piece { } - public Piece(String couleur,String emp, String l, Position pos) + public Piece(String couleur,String l, Position pos) { this.couleur = couleur; this.lettre = l; //this.emplacementIni = emp; - this.emp = emp; this.position = pos; + this.ini=pos; + } /* //vérifie une éventuelle collision a chaque case @@ -97,6 +96,14 @@ public class Piece { this.position = position; } + public Position getIni() { + return ini; + } + + public void setIni(Position ini) { + this.ini = ini; + } + public boolean deplacable(Piece p) { return true; diff --git a/src/piecesEchiquier/Pion.java b/src/piecesEchiquier/Pion.java index 220271a..f27fe5d 100755 --- a/src/piecesEchiquier/Pion.java +++ b/src/piecesEchiquier/Pion.java @@ -1,9 +1,11 @@ package piecesEchiquier; public class Pion extends Piece { - public Pion(String couleur, String emp,String l, Position pos) { + private boolean verif=false; + + public Pion(String couleur,String l, Position pos) { - super(couleur,emp,l, pos); + super(couleur,l, pos); } @@ -21,5 +23,17 @@ public class Pion extends Piece { return true; } + public boolean aBouge() + { + if(this.getIni() != this.getPosition()) + { + verif=true; + } + if(this.getIni() == this.getPosition() && verif == false) + { + verif=false; + } + return verif; + } } diff --git a/src/piecesEchiquier/Reine.java b/src/piecesEchiquier/Reine.java index 38a965a..568d58d 100755 --- a/src/piecesEchiquier/Reine.java +++ b/src/piecesEchiquier/Reine.java @@ -2,8 +2,8 @@ package piecesEchiquier; public class Reine extends Piece { - public Reine(String c, String emp,String l, Position pos) + public Reine(String c,String l, Position pos) { - super(c,emp,l,pos); + super(c,l,pos); } } diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index 8d77f76..150c31f 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -1,10 +1,11 @@ package piecesEchiquier; public class Roi extends Piece { + private boolean verif=false; - public Roi(String c, String emp,String l, Position pos) + public Roi(String c,String l, Position pos) { - super(c,emp,l,pos); + super(c,l,pos); } /* @@ -15,4 +16,16 @@ public class Roi extends Piece { } */ + public boolean aBouge() + { + if(this.getIni() != this.getPosition()) + { + verif=true; + } + if(this.getIni() == this.getPosition() && verif == false) + { + verif=false; + } + return verif; + } } diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java index 106314f..d48f872 100755 --- a/src/piecesEchiquier/Tour.java +++ b/src/piecesEchiquier/Tour.java @@ -1,10 +1,23 @@ package piecesEchiquier; public class Tour extends Piece { + private boolean verif=false; - public Tour(String c, String emp,String l, Position pos) + public Tour(String couleur,String l, Position pos) { - super(c,emp,l,pos); + super(couleur,l,pos); + } + + public boolean aBouge() + { + if(this.getIni() != this.getPosition()) + { + verif=true; + } + if(this.getIni() == this.getPosition() && verif == false) + { + verif=false; + } + return verif; } - } From 60ca75ad2a5663c745a64d1e2ce6fc27e739a244 Mon Sep 17 00:00:00 2001 From: Manon Date: Sun, 5 May 2019 23:27:07 +0200 Subject: [PATCH 103/271] Methode pion finie (a priori) --- src/piecesEchiquier/Pion.java | 45 ++++++++++++++++++++++++++++------- src/visuel/main.java | 6 ++--- 2 files changed, 40 insertions(+), 11 deletions(-) diff --git a/src/piecesEchiquier/Pion.java b/src/piecesEchiquier/Pion.java index f27fe5d..45d415b 100755 --- a/src/piecesEchiquier/Pion.java +++ b/src/piecesEchiquier/Pion.java @@ -6,21 +6,50 @@ public class Pion extends Piece { public Pion(String couleur,String l, Position pos) { super(couleur,l, pos); + super.setIni(pos); } public boolean deplacable(Piece p) { - if (this.getPosition().getX() != p.getPosition().getX()) + if (p.getPosition().getX()-1 == this.getPosition().getX() || p.getPosition().getX()+1 == this.getPosition().getX()) { - return false; - } - else if (p.getPosition().getY()-1 > this.getPosition().getY()) + //System.out.println("test4"); + if ((this.getCouleur().equals("Blanc") && p.getPosition().getY()-1 == this.getPosition().getY()) || (this.getCouleur() == "noir" && p.getPosition().getY()+1 == this.getPosition().getY())) + { + //System.out.println("test5"); + if (p.getLettre().equals("..")) + { + System.out.println("Vous tentez de manger une case vide."); + return false; + } + System.out.println("Vous avez mang une pice !"); + return true; + } + + } + + else if (p.getPosition().getX() == this.getPosition().getX()) { - return false; + + if ((this.getCouleur().equals("Blanc")) && (p.getPosition().getY()-1 == this.getPosition().getY()) || (this.getCouleur().equals("Noir")) && (p.getPosition().getY()+1 == this.getPosition().getY())) + { + //System.out.println("test1"); + return true; + } + /* + else if ((this.getCouleur().equals("Noir")) && (p.getPosition().getY()+1 == this.getPosition().getY())) + { + return true; + } */ + if (this.aBouge() == false && ((this.getCouleur().equals("Blanc") && p.getPosition().getY()-2 == this.getPosition().getY()) || (this.getCouleur().equals("Noir") && p.getPosition().getY()+2 == this.getPosition().getY()))) + { + System.out.println("test2"); + return true; + } } - else - return true; + System.out.println("test1"); + return false; } public boolean aBouge() @@ -29,7 +58,7 @@ public class Pion extends Piece { { verif=true; } - if(this.getIni() == this.getPosition() && verif == false) + else if(this.getIni() == this.getPosition() && this.verif == false) { verif=false; } diff --git a/src/visuel/main.java b/src/visuel/main.java index bcc37ee..799b00c 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -18,8 +18,8 @@ public class main { // joueurs APRES ON DEMANDERA NOM - Joueur j1 = new Joueur("Manon","Blanc"); - Joueur j2 = new Joueur("Autre","Noir"); + Joueur j1 = new Joueur("Personne A","Blanc"); + Joueur j2 = new Joueur("Personne B","Noir"); // vars pour deplacer @@ -55,7 +55,7 @@ public class main { System.out.println(e.toString()); // JOUEUR2 - System.out.println("Tour de"+j2.getNom()+"\n"); + System.out.println("Tour de "+j2.getNom()+"\n"); do { System.out.println("Quelle pice voulez vous dplacer ? Donnez le code correspondant la pice dplacer(ex : A1).\n"); From 15dd2fec3a701495b46710230b9dedf66bec7835 Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Mon, 6 May 2019 08:42:58 +0200 Subject: [PATCH 104/271] Update UTF-8 text support updated text support DO NOT FORGET TO UPDATE ECLIPSE TO UTF-8 --- src/piecesEchiquier/Pion.java | 2 +- src/visuel/main.java | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/piecesEchiquier/Pion.java b/src/piecesEchiquier/Pion.java index 45d415b..6a271ce 100755 --- a/src/piecesEchiquier/Pion.java +++ b/src/piecesEchiquier/Pion.java @@ -23,7 +23,7 @@ public class Pion extends Piece { System.out.println("Vous tentez de manger une case vide."); return false; } - System.out.println("Vous avez mang une pice !"); + System.out.println("Vous avez mangé une pièce !"); return true; } diff --git a/src/visuel/main.java b/src/visuel/main.java index 799b00c..ce3e49a 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -1,6 +1,6 @@ package visuel; // sert pour recup input clavier -import java.util.Scanner; +import java.util.Scanner; //a voir si on fait une classe 'leScan' pour gérer le scan du clavier plus simplement import joueurs.Joueur; @@ -8,8 +8,10 @@ import piecesEchiquier.Echiquier; public class main { + // public main (String[] args) { //EVENTUELLEMENT SOLUTION POSSIBLE AVEC FORCE RETURN public static void main (String[] args) { + //ouvre une porte pour input Scanner sc = new Scanner(System.in); @@ -28,7 +30,7 @@ public class main { - System.out.println("Bienvenue dans ce jeu d'echec sur console !\n"); + System.out.println("Bienvenue dans le jeu e-Chesstria ! Le jeu d'echec sur console fait en java !\n"); Echiquier e = new Echiquier(); do { @@ -42,9 +44,9 @@ public class main { do { - System.out.println("Quelle pice voulez vous dplacer ? Donnez le code correspondant la pice dplacer(ex : A1).\n"); + System.out.println("Quelle pièce voulez vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); A = sc.nextLine(); - System.out.println("A quel endroit la poser ? Donnez le code correspondant l'endroit o poser la pice.\n"); + System.out.println("A quel endroit la poser ? Donnez le code correspondant de l'endroit où poser la pièce.\n"); B = sc.nextLine(); }while (e.VerifFinale(j1, A,B) != true); @@ -58,13 +60,13 @@ public class main { System.out.println("Tour de "+j2.getNom()+"\n"); do { - System.out.println("Quelle pice voulez vous dplacer ? Donnez le code correspondant la pice dplacer(ex : A1).\n"); + System.out.println("Quelle pièce voulez vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); - //entrer coordonnes piece a bouger APRES ON PASSERA PAR DIRECT COMBINAISON LETTRE-CHIFFRE + //entrer coordonn�es piece a bouger APRES ON PASSERA PAR DIRECT COMBINAISON LETTRE-CHIFFRE A = sc.nextLine(); - System.out.println("A quel endroit la poser ? Donnez le code correspondant l'endroit o poser la pice.\n"); - //entrer coordonnes endroit vis APRES ON PASSERA PAR DIRECT COMBINAISON LETTRE-CHIFFRE + System.out.println("A quel endroit la poser ? Donnez le code correspondant de l'endroit où poser la pièce.\n"); + //entrer coordonn�es endroit vis� APRES ON PASSERA PAR DIRECT COMBINAISON LETTRE-CHIFFRE B = sc.nextLine(); }while (e.VerifFinale(j2, A,B) != true); From 32c80eafa09eb3c242188f69e1762c7cccce1ad6 Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Mon, 6 May 2019 09:03:22 +0200 Subject: [PATCH 105/271] Update license to CC BY We think to put the project to CC BY NC --- LICENSE | 382 +++++++++++++++----------------------------------------- 1 file changed, 101 insertions(+), 281 deletions(-) diff --git a/LICENSE b/LICENSE index a1c6237..d7244c0 100755 --- a/LICENSE +++ b/LICENSE @@ -1,339 +1,159 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 +## creative commons - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. +# Attribution 4.0 International - Preamble +Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. +### Using Creative Commons Public Licenses - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. +Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. +* __Considerations for licensors:__ Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. [More considerations for licensors](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors). - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. +* __Considerations for the public:__ By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. [More considerations for the public](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees). - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. +## Creative Commons Attribution 4.0 International Public License - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. +By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. +### Section 1 – Definitions. - The precise terms and conditions for copying, distribution and -modification follow. +a. __Adapted Material__ means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +b. __Adapter's License__ means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". +c. __Copyright and Similar Rights__ means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. +d. __Effective Technological Measures__ means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. +e. __Exceptions and Limitations__ means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. +f. __Licensed Material__ means the artistic or literary work, database, or other material to which the Licensor applied this Public License. - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: +g. __Licensed Rights__ means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. +h. __Licensor__ means the individual(s) or entity(ies) granting rights under this Public License. - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. +i. __Share__ means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) +j. __Sui Generis Database Rights__ means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. +k. __You__ means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. +### Section 2 – Scope. -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. +a. ___License grant.___ - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: + 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, + A. reproduce and Share the Licensed Material, in whole or in part; and - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, + B. produce, reproduce, and Share Adapted Material. - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) + 2. __Exceptions and Limitations.__ For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. + 3. __Term.__ The term of this Public License is specified in Section 6(a). -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. + 4. __Media and formats; technical modifications allowed.__ The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. + 5. __Downstream recipients.__ - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. + A. __Offer from the Licensor – Licensed Material.__ Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. + B. __No downstream restrictions.__ You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. + 6. __No endorsement.__ Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. +b. ___Other rights.___ -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. + 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. + 2. Patent and trademark rights are not licensed under this Public License. - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. + 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties. - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. +### Section 3 – License Conditions. -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. +Your exercise of the Licensed Rights is expressly made subject to the following conditions. - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. +a. ___Attribution.___ - NO WARRANTY + 1. If You Share the Licensed Material (including in modified form), You must: - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. + A. retain the following if it is supplied by the Licensor with the Licensed Material: - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. + i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); - END OF TERMS AND CONDITIONS + ii. a copyright notice; - How to Apply These Terms to Your New Programs + iii. a notice that refers to this Public License; - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. + iv. a notice that refers to the disclaimer of warranties; - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. + v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; - e-Chesstria - Copyright (C) 2019 Good3noughTeam + B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. -Also add information on how to contact you by electronic and paper mail. + 4. If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of the Adapted Material from complying with this Public License. -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: +### Section 4 – Sui Generis Database Rights. - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. +Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. +a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database; -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: +b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. +c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. - {signature of Ty Coon}, 1 April 1989 - Ty Coon, President of Vice +For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. +### Section 5 – Disclaimer of Warranties and Limitation of Liability. + +a. __Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.__ + +b. __To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.__ + +c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. + +### Section 6 – Term and Termination. + +a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. + +b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. + +c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. + +d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. + +### Section 7 – Other Terms and Conditions. + +a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. + +b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. + +### Section 8 – Interpretation. + +a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. + +b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. + +c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. + +d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. + +> Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at [creativecommons.org/policies](http://creativecommons.org/policies), Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses. +> +> Creative Commons may be contacted at creativecommons.org From e625ea546ce160e9724d3934c01d9ce60015b732 Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Mon, 6 May 2019 09:30:50 +0200 Subject: [PATCH 106/271] update license again --- LICENSE | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/LICENSE b/LICENSE index d7244c0..ff81b2f 100755 --- a/LICENSE +++ b/LICENSE @@ -1,13 +1,4 @@ -## creative commons - -# Attribution 4.0 International - -Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. - -### Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. - +. * __Considerations for licensors:__ Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. [More considerations for licensors](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors). * __Considerations for the public:__ By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. [More considerations for the public](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees). From 22a24e44934319f20f520d7f726dd74c97fec2c9 Mon Sep 17 00:00:00 2001 From: Anthony Date: Mon, 6 May 2019 17:27:11 +0200 Subject: [PATCH 107/271] modifications classes roi et tour MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tour : ajout méthode déplacement possible Roi : ajout commentaire pour méthode enEchec() --- src/piecesEchiquier/Roi.java | 7 +++++-- src/piecesEchiquier/Tour.java | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index 150c31f..6972209 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -9,13 +9,16 @@ public class Roi extends Piece { } /* - public void enEchec() { - Position positionCourante; + public void enEchec(Piece piece, Position position) { + boolean[][] mouvementsPossibles; + mouvementsPossibles=piece.getMouvementsPossibles(); + positionCourante = super.getEmplacement(); } */ + public boolean aBouge() { if(this.getIni() != this.getPosition()) diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java index d48f872..afe1ec3 100755 --- a/src/piecesEchiquier/Tour.java +++ b/src/piecesEchiquier/Tour.java @@ -20,4 +20,20 @@ public class Tour extends Piece { } return verif; } + + public boolean[][] deplacementsPossibles() { + boolean[][] deplacementsPossibles = new boolean[8][8]; + Position position = this.getPosition(); + int x = position.getX(); + int y = position.getY(); + for(int i=x; i<8; i++) { + //if(echiquier.estVide(position)) + deplacementsPossibles[i][y]=true; + } + for(int j=0; j<8; j++) { + deplacementsPossibles[x][j]=true; + } + deplacementsPossibles[x][y]=false; + return deplacementsPossibles; + } } From d43f65fba073288ba7f21721bc0df54f1a795234 Mon Sep 17 00:00:00 2001 From: Anthony Date: Thu, 9 May 2019 09:30:32 +0200 Subject: [PATCH 108/271] update des classes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tour.java: Méthode deplaçable Echiquier, Roi, main, Piece: mise en page --- src/piecesEchiquier/Echiquier.java | 29 ++++++++++++++--------------- src/piecesEchiquier/Piece.java | 3 +-- src/piecesEchiquier/Roi.java | 2 +- src/piecesEchiquier/Tour.java | 14 +++++++------- src/visuel/main.java | 28 +++++++++++++--------------- 5 files changed, 36 insertions(+), 40 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 85031e8..7722022 100755 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -3,6 +3,7 @@ package piecesEchiquier; import joueurs.Joueur; public class Echiquier { + private String[][] codes = { {"A8","B8","C8","D8","E8","F8","G8","H8"}, @@ -67,9 +68,8 @@ public class Echiquier { }; - public Echiquier() - { - + public Echiquier() { + } @@ -139,18 +139,8 @@ public class Echiquier { return false; } } - }while(( (getCodes()[i][j].equals(A)) == false) && (j+1 < codes.length)); - }while((getCodes()[i][j].equals(A) == false) && (i+1 < codes.length)); - if (i == 9) - { - System.out.println("Code de la pice a dplacer invalide. Recommencez."); - return false; - } - - - for (k = 0; k < codes.length;k++) { @@ -163,11 +153,11 @@ public class Echiquier { return false; }else if (this.getEchiquier()[i][j].deplacable(this.getEchiquier()[k][l]) == false) { - System.out.println("Dplacement impossible. Recommencez."); + System.out.println("D�placement impossible. Recommencez."); return false; }else { - System.out.println("Choix valids. Dplacement en cours."); + System.out.println("Choix validés. déplacement en cours."); this.getEchiquier()[k][l] = this.getEchiquier()[i][j]; this.getEchiquier()[i][j] = new Piece(new Position(i,j)); return true; @@ -179,4 +169,13 @@ public class Echiquier { System.out.println("Un de vos codes est faux. Recommencez."); return false; } + + public boolean estVide(Position position) { + int x = position.getX(); + int y = position.getY(); + if(this.echiquier[x][y].getLettre()=="..") { + return true; + } + return false; + } } diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index 710320c..5c214a0 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -1,4 +1,3 @@ - package piecesEchiquier; public class Piece { @@ -35,7 +34,7 @@ public class Piece { } -/* //vérifie une éventuelle collision a chaque case +/* //verifie une eventuelle collision a chaque case public boolean collision(Case caseArrivee){ return caseArrivee.estVide(); }*/ diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index 6972209..b094581 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -18,7 +18,7 @@ public class Roi extends Piece { } */ - + public boolean aBouge() { if(this.getIni() != this.getPosition()) diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java index afe1ec3..5b49f6c 100755 --- a/src/piecesEchiquier/Tour.java +++ b/src/piecesEchiquier/Tour.java @@ -21,19 +21,19 @@ public class Tour extends Piece { return verif; } - public boolean[][] deplacementsPossibles() { - boolean[][] deplacementsPossibles = new boolean[8][8]; + public boolean[][] deplacable(Echiquier e,Piece p) { + boolean[][] deplacementsInherentsPiece = new boolean[8][8]; Position position = this.getPosition(); int x = position.getX(); int y = position.getY(); + for(int i=x; i<8; i++) { - //if(echiquier.estVide(position)) - deplacementsPossibles[i][y]=true; + deplacementsInherentsPiece[i][y]=true; } for(int j=0; j<8; j++) { - deplacementsPossibles[x][j]=true; + deplacementsInherentsPiece[x][j]=true; } - deplacementsPossibles[x][y]=false; - return deplacementsPossibles; + deplacementsInherentsPiece[x][y]=false; + return deplacementsInherentsPiece; } } diff --git a/src/visuel/main.java b/src/visuel/main.java index ce3e49a..d54881a 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -1,17 +1,15 @@ package visuel; // sert pour recup input clavier -import java.util.Scanner; //a voir si on fait une classe 'leScan' pour gérer le scan du clavier plus simplement +import java.util.Scanner; import joueurs.Joueur; import piecesEchiquier.Echiquier; -public class main { +public class Main { - // public main (String[] args) { //EVENTUELLEMENT SOLUTION POSSIBLE AVEC FORCE RETURN public static void main (String[] args) { - //ouvre une porte pour input Scanner sc = new Scanner(System.in); @@ -20,8 +18,8 @@ public class main { // joueurs APRES ON DEMANDERA NOM - Joueur j1 = new Joueur("Personne A","Blanc"); - Joueur j2 = new Joueur("Personne B","Noir"); + Joueur j1 = new Joueur("Manon","Blanc"); + Joueur j2 = new Joueur("Autre","Noir"); // vars pour deplacer @@ -30,7 +28,7 @@ public class main { - System.out.println("Bienvenue dans le jeu e-Chesstria ! Le jeu d'echec sur console fait en java !\n"); + System.out.println("Bienvenue dans ce jeu d'echec sur console !\n"); Echiquier e = new Echiquier(); do { @@ -44,9 +42,9 @@ public class main { do { - System.out.println("Quelle pièce voulez vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); + System.out.println("Quelle pi�ce voulez vous d�placer ? Donnez le code correspondant � la pi�ce � d�placer(ex : A1).\n"); A = sc.nextLine(); - System.out.println("A quel endroit la poser ? Donnez le code correspondant de l'endroit où poser la pièce.\n"); + System.out.println("A quel endroit la poser ? Donnez le code correspondant � l'endroit o� poser la pi�ce.\n"); B = sc.nextLine(); }while (e.VerifFinale(j1, A,B) != true); @@ -57,16 +55,16 @@ public class main { System.out.println(e.toString()); // JOUEUR2 - System.out.println("Tour de "+j2.getNom()+"\n"); + System.out.println("Tour de"+j2.getNom()+"\n"); do { - System.out.println("Quelle pièce voulez vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); + System.out.println("Quelle pi�ce voulez vous d�placer ? Donnez le code correspondant � la pi�ce � d�placer(ex : A1).\n"); - //entrer coordonn�es piece a bouger APRES ON PASSERA PAR DIRECT COMBINAISON LETTRE-CHIFFRE + //entrer coordonn�es piece a bouger APRES ON PASSERA PAR DIRECT COMBINAISON LETTRE-CHIFFRE A = sc.nextLine(); - System.out.println("A quel endroit la poser ? Donnez le code correspondant de l'endroit où poser la pièce.\n"); - //entrer coordonn�es endroit vis� APRES ON PASSERA PAR DIRECT COMBINAISON LETTRE-CHIFFRE + System.out.println("A quel endroit la poser ? Donnez le code correspondant � l'endroit o� poser la pi�ce.\n"); + //entrer coordonn�es endroit vis� APRES ON PASSERA PAR DIRECT COMBINAISON LETTRE-CHIFFRE B = sc.nextLine(); }while (e.VerifFinale(j2, A,B) != true); @@ -76,5 +74,5 @@ public class main { }while (jeu == true); sc.close(); } - + } From 70739853c7d15e89637af6a19b2a2d4eb60c9523 Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Thu, 9 May 2019 10:26:09 +0200 Subject: [PATCH 109/271] update Piece.java Class MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - passage de la classe en Abstract - ajout booléen de verif de déplacement - ajout méthode aBouge() universelle à toutes les pièces - ajout méthode abstract deplacable --- src/piecesEchiquier/Piece.java | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index 5c214a0..4445962 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -1,6 +1,6 @@ package piecesEchiquier; -public class Piece { +public abstract class Piece { private String couleur; @@ -8,7 +8,7 @@ public class Piece { private boolean enVie = true; private Position position; private Position ini; - + private boolean verif = false; //constructeur par defaut qui devrait probablement remplacer vide @@ -34,6 +34,23 @@ public class Piece { } + public boolean aBouge() + { + + if(this.getIni() != this.getPosition()) + { + verif=true; + } + if(this.getIni() == this.getPosition() && verif == false) + { + verif=false; + } + return verif; + } + + public abstract boolean[][] deplacable(Echiquier e,Piece p); + + /* //verifie une eventuelle collision a chaque case public boolean collision(Case caseArrivee){ return caseArrivee.estVide(); From 8f6df580b0662d63afc4f0f5b738015c51872aa8 Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Thu, 9 May 2019 10:27:45 +0200 Subject: [PATCH 110/271] update Tour.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit suppression méthode aBouge() car présente dansclasse parente. --- src/piecesEchiquier/Tour.java | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java index 5b49f6c..2c76222 100755 --- a/src/piecesEchiquier/Tour.java +++ b/src/piecesEchiquier/Tour.java @@ -1,26 +1,12 @@ package piecesEchiquier; public class Tour extends Piece { - private boolean verif=false; public Tour(String couleur,String l, Position pos) { super(couleur,l,pos); } - public boolean aBouge() - { - if(this.getIni() != this.getPosition()) - { - verif=true; - } - if(this.getIni() == this.getPosition() && verif == false) - { - verif=false; - } - return verif; - } - public boolean[][] deplacable(Echiquier e,Piece p) { boolean[][] deplacementsInherentsPiece = new boolean[8][8]; Position position = this.getPosition(); From 57715821447527d77b5079f4c40a44c977cedbd2 Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Thu, 9 May 2019 10:40:17 +0200 Subject: [PATCH 111/271] update class Fou.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ajout méthode a bouge --- src/piecesEchiquier/Fou.java | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java index a6378f0..01aa863 100755 --- a/src/piecesEchiquier/Fou.java +++ b/src/piecesEchiquier/Fou.java @@ -2,10 +2,25 @@ package piecesEchiquier; public class Fou extends Piece { - public Fou(String c,String l, Position pos) - { - super(c,l,pos); + public Fou(String c,String n, Position pos) + {//c = couleur, n = nom, pos = position + super(c,n,pos); } + public boolean[][] deplacable(Echiquier e,Piece p) { + boolean[][] deplacementsInherentsPiece = new boolean[8][8]; + Position position = this.getPosition(); + int x = position.getX(); + int y = position.getY(); + + for(int i=x; i<8; i++) { + deplacementsInherentsPiece[i][y]=true; + } + for(int j=0; j<8; j++) { + deplacementsInherentsPiece[x][j]=true; + } + deplacementsInherentsPiece[x][y]=false; + return deplacementsInherentsPiece; + } } From cb3f17343e5c3fe1ca51401979c70b22d627d669 Mon Sep 17 00:00:00 2001 From: Anthony Date: Thu, 9 May 2019 10:54:41 +0200 Subject: [PATCH 112/271] Modificationfonction deplacable tour (+arrangements pour que ce soit fonctionnel) --- src/piecesEchiquier/Echiquier.java | 33 ++++++++++----- src/piecesEchiquier/Piece.java | 2 +- src/piecesEchiquier/Pion.java | 18 ++++----- src/piecesEchiquier/Tour.java | 65 ++++++++++++++++++++++++++++-- 4 files changed, 94 insertions(+), 24 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 7722022..2cbd987 100755 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -121,19 +121,21 @@ public class Echiquier { int k; int l; - do { + do { /// Tests pour la premiere piece i++; j = -1; + + do { j++; - if (getCodes()[i][j].equals(A)) + if (getCodes()[i][j].equals(A)) //Cherche dans la mqtrice code si on trouve un string en accord avec celui donné par le joueur { - if (this.getEchiquier()[i][j].getClass().getName().equals("Piece")) + if (this.getEchiquier()[i][j].getClass().getName().equals("Piece")) // Verifie si la case choisie n'est pas vide { System.out.println("Vous avez choisi une case vide. Recommencez."); return false; } - else if (this.getEchiquier()[i][j].getCouleur() != J.getCouleur()) + else if (this.getEchiquier()[i][j].getCouleur() != J.getCouleur()) // Verifie si la piece choisie n'est pas de la faction opposée { System.out.println("Le pion choisi n'est pas de votre faction. Recommencez."); return false; @@ -141,21 +143,34 @@ public class Echiquier { } }while(( (getCodes()[i][j].equals(A)) == false) && (j+1 < codes.length)); }while((getCodes()[i][j].equals(A) == false) && (i+1 < codes.length)); + + + + - for (k = 0; k < codes.length;k++) + for (k = 0; k < codes.length;k++) // Tests pour la 2 eme piece/case choisie { - for (l = 0; l < codes.length;l++) { + for (l = 0; l < codes.length;l++) + { if (getCodes()[k][l].equals(B) == true) { - if (this.getEchiquier()[k][l].getCouleur() == J.getCouleur()) + if (this.getEchiquier()[k][l].getCouleur() == J.getCouleur()) // Verifie que la piece visée n'est pas de ta faction { System.out.println("Le pion que vous voulez manger est de votre faction. Recommencez."); return false; - }else if (this.getEchiquier()[i][j].deplacable(this.getEchiquier()[k][l]) == false) + + } + + + else if (this.getEchiquier()[i][j].deplacable(this,this.getEchiquier()[k][l]) == false) // VERIFICATION AVEC FONCTION DEPLACABLE { System.out.println("D�placement impossible. Recommencez."); return false; - }else + + } + + + else { System.out.println("Choix validés. déplacement en cours."); this.getEchiquier()[k][l] = this.getEchiquier()[i][j]; diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index 5c214a0..65593e3 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -103,7 +103,7 @@ public class Piece { this.ini = ini; } - public boolean deplacable(Piece p) + public boolean deplacable(Echiquier e,Piece p) { return true; } diff --git a/src/piecesEchiquier/Pion.java b/src/piecesEchiquier/Pion.java index 6a271ce..1d27e41 100755 --- a/src/piecesEchiquier/Pion.java +++ b/src/piecesEchiquier/Pion.java @@ -10,9 +10,9 @@ public class Pion extends Piece { } - public boolean deplacable(Piece p) + public boolean deplacable(Piece p) // CHECK QUE PION PEUT ETRE DEPLACE { - if (p.getPosition().getX()-1 == this.getPosition().getX() || p.getPosition().getX()+1 == this.getPosition().getX()) + if (p.getPosition().getX()-1 == this.getPosition().getX() || p.getPosition().getX()+1 == this.getPosition().getX()) //vERIFICATION SI LA PERSONNE SOUHAITE MANGER LA PIECE { //System.out.println("test4"); if ((this.getCouleur().equals("Blanc") && p.getPosition().getY()-1 == this.getPosition().getY()) || (this.getCouleur() == "noir" && p.getPosition().getY()+1 == this.getPosition().getY())) @@ -25,23 +25,19 @@ public class Pion extends Piece { } System.out.println("Vous avez mangé une pièce !"); return true; - } - - } + } + } + + // AVancer tout droit else if (p.getPosition().getX() == this.getPosition().getX()) { if ((this.getCouleur().equals("Blanc")) && (p.getPosition().getY()-1 == this.getPosition().getY()) || (this.getCouleur().equals("Noir")) && (p.getPosition().getY()+1 == this.getPosition().getY())) { - //System.out.println("test1"); return true; } - /* - else if ((this.getCouleur().equals("Noir")) && (p.getPosition().getY()+1 == this.getPosition().getY())) - { - return true; - } */ + if (this.aBouge() == false && ((this.getCouleur().equals("Blanc") && p.getPosition().getY()-2 == this.getPosition().getY()) || (this.getCouleur().equals("Noir") && p.getPosition().getY()+2 == this.getPosition().getY()))) { System.out.println("test2"); diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java index 5b49f6c..6b0c4d6 100755 --- a/src/piecesEchiquier/Tour.java +++ b/src/piecesEchiquier/Tour.java @@ -21,8 +21,9 @@ public class Tour extends Piece { return verif; } - public boolean[][] deplacable(Echiquier e,Piece p) { - boolean[][] deplacementsInherentsPiece = new boolean[8][8]; + public boolean deplacable(Echiquier e,Piece p) + { + /*boolean[][] deplacementsInherentsPiece = new boolean[8][8]; Position position = this.getPosition(); int x = position.getX(); int y = position.getY(); @@ -34,6 +35,64 @@ public class Tour extends Piece { deplacementsInherentsPiece[x][j]=true; } deplacementsInherentsPiece[x][y]=false; - return deplacementsInherentsPiece; + return deplacementsInherentsPiece;*/ + if(p.getPosition().getX() == this.getPosition().getX()) // verification les 2 pieces sont sur la meme colonne + { + if (p.getPosition().getY() > this.getPosition().getY()) // Test si la 2 eme piece est au dessus de la 1ere + { + for (int i = this.getPosition().getY()+1; i < p.getPosition().getY();i++) // verifie qu'il n'y a pas d'obstacles sur le chemin + { + if (!(e.getEchiquier()[this.getPosition().getX()][i].getLettre().equals(".."))) // SI case non vide + { + return false; + } + } + return true; + } + + else if (p.getPosition().getY() < this.getPosition().getY()) // Test si la 2 eme piece est en dessous de la 1ere + { + for (int i = this.getPosition().getX()-1; i > p.getPosition().getX();i--) + { + if (!(e.getEchiquier()[this.getPosition().getY()][i].getLettre().equals(".."))) // SI case non vide + { + return false; + } + } + return true; + } + return false; + } + + else if(p.getPosition().getY() == this.getPosition().getY()) // verification les 2 pieces sont sur la meme colonne + { + if (p.getPosition().getX() > this.getPosition().getX()) // Test si la 2 eme piece est au dessus de la 1ere + { + for (int i = this.getPosition().getX()+1; i < p.getPosition().getX();i++) // verifie qu'il n'y a pas d'obstacles sur le chemin + { + if (!(e.getEchiquier()[i][this.getPosition().getY()].getLettre().equals(".."))) // SI case non vide + { + System.out.println("test"); + return false; + } + } + return true; + } + + else if (p.getPosition().getX() < this.getPosition().getX()) // Test si la 2 eme piece est au dessus de la 1ere + { + for (int i = this.getPosition().getX()-1; i > p.getPosition().getX();i--) // verifie qu'il n'y a pas d'obstacles sur le chemin + { + if (!(e.getEchiquier()[i][this.getPosition().getY()].getLettre().equals(".."))) // SI case non vide + { + return false; + } + } + return true; + } + return false; + } + else + return false; } } From a978829b7b4b261eec7cc9284916bad595bb01bd Mon Sep 17 00:00:00 2001 From: Anthony Date: Thu, 9 May 2019 11:08:09 +0200 Subject: [PATCH 113/271] force push --- src/piecesEchiquier/Fou.java | 17 ----------------- src/piecesEchiquier/Piece.java | 4 +--- src/piecesEchiquier/Tour.java | 27 +-------------------------- 3 files changed, 2 insertions(+), 46 deletions(-) diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java index 01aa863..631d6be 100755 --- a/src/piecesEchiquier/Fou.java +++ b/src/piecesEchiquier/Fou.java @@ -6,21 +6,4 @@ public class Fou extends Piece { {//c = couleur, n = nom, pos = position super(c,n,pos); } - - public boolean[][] deplacable(Echiquier e,Piece p) { - boolean[][] deplacementsInherentsPiece = new boolean[8][8]; - Position position = this.getPosition(); - int x = position.getX(); - int y = position.getY(); - - for(int i=x; i<8; i++) { - deplacementsInherentsPiece[i][y]=true; - } - for(int j=0; j<8; j++) { - deplacementsInherentsPiece[x][j]=true; - } - deplacementsInherentsPiece[x][y]=false; - return deplacementsInherentsPiece; - } - } diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index f85d3db..3067cbb 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -1,6 +1,6 @@ package piecesEchiquier; -public abstract class Piece { +public class Piece { private String couleur; @@ -47,8 +47,6 @@ public abstract class Piece { } return verif; } - - public abstract boolean[][] deplacable(Echiquier e,Piece p); /* //verifie une eventuelle collision a chaque case diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java index c314d9b..b472523 100755 --- a/src/piecesEchiquier/Tour.java +++ b/src/piecesEchiquier/Tour.java @@ -7,34 +7,9 @@ public class Tour extends Piece { super(couleur,l,pos); } - public boolean aBouge() - { - if(this.getIni() != this.getPosition()) - { - verif=true; - } - if(this.getIni() == this.getPosition() && verif == false) - { - verif=false; - } - return verif; - } - public boolean deplacable(Echiquier e,Piece p) { - /*boolean[][] deplacementsInherentsPiece = new boolean[8][8]; - Position position = this.getPosition(); - int x = position.getX(); - int y = position.getY(); - - for(int i=x; i<8; i++) { - deplacementsInherentsPiece[i][y]=true; - } - for(int j=0; j<8; j++) { - deplacementsInherentsPiece[x][j]=true; - } - deplacementsInherentsPiece[x][y]=false; - return deplacementsInherentsPiece;*/ + if(p.getPosition().getX() == this.getPosition().getX()) // verification les 2 pieces sont sur la meme colonne { if (p.getPosition().getY() > this.getPosition().getY()) // Test si la 2 eme piece est au dessus de la 1ere From 80071276f39ac79b41223822e1843399ec3cd348 Mon Sep 17 00:00:00 2001 From: Anthony Date: Thu, 9 May 2019 11:22:10 +0200 Subject: [PATCH 114/271] s --- src/visuel/main.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/visuel/main.java b/src/visuel/main.java index d54881a..04c6b15 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -42,6 +42,7 @@ public class Main { do { + System.out.println("Quelle pi�ce voulez vous d�placer ? Donnez le code correspondant � la pi�ce � d�placer(ex : A1).\n"); A = sc.nextLine(); System.out.println("A quel endroit la poser ? Donnez le code correspondant � l'endroit o� poser la pi�ce.\n"); From 045681caf80b1efdaf0ae0931a61bb81694cea0a Mon Sep 17 00:00:00 2001 From: Anthony Date: Thu, 9 May 2019 11:32:12 +0200 Subject: [PATCH 115/271] add push --- src/piecesEchiquier/Tour.java | 77 +++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java index b472523..8629c05 100755 --- a/src/piecesEchiquier/Tour.java +++ b/src/piecesEchiquier/Tour.java @@ -1,5 +1,78 @@ package piecesEchiquier; +public class Tour extends Piece { + + public Tour(String couleur,String l, Position pos) + { + super(couleur,l,pos); + } + + public boolean deplacable(Echiquier e,Piece p) + { + + if(p.getPosition().getX() == this.getPosition().getX()) // verification les 2 pieces sont sur la meme colonne + { + if (p.getPosition().getY() > this.getPosition().getY()) // Test si la 2 eme piece est au dessus de la 1ere + { + for (int i = this.getPosition().getY()+1; i < p.getPosition().getY();i++) // verifie qu'il n'y a pas d'obstacles sur le chemin + { + if (!(e.getEchiquier()[this.getPosition().getX()][i].getLettre().equals(".."))) // SI case non vide + { + return false; + } + } + return true; + } + + else if (p.getPosition().getY() < this.getPosition().getY()) // Test si la 2 eme piece est en dessous de la 1ere + { + for (int i = this.getPosition().getX()-1; i > p.getPosition().getX();i--) + { + if (!(e.getEchiquier()[this.getPosition().getY()][i].getLettre().equals(".."))) // SI case non vide + { + return false; + } + } + return true; + } + return false; + } + + else if(p.getPosition().getY() == this.getPosition().getY()) // verification les 2 pieces sont sur la meme colonne + { + if (p.getPosition().getX() > this.getPosition().getX()) // Test si la 2 eme piece est au dessus de la 1ere + { + for (int i = this.getPosition().getX()+1; i < p.getPosition().getX();i++) // verifie qu'il n'y a pas d'obstacles sur le chemin + { + if (!(e.getEchiquier()[i][this.getPosition().getY()].getLettre().equals(".."))) // SI case non vide + { + System.out.println("test"); + return false; + } + } + return true; + } + + else if (p.getPosition().getX() < this.getPosition().getX()) // Test si la 2 eme piece est au dessus de la 1ere + { + for (int i = this.getPosition().getX()-1; i > p.getPosition().getX();i--) // verifie qu'il n'y a pas d'obstacles sur le chemin + { + if (!(e.getEchiquier()[i][this.getPosition().getY()].getLettre().equals(".."))) // SI case non vide + { + return false; + } + } + return true; + } + return false; + } + else + return false; + } + + /* + * package piecesEchiquier; + public class Tour extends Piece { public Tour(String couleur,String l, Position pos) @@ -69,4 +142,8 @@ public class Tour extends Piece { else return false; } +} + + * */ + } From 3f3aac3070f8f3a88d4e65008f6935ed1b0b0e7f Mon Sep 17 00:00:00 2001 From: sj801446 Date: Thu, 9 May 2019 15:06:42 +0200 Subject: [PATCH 116/271] Update main.java --- src/visuel/main.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/visuel/main.java b/src/visuel/main.java index 04c6b15..4c08ca1 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -18,7 +18,7 @@ public class Main { // joueurs APRES ON DEMANDERA NOM - Joueur j1 = new Joueur("Manon","Blanc"); + Joueur j1 = new Joueur("Marion la Stagiaire","Blanc"); Joueur j2 = new Joueur("Autre","Noir"); From 968cbe0f426c3c2037eac7710428c379f1d58e10 Mon Sep 17 00:00:00 2001 From: Manon Date: Thu, 9 May 2019 19:58:45 +0200 Subject: [PATCH 117/271] Tour fonctionnelle + quelques modifications Dans verifFInale il fallait stocker les coors avant de deplacer la piece --- src/piecesEchiquier/Echiquier.java | 37 +++++++++++++++--------------- src/piecesEchiquier/Piece.java | 16 +++++++++---- src/piecesEchiquier/Pion.java | 9 +++----- src/piecesEchiquier/Tour.java | 28 ++++++++++++++-------- src/visuel/main.java | 24 ++++++++----------- 5 files changed, 61 insertions(+), 53 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 2cbd987..f5887c4 100755 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -15,6 +15,7 @@ public class Echiquier { {"A2","B2","C2","D2","E2","F2","G2","H2"}, {"A1","B1","C1","D1","E1","F1","G1","H1"} }; + private Pion pionB1 = new Pion("Blanc","PB",new Position(1,2)); private Pion pionB2 = new Pion("Blanc","PB",new Position(2,2)); private Pion pionB3 = new Pion("Blanc","PB",new Position(3,2)); @@ -79,19 +80,13 @@ public class Echiquier { } - - public void setEchiquier(Piece[][] echiquier) { - this.echiquier = echiquier; - } - - public String[][] getCodes() { return codes; } - public String toString() + public String toString() // FONCTION AFFICHAGE { char alphabet[]= {'A','B','C','D','E','F','G','H'}; String echec = ""; @@ -101,7 +96,7 @@ public class Echiquier { echec+= compteur + " "; for (int j = 0; j < 8;j++) { - echec +=echiquier[i][j].getLettre(); + echec +=echiquier[i][j].getNom(); echec += " "; } echec += "\n"; @@ -114,21 +109,23 @@ public class Echiquier { return echec; } - public boolean VerifFinale(Joueur J, String A, String B) + public boolean VerifFinale(Joueur J, String A, String B) // FONCTION TRADUCTION, VERIF + DEPLACEMENTS SI POSSIBLE { int i = -1; int j = -1; int k; int l; + int stockX; + int stockY; - do { /// Tests pour la premiere piece + do { /// TEST 1ERE COORS i++; j = -1; do { j++; - if (getCodes()[i][j].equals(A)) //Cherche dans la mqtrice code si on trouve un string en accord avec celui donné par le joueur + if (getCodes()[i][j].equals(A)) //Cherche dans la matrice code si on trouve une string = celle donnée par le joueur { if (this.getEchiquier()[i][j].getClass().getName().equals("Piece")) // Verifie si la case choisie n'est pas vide { @@ -148,7 +145,7 @@ public class Echiquier { - for (k = 0; k < codes.length;k++) // Tests pour la 2 eme piece/case choisie + for (k = 0; k < codes.length;k++) /// TEST 2EME COORS { for (l = 0; l < codes.length;l++) { @@ -164,7 +161,7 @@ public class Echiquier { else if (this.getEchiquier()[i][j].deplacable(this,this.getEchiquier()[k][l]) == false) // VERIFICATION AVEC FONCTION DEPLACABLE { - System.out.println("D�placement impossible. Recommencez."); + System.out.println("Déplacement impossible. Recommencez."); return false; } @@ -173,24 +170,28 @@ public class Echiquier { else { System.out.println("Choix validés. déplacement en cours."); + stockX = this.getEchiquier()[k][l].getPosition().getX(); + stockY = this.getEchiquier()[k][l].getPosition().getY(); this.getEchiquier()[k][l] = this.getEchiquier()[i][j]; - this.getEchiquier()[i][j] = new Piece(new Position(i,j)); + this.getEchiquier()[k][l].setPosition(new Position(stockX,stockY)); + this.getEchiquier()[i][j] = new Piece(new Position(this.getEchiquier()[i][j].getPosition().getX(),this.getEchiquier()[i][j].getPosition().getY())); return true; } } } } - System.out.println("Un de vos codes est faux. Recommencez."); + System.out.println("Un de vos codes est faux. Recommencez."); // SI COORS INEXISTANTE (EX : A) return false; } public boolean estVide(Position position) { int x = position.getX(); int y = position.getY(); - if(this.echiquier[x][y].getLettre()=="..") { - return true; - } + + if(this.echiquier[x][y].getNom()=="..") { + return true; + } return false; } } diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index 3067cbb..b79728c 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -4,7 +4,8 @@ public class Piece { private String couleur; - private String lettre = ".."; + //private String lettre = ".."; + private String nom = ".."; private boolean enVie = true; private Position position; private Position ini; @@ -27,7 +28,8 @@ public class Piece { public Piece(String couleur,String l, Position pos) { this.couleur = couleur; - this.lettre = l; + //this.lettre = l; + this.nom = l; //this.emplacementIni = emp; this.position = pos; this.ini=pos; @@ -64,14 +66,20 @@ public class Piece { // gets & sets - + /* public String getLettre() { return lettre; } public void setLettre(String lettre) { this.lettre = lettre; } - + */ + public String getNom() { + return nom; + } + public void setNom(String nom) { + this.nom = nom; + } //////////// /* public String getEmplacement() { diff --git a/src/piecesEchiquier/Pion.java b/src/piecesEchiquier/Pion.java index 1d27e41..96b5ebb 100755 --- a/src/piecesEchiquier/Pion.java +++ b/src/piecesEchiquier/Pion.java @@ -14,22 +14,21 @@ public class Pion extends Piece { { if (p.getPosition().getX()-1 == this.getPosition().getX() || p.getPosition().getX()+1 == this.getPosition().getX()) //vERIFICATION SI LA PERSONNE SOUHAITE MANGER LA PIECE { - //System.out.println("test4"); if ((this.getCouleur().equals("Blanc") && p.getPosition().getY()-1 == this.getPosition().getY()) || (this.getCouleur() == "noir" && p.getPosition().getY()+1 == this.getPosition().getY())) { - //System.out.println("test5"); - if (p.getLettre().equals("..")) + if (p.getNom().equals("..")) { System.out.println("Vous tentez de manger une case vide."); return false; } + System.out.println("Vous avez mangé une pièce !"); return true; } } - // AVancer tout droit + // Avancer tout droit else if (p.getPosition().getX() == this.getPosition().getX()) { @@ -40,11 +39,9 @@ public class Pion extends Piece { if (this.aBouge() == false && ((this.getCouleur().equals("Blanc") && p.getPosition().getY()-2 == this.getPosition().getY()) || (this.getCouleur().equals("Noir") && p.getPosition().getY()+2 == this.getPosition().getY()))) { - System.out.println("test2"); return true; } } - System.out.println("test1"); return false; } diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java index 8629c05..2d1842c 100755 --- a/src/piecesEchiquier/Tour.java +++ b/src/piecesEchiquier/Tour.java @@ -9,15 +9,21 @@ public class Tour extends Piece { public boolean deplacable(Echiquier e,Piece p) { - + System.out.println("test"); + System.out.println(p.getPosition().getX()); + System.out.println(this.getPosition().getX()); + System.out.println(p.getPosition().getY()); + System.out.println(this.getPosition().getY()); if(p.getPosition().getX() == this.getPosition().getX()) // verification les 2 pieces sont sur la meme colonne { + System.out.println("test1"); if (p.getPosition().getY() > this.getPosition().getY()) // Test si la 2 eme piece est au dessus de la 1ere { - for (int i = this.getPosition().getY()+1; i < p.getPosition().getY();i++) // verifie qu'il n'y a pas d'obstacles sur le chemin + for (int i = this.getPosition().getY()+1; i < p.getPosition().getY()-1;i++) // verifie qu'il n'y a pas d'obstacles sur le chemin { - if (!(e.getEchiquier()[this.getPosition().getX()][i].getLettre().equals(".."))) // SI case non vide + if (!(e.getEchiquier()[this.getPosition().getX()][i].getNom().equals(".."))) // SI case non vide { + System.out.println("Le chemin n'est pas libre."); return false; } } @@ -26,10 +32,11 @@ public class Tour extends Piece { else if (p.getPosition().getY() < this.getPosition().getY()) // Test si la 2 eme piece est en dessous de la 1ere { - for (int i = this.getPosition().getX()-1; i > p.getPosition().getX();i--) + for (int i = this.getPosition().getY()-1; i > p.getPosition().getY()+1;i--) { - if (!(e.getEchiquier()[this.getPosition().getY()][i].getLettre().equals(".."))) // SI case non vide + if (!(e.getEchiquier()[this.getPosition().getX()][i].getNom().equals(".."))) // SI case non vide { + System.out.println("Le chemin n'est pas libre."); return false; } } @@ -40,13 +47,14 @@ public class Tour extends Piece { else if(p.getPosition().getY() == this.getPosition().getY()) // verification les 2 pieces sont sur la meme colonne { + System.out.println("test2"); if (p.getPosition().getX() > this.getPosition().getX()) // Test si la 2 eme piece est au dessus de la 1ere { - for (int i = this.getPosition().getX()+1; i < p.getPosition().getX();i++) // verifie qu'il n'y a pas d'obstacles sur le chemin + for (int i = this.getPosition().getX()+1; i < p.getPosition().getX()-1;i++) // verifie qu'il n'y a pas d'obstacles sur le chemin { - if (!(e.getEchiquier()[i][this.getPosition().getY()].getLettre().equals(".."))) // SI case non vide + if (!(e.getEchiquier()[i][this.getPosition().getY()].getNom().equals(".."))) // SI case non vide { - System.out.println("test"); + System.out.println("Le chemin n'est pas libre."); return false; } } @@ -55,9 +63,9 @@ public class Tour extends Piece { else if (p.getPosition().getX() < this.getPosition().getX()) // Test si la 2 eme piece est au dessus de la 1ere { - for (int i = this.getPosition().getX()-1; i > p.getPosition().getX();i--) // verifie qu'il n'y a pas d'obstacles sur le chemin + for (int i = this.getPosition().getX()-1; i > p.getPosition().getX()+1;i--) // verifie qu'il n'y a pas d'obstacles sur le chemin { - if (!(e.getEchiquier()[i][this.getPosition().getY()].getLettre().equals(".."))) // SI case non vide + if (!(e.getEchiquier()[i][this.getPosition().getY()].getNom().equals(".."))) // SI case non vide { return false; } diff --git a/src/visuel/main.java b/src/visuel/main.java index 4c08ca1..f58c9d6 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -1,12 +1,12 @@ package visuel; // sert pour recup input clavier -import java.util.Scanner; +import java.util.Scanner; //a voir si on fait une classe 'leScan' pour gerer le scan du clavier plus simplement import joueurs.Joueur; import piecesEchiquier.Echiquier; -public class Main { +public class main { public static void main (String[] args) { @@ -42,33 +42,27 @@ public class Main { do { - - System.out.println("Quelle pi�ce voulez vous d�placer ? Donnez le code correspondant � la pi�ce � d�placer(ex : A1).\n"); + System.out.println("Quelle piece voulez vous deplacer ? Donnez le code correspondant de la piece a  deplacer(ex : A1).\n"); A = sc.nextLine(); - System.out.println("A quel endroit la poser ? Donnez le code correspondant � l'endroit o� poser la pi�ce.\n"); + System.out.println("A quel endroit la poser ? Donnez le code correspondant a l'endroit ou poser la piece.\n"); B = sc.nextLine(); - }while (e.VerifFinale(j1, A,B) != true); - - //e.deplacer(A,B); + }while (e.VerifFinale(j1, A,B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées //REAFFICHAGE ECHIQUIER System.out.println(e.toString()); // JOUEUR2 - System.out.println("Tour de"+j2.getNom()+"\n"); + System.out.println("Tour de "+j2.getNom()+"\n"); do { - System.out.println("Quelle pi�ce voulez vous d�placer ? Donnez le code correspondant � la pi�ce � d�placer(ex : A1).\n"); - - //entrer coordonn�es piece a bouger APRES ON PASSERA PAR DIRECT COMBINAISON LETTRE-CHIFFRE + System.out.println("Quelle piece voulez vous deplacer ? Donnez le code correspondant de la piece a  deplacer(ex : A1).\n"); A = sc.nextLine(); - System.out.println("A quel endroit la poser ? Donnez le code correspondant � l'endroit o� poser la pi�ce.\n"); - //entrer coordonn�es endroit vis� APRES ON PASSERA PAR DIRECT COMBINAISON LETTRE-CHIFFRE + System.out.println("A quel endroit la poser ? Donnez le code correspondant de l'endroit la poser la piece.\n"); B = sc.nextLine(); - }while (e.VerifFinale(j2, A,B) != true); + }while (e.VerifFinale(j2, A,B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées //jeu = false; From 3ec9d2fec0cb45f0c55c2f88fe69477c27875c98 Mon Sep 17 00:00:00 2001 From: Manon Date: Fri, 10 May 2019 00:10:06 +0200 Subject: [PATCH 118/271] Tour fonctionnelle (pas comme avant) + debut de fou experimental --- src/piecesEchiquier/Echiquier.java | 16 +++-- src/piecesEchiquier/Fou.java | 64 ++++++++++++++++++ src/piecesEchiquier/Piece.java | 9 --- src/piecesEchiquier/Tour.java | 102 ++++------------------------- 4 files changed, 88 insertions(+), 103 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index f5887c4..e457406 100755 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -115,8 +115,12 @@ public class Echiquier { int j = -1; int k; int l; - int stockX; - int stockY; + //int stockX; + //int stockY; + //int stockX2; + //int stockY2; + Position stock; + Position stock2; do { /// TEST 1ERE COORS i++; @@ -170,11 +174,11 @@ public class Echiquier { else { System.out.println("Choix validés. déplacement en cours."); - stockX = this.getEchiquier()[k][l].getPosition().getX(); - stockY = this.getEchiquier()[k][l].getPosition().getY(); + stock = new Position(l+1,8-k); + stock2 = new Position(j+1,8-i); this.getEchiquier()[k][l] = this.getEchiquier()[i][j]; - this.getEchiquier()[k][l].setPosition(new Position(stockX,stockY)); - this.getEchiquier()[i][j] = new Piece(new Position(this.getEchiquier()[i][j].getPosition().getX(),this.getEchiquier()[i][j].getPosition().getY())); + this.getEchiquier()[k][l].setPosition(stock); + this.getEchiquier()[i][j] = new Piece(stock2); return true; } diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java index 631d6be..ef695b5 100755 --- a/src/piecesEchiquier/Fou.java +++ b/src/piecesEchiquier/Fou.java @@ -6,4 +6,68 @@ public class Fou extends Piece { {//c = couleur, n = nom, pos = position super(c,n,pos); } + + public boolean deplacable(Echiquier e,Piece p) + { + System.out.println("test"); + System.out.println(p.getPosition().getX()); + System.out.println(p.getPosition().getY()); + System.out.println(this.getPosition().getX()); + System.out.println(this.getPosition().getY()); + for (int i = 1; i < 8; i++) + { + System.out.println("test2"); + if ( p.getPosition().getX() == this.getPosition().getX()+i) // On trouve le x de la 2eme coors + { + System.out.println("test3"); + if (p.getPosition().getY() == this.getPosition().getY()+i ) // on verifie que quand on avance de x vers la droite on monte aussi de x + { + System.out.println("test4"); + //for (int j = this.getPosition().getX()+1;j <= p.getPosition().getX()-1;j++) // on verifie que le chemin est libre + for (int j = 1;this.getPosition().getX()+j <= p.getPosition().getX()-1;j++) // on verifie que le chemin est libre + { + System.out.println(e.getEchiquier()[this.getPosition().getX()+j][this.getPosition().getY()+j].getPosition().getX()); + if ( !(e.getEchiquier()[this.getPosition().getX()+j][this.getPosition().getY()+j].getNom().equals("..")) ) + { + System.out.println("Le chemin n'est pas libre."); + return false; + } + } + return true; + } + + + else if (p.getPosition().getY() == this.getPosition().getY()-i) + { + for (int j = this.getPosition().getX()+1;j <= p.getPosition().getX()-1;j++) // on verifie que le chemin est libre + { + System.out.println("test5.2"); + if ( !(e.getEchiquier()[j][this.getPosition().getY()-j].getNom().equals("..")) ) + { + System.out.println("Le chemin n'est pas libre."); + return false; + } + } + return true; + } + } + + + + + + else if ( p.getPosition().getX() == this.getPosition().getX()-i) + { + System.out.println("test6"); + if (p.getPosition().getY() == this.getPosition().getY()+i || p.getPosition().getY() == this.getPosition().getY()-i) + { + return true; + } + } + } + return false; + + } + + } diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index b79728c..c6bd898 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -28,7 +28,6 @@ public class Piece { public Piece(String couleur,String l, Position pos) { this.couleur = couleur; - //this.lettre = l; this.nom = l; //this.emplacementIni = emp; this.position = pos; @@ -66,14 +65,6 @@ public class Piece { // gets & sets - /* - public String getLettre() { - return lettre; - } - public void setLettre(String lettre) { - this.lettre = lettre; - } - */ public String getNom() { return nom; } diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java index 2d1842c..61624b1 100755 --- a/src/piecesEchiquier/Tour.java +++ b/src/piecesEchiquier/Tour.java @@ -10,18 +10,21 @@ public class Tour extends Piece { public boolean deplacable(Echiquier e,Piece p) { System.out.println("test"); - System.out.println(p.getPosition().getX()); + System.out.println(this.getPosition().getX()); - System.out.println(p.getPosition().getY()); System.out.println(this.getPosition().getY()); + System.out.println(p.getPosition().getX()); + System.out.println(p.getPosition().getY()); + System.out.println("tet"); if(p.getPosition().getX() == this.getPosition().getX()) // verification les 2 pieces sont sur la meme colonne { - System.out.println("test1"); + System.out.println("test"); if (p.getPosition().getY() > this.getPosition().getY()) // Test si la 2 eme piece est au dessus de la 1ere { - for (int i = this.getPosition().getY()+1; i < p.getPosition().getY()-1;i++) // verifie qu'il n'y a pas d'obstacles sur le chemin + System.out.println("test2"); + for (int i = this.getPosition().getY()+1; i <= p.getPosition().getY()-1;i++) // verifie qu'il n'y a pas d'obstacles sur le chemin { - if (!(e.getEchiquier()[this.getPosition().getX()][i].getNom().equals(".."))) // SI case non vide + if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide { System.out.println("Le chemin n'est pas libre."); return false; @@ -32,9 +35,9 @@ public class Tour extends Piece { else if (p.getPosition().getY() < this.getPosition().getY()) // Test si la 2 eme piece est en dessous de la 1ere { - for (int i = this.getPosition().getY()-1; i > p.getPosition().getY()+1;i--) + for (int i = this.getPosition().getY()-1; i >= p.getPosition().getY()+1;i--) { - if (!(e.getEchiquier()[this.getPosition().getX()][i].getNom().equals(".."))) // SI case non vide + if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide { System.out.println("Le chemin n'est pas libre."); return false; @@ -47,12 +50,11 @@ public class Tour extends Piece { else if(p.getPosition().getY() == this.getPosition().getY()) // verification les 2 pieces sont sur la meme colonne { - System.out.println("test2"); if (p.getPosition().getX() > this.getPosition().getX()) // Test si la 2 eme piece est au dessus de la 1ere { - for (int i = this.getPosition().getX()+1; i < p.getPosition().getX()-1;i++) // verifie qu'il n'y a pas d'obstacles sur le chemin + for (int i = this.getPosition().getX()+1; i <= p.getPosition().getX()-1;i++) // verifie qu'il n'y a pas d'obstacles sur le chemin { - if (!(e.getEchiquier()[i][this.getPosition().getY()].getNom().equals(".."))) // SI case non vide + if (!(e.getEchiquier()[8-this.getPosition().getY()][i-1].getNom().equals(".."))) // SI case non vide { System.out.println("Le chemin n'est pas libre."); return false; @@ -63,9 +65,9 @@ public class Tour extends Piece { else if (p.getPosition().getX() < this.getPosition().getX()) // Test si la 2 eme piece est au dessus de la 1ere { - for (int i = this.getPosition().getX()-1; i > p.getPosition().getX()+1;i--) // verifie qu'il n'y a pas d'obstacles sur le chemin + for (int i = this.getPosition().getX()-1; i >= p.getPosition().getX()+1;i--) // verifie qu'il n'y a pas d'obstacles sur le chemin { - if (!(e.getEchiquier()[i][this.getPosition().getY()].getNom().equals(".."))) // SI case non vide + if (!(e.getEchiquier()[8-this.getPosition().getY()][i-1].getNom().equals(".."))) // SI case non vide { return false; } @@ -78,80 +80,4 @@ public class Tour extends Piece { return false; } - /* - * package piecesEchiquier; - -public class Tour extends Piece { - - public Tour(String couleur,String l, Position pos) - { - super(couleur,l,pos); - } - - public boolean deplacable(Echiquier e,Piece p) - { - - if(p.getPosition().getX() == this.getPosition().getX()) // verification les 2 pieces sont sur la meme colonne - { - if (p.getPosition().getY() > this.getPosition().getY()) // Test si la 2 eme piece est au dessus de la 1ere - { - for (int i = this.getPosition().getY()+1; i < p.getPosition().getY();i++) // verifie qu'il n'y a pas d'obstacles sur le chemin - { - if (!(e.getEchiquier()[this.getPosition().getX()][i].getLettre().equals(".."))) // SI case non vide - { - return false; - } - } - return true; - } - - else if (p.getPosition().getY() < this.getPosition().getY()) // Test si la 2 eme piece est en dessous de la 1ere - { - for (int i = this.getPosition().getX()-1; i > p.getPosition().getX();i--) - { - if (!(e.getEchiquier()[this.getPosition().getY()][i].getLettre().equals(".."))) // SI case non vide - { - return false; - } - } - return true; - } - return false; - } - - else if(p.getPosition().getY() == this.getPosition().getY()) // verification les 2 pieces sont sur la meme colonne - { - if (p.getPosition().getX() > this.getPosition().getX()) // Test si la 2 eme piece est au dessus de la 1ere - { - for (int i = this.getPosition().getX()+1; i < p.getPosition().getX();i++) // verifie qu'il n'y a pas d'obstacles sur le chemin - { - if (!(e.getEchiquier()[i][this.getPosition().getY()].getLettre().equals(".."))) // SI case non vide - { - System.out.println("test"); - return false; - } - } - return true; - } - - else if (p.getPosition().getX() < this.getPosition().getX()) // Test si la 2 eme piece est au dessus de la 1ere - { - for (int i = this.getPosition().getX()-1; i > p.getPosition().getX();i--) // verifie qu'il n'y a pas d'obstacles sur le chemin - { - if (!(e.getEchiquier()[i][this.getPosition().getY()].getLettre().equals(".."))) // SI case non vide - { - return false; - } - } - return true; - } - return false; - } - else - return false; - } -} - - * */ - } From 5d3cee5704a1ec05de21d20687d4eabe37ffddbe Mon Sep 17 00:00:00 2001 From: Manon Date: Fri, 10 May 2019 00:50:13 +0200 Subject: [PATCH 119/271] Fou fonctionnel (normalement) --- src/piecesEchiquier/Fou.java | 65 ++++++++++++++++++++++++------------ 1 file changed, 44 insertions(+), 21 deletions(-) diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java index ef695b5..3beef25 100755 --- a/src/piecesEchiquier/Fou.java +++ b/src/piecesEchiquier/Fou.java @@ -14,20 +14,18 @@ public class Fou extends Piece { System.out.println(p.getPosition().getY()); System.out.println(this.getPosition().getX()); System.out.println(this.getPosition().getY()); - for (int i = 1; i < 8; i++) + for (int i = 1; i < 8; i++) // ON CHERCHE SI LA 2EME COORS EST EN DIAGONALE DE LA 1 ERE { - System.out.println("test2"); - if ( p.getPosition().getX() == this.getPosition().getX()+i) // On trouve le x de la 2eme coors + + if ( p.getPosition().getX() == this.getPosition().getX()+i) // 2eme coors a droite de la 1 ere { - System.out.println("test3"); - if (p.getPosition().getY() == this.getPosition().getY()+i ) // on verifie que quand on avance de x vers la droite on monte aussi de x + + + if (p.getPosition().getY() == this.getPosition().getY()+i ) // on teste si quand on avance de x vers la droite on monte aussi de x { - System.out.println("test4"); - //for (int j = this.getPosition().getX()+1;j <= p.getPosition().getX()-1;j++) // on verifie que le chemin est libre for (int j = 1;this.getPosition().getX()+j <= p.getPosition().getX()-1;j++) // on verifie que le chemin est libre { - System.out.println(e.getEchiquier()[this.getPosition().getX()+j][this.getPosition().getY()+j].getPosition().getX()); - if ( !(e.getEchiquier()[this.getPosition().getX()+j][this.getPosition().getY()+j].getNom().equals("..")) ) + if ( !(e.getEchiquier()[8-(this.getPosition().getY()+j)][this.getPosition().getX()+j-1].getNom().equals("..")) ) { System.out.println("Le chemin n'est pas libre."); return false; @@ -37,12 +35,11 @@ public class Fou extends Piece { } - else if (p.getPosition().getY() == this.getPosition().getY()-i) + else if (p.getPosition().getY() == this.getPosition().getY()-i) // on teste si quand on avance de x vers la droite on descend aussi de x { - for (int j = this.getPosition().getX()+1;j <= p.getPosition().getX()-1;j++) // on verifie que le chemin est libre + for (int j = 1;this.getPosition().getX()+j <= p.getPosition().getX()-1;j++) // on verifie que le chemin est libre { - System.out.println("test5.2"); - if ( !(e.getEchiquier()[j][this.getPosition().getY()-j].getNom().equals("..")) ) + if ( !(e.getEchiquier()[8-(this.getPosition().getY()-j)][this.getPosition().getX()+j-1].getNom().equals("..")) ) { System.out.println("Le chemin n'est pas libre."); return false; @@ -50,19 +47,45 @@ public class Fou extends Piece { } return true; } + + + } - - - - - - else if ( p.getPosition().getX() == this.getPosition().getX()-i) + + else if ( p.getPosition().getX() == this.getPosition().getX()-i) // 2eme coors a gauche de la 1 ere { - System.out.println("test6"); - if (p.getPosition().getY() == this.getPosition().getY()+i || p.getPosition().getY() == this.getPosition().getY()-i) + + + if (p.getPosition().getY() == this.getPosition().getY()+i ) // on teste si quand on va en x vers la gauche on monte aussi de x { + for (int j = 1;this.getPosition().getX()-j >= p.getPosition().getX()+1;j++) // on verifie que le chemin est libre + { + if ( !(e.getEchiquier()[8-(this.getPosition().getY()+j)][this.getPosition().getX()+j-1].getNom().equals("..")) ) + { + System.out.println("Le chemin n'est pas libre."); + return false; + } + } return true; } + + + else if (p.getPosition().getY() == this.getPosition().getY()-i) // on teste si quand on va de x vers la droite on descend aussi de x + { + for (int j = 1;this.getPosition().getX()-j >= p.getPosition().getX()+1;j++) // on verifie que le chemin est libre + { + if ( !(e.getEchiquier()[8-(this.getPosition().getY()-j)][this.getPosition().getX()+j-1].getNom().equals("..")) ) + { + System.out.println("Le chemin n'est pas libre."); + return false; + } + } + return true; + } + + + + return true; } } return false; From 74d03d410dc9a9db537eca50c3fa3d69eb620059 Mon Sep 17 00:00:00 2001 From: Manon Date: Fri, 10 May 2019 09:52:51 +0200 Subject: [PATCH 120/271] Reine faite --- src/piecesEchiquier/Reine.java | 141 +++++++++++++++++++++++++++++++++ src/piecesEchiquier/Tour.java | 7 -- 2 files changed, 141 insertions(+), 7 deletions(-) diff --git a/src/piecesEchiquier/Reine.java b/src/piecesEchiquier/Reine.java index 568d58d..c6c0b5d 100755 --- a/src/piecesEchiquier/Reine.java +++ b/src/piecesEchiquier/Reine.java @@ -6,4 +6,145 @@ public class Reine extends Piece { { super(c,l,pos); } + + public boolean deplacable(Echiquier e,Piece p) + { + + if(p.getPosition().getX() == this.getPosition().getX()) // verification les 2 pieces sont sur la meme colonne + { + System.out.println("test"); + if (p.getPosition().getY() > this.getPosition().getY()) // Test si la 2 eme piece est au dessus de la 1ere + { + System.out.println("test2"); + for (int i = this.getPosition().getY()+1; i <= p.getPosition().getY()-1;i++) // verifie qu'il n'y a pas d'obstacles sur le chemin + { + if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide + { + System.out.println("Le chemin n'est pas libre."); + return false; + } + } + return true; + } + + else if (p.getPosition().getY() < this.getPosition().getY()) // Test si la 2 eme piece est en dessous de la 1ere + { + for (int i = this.getPosition().getY()-1; i >= p.getPosition().getY()+1;i--) + { + if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide + { + System.out.println("Le chemin n'est pas libre."); + return false; + } + } + return true; + } + return false; + } + + else if(p.getPosition().getY() == this.getPosition().getY()) // verification les 2 pieces sont sur la meme colonne + { + if (p.getPosition().getX() > this.getPosition().getX()) // Test si la 2 eme piece est au dessus de la 1ere + { + for (int i = this.getPosition().getX()+1; i <= p.getPosition().getX()-1;i++) // verifie qu'il n'y a pas d'obstacles sur le chemin + { + if (!(e.getEchiquier()[8-this.getPosition().getY()][i-1].getNom().equals(".."))) // SI case non vide + { + System.out.println("Le chemin n'est pas libre."); + return false; + } + } + return true; + } + + else if (p.getPosition().getX() < this.getPosition().getX()) // Test si la 2 eme piece est au dessus de la 1ere + { + for (int i = this.getPosition().getX()-1; i >= p.getPosition().getX()+1;i--) // verifie qu'il n'y a pas d'obstacles sur le chemin + { + if (!(e.getEchiquier()[8-this.getPosition().getY()][i-1].getNom().equals(".."))) // SI case non vide + { + return false; + } + } + return true; + } + return false; + } + + for (int i = 1; i < 8; i++) // ON CHERCHE SI LA 2EME COORS EST EN DIAGONALE DE LA 1 ERE + { + System.out.println("test"); + if ( p.getPosition().getX() == this.getPosition().getX()+i) // 2eme coors a droite de la 1 ere + { + + + if (p.getPosition().getY() == this.getPosition().getY()+i ) // on teste si quand on avance de x vers la droite on monte aussi de x + { + for (int j = 1;this.getPosition().getX()+j <= p.getPosition().getX()-1;j++) // on verifie que le chemin est libre + { + if ( !(e.getEchiquier()[8-(this.getPosition().getY()+j)][this.getPosition().getX()+j-1].getNom().equals("..")) ) + { + System.out.println("Le chemin n'est pas libre."); + return false; + } + } + return true; + } + + + else if (p.getPosition().getY() == this.getPosition().getY()-i) // on teste si quand on avance de x vers la droite on descend aussi de x + { + for (int j = 1;this.getPosition().getX()+j <= p.getPosition().getX()-1;j++) // on verifie que le chemin est libre + { + if ( !(e.getEchiquier()[8-(this.getPosition().getY()-j)][this.getPosition().getX()+j-1].getNom().equals("..")) ) + { + System.out.println("Le chemin n'est pas libre."); + return false; + } + } + return true; + } + + + + } + + else if ( p.getPosition().getX() == this.getPosition().getX()-i) // 2eme coors a gauche de la 1 ere + { + + if (p.getPosition().getY() == this.getPosition().getY()+i ) // on teste si quand on va en x vers la gauche on monte aussi de x + { + for (int j = 1;this.getPosition().getX()-j >= p.getPosition().getX()+1;j++) // on verifie que le chemin est libre + { + if ( !(e.getEchiquier()[8-(this.getPosition().getY()+j)][this.getPosition().getX()+j-1].getNom().equals("..")) ) + { + System.out.println("Le chemin n'est pas libre."); + return false; + } + } + return true; + } + + + else if (p.getPosition().getY() == this.getPosition().getY()-i) // on teste si quand on va de x vers la droite on descend aussi de x + { + for (int j = 1;this.getPosition().getX()-j >= p.getPosition().getX()+1;j++) // on verifie que le chemin est libre + { + if ( !(e.getEchiquier()[8-(this.getPosition().getY()-j)][this.getPosition().getX()+j-1].getNom().equals("..")) ) + { + System.out.println("Le chemin n'est pas libre."); + return false; + } + } + return true; + } + + + + return false; + } + } + + return false; + } } diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java index 61624b1..c2524c6 100755 --- a/src/piecesEchiquier/Tour.java +++ b/src/piecesEchiquier/Tour.java @@ -9,13 +9,6 @@ public class Tour extends Piece { public boolean deplacable(Echiquier e,Piece p) { - System.out.println("test"); - - System.out.println(this.getPosition().getX()); - System.out.println(this.getPosition().getY()); - System.out.println(p.getPosition().getX()); - System.out.println(p.getPosition().getY()); - System.out.println("tet"); if(p.getPosition().getX() == this.getPosition().getX()) // verification les 2 pieces sont sur la meme colonne { System.out.println("test"); From 55deda3dc9f5bd285e0c1c109455149085a254e3 Mon Sep 17 00:00:00 2001 From: Chiara Date: Fri, 10 May 2019 17:29:31 +0200 Subject: [PATCH 121/271] ajout de getter et setter pour les tests --- src/piecesEchiquier/Echiquier.java | 396 +++++++++++++++++++++++++++++ 1 file changed, 396 insertions(+) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index e457406..a59fc34 100755 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -198,4 +198,400 @@ public class Echiquier { } return false; } + + + //getters and setters + public Pion getPionB1() { + return pionB1; + } + + + + public void setPionB1(Pion pionB1) { + this.pionB1 = pionB1; + } + + + + public Pion getPionB2() { + return pionB2; + } + + + + public void setPionB2(Pion pionB2) { + this.pionB2 = pionB2; + } + + + + public Pion getPionB3() { + return pionB3; + } + + + + public void setPionB3(Pion pionB3) { + this.pionB3 = pionB3; + } + + + + public Pion getPionB4() { + return pionB4; + } + + + + public void setPionB4(Pion pionB4) { + this.pionB4 = pionB4; + } + + + + public Pion getPionB5() { + return pionB5; + } + + + + public void setPionB5(Pion pionB5) { + this.pionB5 = pionB5; + } + + + + public Pion getPionB6() { + return pionB6; + } + + + + public void setPionB6(Pion pionB6) { + this.pionB6 = pionB6; + } + + + + public Pion getPionB7() { + return pionB7; + } + + + + public void setPionB7(Pion pionB7) { + this.pionB7 = pionB7; + } + + + + public Pion getPionB8() { + return pionB8; + } + + + + public void setPionB8(Pion pionB8) { + this.pionB8 = pionB8; + } + + + + public Pion getPionN1() { + return pionN1; + } + + + + public void setPionN1(Pion pionN1) { + this.pionN1 = pionN1; + } + + + + public Pion getPionN2() { + return pionN2; + } + + + + public void setPionN2(Pion pionN2) { + this.pionN2 = pionN2; + } + + + + public Pion getPionN3() { + return pionN3; + } + + + + public void setPionN3(Pion pionN3) { + this.pionN3 = pionN3; + } + + + + public Pion getPionN4() { + return pionN4; + } + + + + public void setPionN4(Pion pionN4) { + this.pionN4 = pionN4; + } + + + + public Pion getPionN5() { + return pionN5; + } + + + + public void setPionN5(Pion pionN5) { + this.pionN5 = pionN5; + } + + + + public Pion getPionN6() { + return pionN6; + } + + + + public void setPionN6(Pion pionN6) { + this.pionN6 = pionN6; + } + + + + public Pion getPionN7() { + return pionN7; + } + + + + public void setPionN7(Pion pionN7) { + this.pionN7 = pionN7; + } + + + + public Pion getPionN8() { + return pionN8; + } + + + + public void setPionN8(Pion pionN8) { + this.pionN8 = pionN8; + } + + + + public Tour getTourB1() { + return TourB1; + } + + + + public void setTourB1(Tour tourB1) { + TourB1 = tourB1; + } + + + + public Tour getTourB2() { + return TourB2; + } + + + + public void setTourB2(Tour tourB2) { + TourB2 = tourB2; + } + + + + public Tour getTourN1() { + return TourN1; + } + + + + public void setTourN1(Tour tourN1) { + TourN1 = tourN1; + } + + + + public Tour getTourN2() { + return TourN2; + } + + + + public void setTourN2(Tour tourN2) { + TourN2 = tourN2; + } + + + + public Cavalier getCavalierB1() { + return CavalierB1; + } + + + + public void setCavalierB1(Cavalier cavalierB1) { + CavalierB1 = cavalierB1; + } + + + + public Cavalier getCavalierB2() { + return CavalierB2; + } + + + + public void setCavalierB2(Cavalier cavalierB2) { + CavalierB2 = cavalierB2; + } + + + + public Cavalier getCavalierN1() { + return CavalierN1; + } + + + + public void setCavalierN1(Cavalier cavalierN1) { + CavalierN1 = cavalierN1; + } + + + + public Cavalier getCavalierN2() { + return CavalierN2; + } + + + + public void setCavalierN2(Cavalier cavalierN2) { + CavalierN2 = cavalierN2; + } + + + + public Fou getFouB1() { + return FouB1; + } + + + + public void setFouB1(Fou fouB1) { + FouB1 = fouB1; + } + + + + public Fou getFouB2() { + return FouB2; + } + + + + public void setFouB2(Fou fouB2) { + FouB2 = fouB2; + } + + + + public Fou getFouN1() { + return FouN1; + } + + + + public void setFouN1(Fou fouN1) { + FouN1 = fouN1; + } + + + + public Fou getFouN2() { + return FouN2; + } + + + + public void setFouN2(Fou fouN2) { + FouN2 = fouN2; + } + + + + public Reine getReineB1() { + return ReineB1; + } + + + + public void setReineB1(Reine reineB1) { + ReineB1 = reineB1; + } + + + + public Reine getReineN1() { + return ReineN1; + } + + + + public void setReineN1(Reine reineN1) { + ReineN1 = reineN1; + } + + + + public Roi getRoiB1() { + return RoiB1; + } + + + + public void setRoiB1(Roi roiB1) { + RoiB1 = roiB1; + } + + + + public Roi getRoiN1() { + return RoiN1; + } + + + + public void setRoiN1(Roi roiN1) { + RoiN1 = roiN1; + } + + + + public void setCodes(String[][] codes) { + this.codes = codes; + } + + + + public void setEchiquier(Piece[][] echiquier) { + this.echiquier = echiquier; + } } From 901e778b797c055b57795ccac1559a5483c59f63 Mon Sep 17 00:00:00 2001 From: Chiara Date: Fri, 10 May 2019 17:31:35 +0200 Subject: [PATCH 122/271] classe test pas encore fonctionelle --- tests/testPiece.java | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 tests/testPiece.java diff --git a/tests/testPiece.java b/tests/testPiece.java new file mode 100644 index 0000000..6f16a11 --- /dev/null +++ b/tests/testPiece.java @@ -0,0 +1,41 @@ +import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import joueurs.Joueur; +import piecesEchiquier.*; + +class testPiece { + private Echiquier e; + private Joueur j; + + @BeforeEach + public void initialisation() { + Echiquier e = new Echiquier(); + Joueur j = new Joueur("Marion la Stagiaire","Blanc"); + } + + @Test + void testVerif() { + assertFalse(e.VerifFinale(j, "A4", "A5")); //choix de case vide + assertFalse(e.VerifFinale(j, "A7", "A8")); //mauvais choix de pion + assertFalse(e.VerifFinale(j, "A1", "A2")); //manger pion allier + assertFalse(e.VerifFinale(j, "A2", "B5")); //mauvais deplacement + } + + @Test + void testTour() { + e.getPionB1().getPosition().setX(5); + e.getPionB1().getPosition().setY(4); + e.VerifFinale(j, "A1", "A4"); + assertEquals(0, e.getPionB1().getPosition().getX()); + assertEquals(4, e.getPionB1().getPosition().getY()); + e.VerifFinale(j, "A4", "F4"); + assertEquals(5, e.getPionB1().getPosition().getX()); + assertEquals(4, e.getPionB1().getPosition().getY()); + + assertTrue(e.VerifFinale(j, "F4", "F7")); + } + +} From 45d924c7d06053525ed3f22691d64e8359cd9be8 Mon Sep 17 00:00:00 2001 From: Manon Date: Fri, 10 May 2019 17:40:34 +0200 Subject: [PATCH 123/271] =?UTF-8?q?Pion=20r=C3=A9par=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/piecesEchiquier/Echiquier.java | 2 +- src/piecesEchiquier/Fou.java | 2 +- src/piecesEchiquier/Pion.java | 11 +++++++---- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index a59fc34..4158675 100755 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -131,7 +131,7 @@ public class Echiquier { j++; if (getCodes()[i][j].equals(A)) //Cherche dans la matrice code si on trouve une string = celle donnée par le joueur { - if (this.getEchiquier()[i][j].getClass().getName().equals("Piece")) // Verifie si la case choisie n'est pas vide + if (this.getEchiquier()[i][j].getNom().equals("..")) // Verifie si la case choisie n'est pas vide { System.out.println("Vous avez choisi une case vide. Recommencez."); return false; diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java index 3beef25..c784cb1 100755 --- a/src/piecesEchiquier/Fou.java +++ b/src/piecesEchiquier/Fou.java @@ -51,7 +51,7 @@ public class Fou extends Piece { } - + else if ( p.getPosition().getX() == this.getPosition().getX()-i) // 2eme coors a gauche de la 1 ere { diff --git a/src/piecesEchiquier/Pion.java b/src/piecesEchiquier/Pion.java index 96b5ebb..878471c 100755 --- a/src/piecesEchiquier/Pion.java +++ b/src/piecesEchiquier/Pion.java @@ -10,10 +10,12 @@ public class Pion extends Piece { } - public boolean deplacable(Piece p) // CHECK QUE PION PEUT ETRE DEPLACE + public boolean deplacable(Echiquier e, Piece p) // CHECK QUE PION PEUT ETRE DEPLACE { + System.out.println("test"); if (p.getPosition().getX()-1 == this.getPosition().getX() || p.getPosition().getX()+1 == this.getPosition().getX()) //vERIFICATION SI LA PERSONNE SOUHAITE MANGER LA PIECE { + System.out.println("test1"); if ((this.getCouleur().equals("Blanc") && p.getPosition().getY()-1 == this.getPosition().getY()) || (this.getCouleur() == "noir" && p.getPosition().getY()+1 == this.getPosition().getY())) { if (p.getNom().equals("..")) @@ -31,13 +33,14 @@ public class Pion extends Piece { // Avancer tout droit else if (p.getPosition().getX() == this.getPosition().getX()) { - - if ((this.getCouleur().equals("Blanc")) && (p.getPosition().getY()-1 == this.getPosition().getY()) || (this.getCouleur().equals("Noir")) && (p.getPosition().getY()+1 == this.getPosition().getY())) + System.out.println("test2"); + if ( ((this.getCouleur().equals("Blanc")) && (p.getPosition().getY()-1 == this.getPosition().getY()) ) || ((this.getCouleur().equals("Noir")) && (p.getPosition().getY()+1 == this.getPosition().getY()))) { return true; } - if (this.aBouge() == false && ((this.getCouleur().equals("Blanc") && p.getPosition().getY()-2 == this.getPosition().getY()) || (this.getCouleur().equals("Noir") && p.getPosition().getY()+2 == this.getPosition().getY()))) + if ( (this.aBouge() == false && (this.getCouleur().equals("Blanc") && p.getPosition().getY()-2 == this.getPosition().getY()) ) + || (this.getCouleur().equals("Noir") && p.getPosition().getY()+2 == this.getPosition().getY()) ) { return true; } From 5b6e6a44e5d8b3d66166ee00e0c5b0396faaa008 Mon Sep 17 00:00:00 2001 From: Manon Date: Fri, 10 May 2019 17:46:13 +0200 Subject: [PATCH 124/271] =?UTF-8?q?Avanc=C3=A9e=20de=202=20au=20premier=20?= =?UTF-8?q?mouvement=20du=20pion=20seulement=20(correc)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/piecesEchiquier/Pion.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/piecesEchiquier/Pion.java b/src/piecesEchiquier/Pion.java index 878471c..d63af83 100755 --- a/src/piecesEchiquier/Pion.java +++ b/src/piecesEchiquier/Pion.java @@ -54,7 +54,7 @@ public class Pion extends Piece { { verif=true; } - else if(this.getIni() == this.getPosition() && this.verif == false) + else if(this.getIni() == this.getPosition()) { verif=false; } From 225d4f773ff3f0352fe07bb3c73f6ad51b9fec3a Mon Sep 17 00:00:00 2001 From: Johann Date: Sat, 11 May 2019 16:25:50 +0200 Subject: [PATCH 125/271] Methode deplacable du Roi + Cavalier --- src/piecesEchiquier/Cavalier.java | 69 ++++++++++++++++++++++++++++++ src/piecesEchiquier/Roi.java | 70 +++++++++++++++++++++++++++++++ 2 files changed, 139 insertions(+) diff --git a/src/piecesEchiquier/Cavalier.java b/src/piecesEchiquier/Cavalier.java index 182f440..d43e670 100755 --- a/src/piecesEchiquier/Cavalier.java +++ b/src/piecesEchiquier/Cavalier.java @@ -6,4 +6,73 @@ public class Cavalier extends Piece { { super(c,l,pos); } + + public boolean deplacable(Echiquier e, Piece p) // vérifie que le Cavalier peut être déplacé + { + //Côté droit + if((p.getPosition().getX()) == (this.getPosition().getX()+1) && (p.getPosition().getY()) == (this.getPosition().getY()+2)) //Verifie deplacement y+2 vers le haut et x+1 vers la droite + { + if(p.getCouleur()!=this.getCouleur()) + { + return true; + } + } + + if((p.getPosition().getX()) == (this.getPosition().getX()+2) && (p.getPosition().getY()) == (this.getPosition().getY()+1)) //Verifie deplacement y+1 vers le haut et x+2 vers la droite + { + if(p.getCouleur()!=this.getCouleur()) + { + return true; + } + } + + if((p.getPosition().getX()) == (this.getPosition().getX()+1) && (p.getPosition().getY()) == (this.getPosition().getY()-2)) //Verifie deplacement y-2 vers le bas et x+1 vers la droite + { + if(p.getCouleur()!=this.getCouleur()) + { + return true; + } + } + + if((p.getPosition().getX()) == (this.getPosition().getX()+2) && (p.getPosition().getY()) == (this.getPosition().getY()-1)) //Verifie deplacement y-1 vers le bas et x+2 vers la droite + { + if(p.getCouleur()!=this.getCouleur()) + { + return true; + } + } + //Côté gauche + if((p.getPosition().getX()) == (this.getPosition().getX()-1) && (p.getPosition().getY()) == (this.getPosition().getY()+2)) //Verifie deplacement y+2 vers le haut et x-1 vers la gauche + { + if(p.getCouleur()!=this.getCouleur()) + { + return true; + } + } + + if((p.getPosition().getX()) == (this.getPosition().getX()-2) && (p.getPosition().getY()) == (this.getPosition().getY()-1)) //Verifie deplacement y-1 vers le bas et x-2 vers la gauche + { + if(p.getCouleur()!=this.getCouleur()) + { + return true; + } + } + + if((p.getPosition().getX()) == (this.getPosition().getX()-1) && (p.getPosition().getY()) == (this.getPosition().getY()-2)) //Verifie deplacement y-2 vers le bas et x-1 vers la gauche + { + if(p.getCouleur()!=this.getCouleur()) + { + return true; + } + } + + if((p.getPosition().getX()) == (this.getPosition().getX()-2) && (p.getPosition().getY()) == (this.getPosition().getY()-1)) //Verifie deplacement y+1 vers le haut et x-2 vers la gauche + { + if(p.getCouleur()!=this.getCouleur()) + { + return true; + } + } + return false; + } } diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index b094581..bc6b369 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -31,4 +31,74 @@ public class Roi extends Piece { } return verif; } + + public boolean deplacable(Echiquier e, Piece p) // vérifie que le roi peut être déplacé + { + //Côté droit + if((p.getPosition().getX()) == (this.getPosition().getX()+1) && (p.getPosition().getY()) == (this.getPosition().getY()+1)) //Verifie deplacement y+1 vers le haut et x+1 vers la droite + { + if(p.getCouleur()!=this.getCouleur()) + { + return true; + } + } + + if((p.getPosition().getX()) == (this.getPosition().getX()+1) && (p.getPosition().getY()) == (this.getPosition().getY())) //Verifie deplacement x+1 vers la droite + { + if(p.getCouleur()!=this.getCouleur()) + { + return true; + } + } + + if((p.getPosition().getX()) == (this.getPosition().getX()+1) && (p.getPosition().getY()) == (this.getPosition().getY()-1)) //Verifie deplacement y-1 vers le bas et x+1 vers la droite + { + if(p.getCouleur()!=this.getCouleur()) + { + return true; + } + } + //Coté haut + if((p.getPosition().getX()) == (this.getPosition().getX()) && (p.getPosition().getY()) == (this.getPosition().getY()+1)) //Verifie deplacement y+1 vers le haut + { + if(p.getCouleur()!=this.getCouleur()) + { + return true; + } + } + //Côté bas + if((p.getPosition().getX()) == (this.getPosition().getX()) && (p.getPosition().getY()) == (this.getPosition().getY()-1)) //Verifie deplacement y-1 vers le bas + { + if(p.getCouleur()!=this.getCouleur()) + { + return true; + } + } + //Côté gauche + if((p.getPosition().getX()) == (this.getPosition().getX()-1) && (p.getPosition().getY()) == (this.getPosition().getY()+1)) //Verifie deplacement y+1 vers le haut et x-1 vers la gauche + { + if(p.getCouleur()!=this.getCouleur()) + { + return true; + } + } + + if((p.getPosition().getX()) == (this.getPosition().getX()-1) && (p.getPosition().getY()) == (this.getPosition().getY())) //Verifie deplacement x-1 vers la gauche + { + if(p.getCouleur()!=this.getCouleur()) + { + return true; + } + } + + if((p.getPosition().getX()) == (this.getPosition().getX()-1) && (p.getPosition().getY()) == (this.getPosition().getY()-1)) //Verifie deplacement y-1 vers le bas et x-1 vers la gauche + { + if(p.getCouleur()!=this.getCouleur()) + { + return true; + } + } + return false; + } } + From b34d9887d074afbc6e9603e7f1dfeccbf77fa3a2 Mon Sep 17 00:00:00 2001 From: Manon Date: Sun, 12 May 2019 08:51:26 +0200 Subject: [PATCH 126/271] =?UTF-8?q?R=C3=A9paration=20pion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ne peut plus manger en avancer tout droit --- src/piecesEchiquier/Pion.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/piecesEchiquier/Pion.java b/src/piecesEchiquier/Pion.java index d63af83..d89463f 100755 --- a/src/piecesEchiquier/Pion.java +++ b/src/piecesEchiquier/Pion.java @@ -12,10 +12,8 @@ public class Pion extends Piece { public boolean deplacable(Echiquier e, Piece p) // CHECK QUE PION PEUT ETRE DEPLACE { - System.out.println("test"); if (p.getPosition().getX()-1 == this.getPosition().getX() || p.getPosition().getX()+1 == this.getPosition().getX()) //vERIFICATION SI LA PERSONNE SOUHAITE MANGER LA PIECE { - System.out.println("test1"); if ((this.getCouleur().equals("Blanc") && p.getPosition().getY()-1 == this.getPosition().getY()) || (this.getCouleur() == "noir" && p.getPosition().getY()+1 == this.getPosition().getY())) { if (p.getNom().equals("..")) @@ -33,7 +31,11 @@ public class Pion extends Piece { // Avancer tout droit else if (p.getPosition().getX() == this.getPosition().getX()) { - System.out.println("test2"); + if (!(p.getNom().equals(".."))) // SI case non vide + { + System.out.println("Vous ne pouvez pas manger en avancant tout droit."); + return false; + } if ( ((this.getCouleur().equals("Blanc")) && (p.getPosition().getY()-1 == this.getPosition().getY()) ) || ((this.getCouleur().equals("Noir")) && (p.getPosition().getY()+1 == this.getPosition().getY()))) { return true; From 6ea7261f3c407eb7aab1a9b2c32b577a0d3fce70 Mon Sep 17 00:00:00 2001 From: Manon Date: Sun, 12 May 2019 09:00:01 +0200 Subject: [PATCH 127/271] Effacement des SOP de test inutiles et changement du nom de la grande fonction --- src/piecesEchiquier/Echiquier.java | 12 ++++-------- src/piecesEchiquier/Fou.java | 5 ----- src/visuel/main.java | 4 ++-- 3 files changed, 6 insertions(+), 15 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 4158675..0f03a38 100755 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -109,16 +109,12 @@ public class Echiquier { return echec; } - public boolean VerifFinale(Joueur J, String A, String B) // FONCTION TRADUCTION, VERIF + DEPLACEMENTS SI POSSIBLE + public boolean verificationMouvement(Joueur J, String A, String B) // FONCTION TRADUCTION, VERIF + DEPLACEMENTS SI POSSIBLE { int i = -1; int j = -1; int k; int l; - //int stockX; - //int stockY; - //int stockX2; - //int stockY2; Position stock; Position stock2; @@ -165,7 +161,7 @@ public class Echiquier { else if (this.getEchiquier()[i][j].deplacable(this,this.getEchiquier()[k][l]) == false) // VERIFICATION AVEC FONCTION DEPLACABLE { - System.out.println("Déplacement impossible. Recommencez."); + System.out.println("Déplacement impossible. Recommencez. /n"); return false; } @@ -173,7 +169,7 @@ public class Echiquier { else { - System.out.println("Choix validés. déplacement en cours."); + System.out.println("Choix validés. déplacement en cours."); // Partie déplacement stock = new Position(l+1,8-k); stock2 = new Position(j+1,8-i); this.getEchiquier()[k][l] = this.getEchiquier()[i][j]; @@ -193,7 +189,7 @@ public class Echiquier { int x = position.getX(); int y = position.getY(); - if(this.echiquier[x][y].getNom()=="..") { + if(this.echiquier[8-y][x-1].getNom()=="..") { return true; } return false; diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java index c784cb1..f3c7ccf 100755 --- a/src/piecesEchiquier/Fou.java +++ b/src/piecesEchiquier/Fou.java @@ -9,11 +9,6 @@ public class Fou extends Piece { public boolean deplacable(Echiquier e,Piece p) { - System.out.println("test"); - System.out.println(p.getPosition().getX()); - System.out.println(p.getPosition().getY()); - System.out.println(this.getPosition().getX()); - System.out.println(this.getPosition().getY()); for (int i = 1; i < 8; i++) // ON CHERCHE SI LA 2EME COORS EST EN DIAGONALE DE LA 1 ERE { diff --git a/src/visuel/main.java b/src/visuel/main.java index f58c9d6..ed3ceab 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -47,7 +47,7 @@ public class main { System.out.println("A quel endroit la poser ? Donnez le code correspondant a l'endroit ou poser la piece.\n"); B = sc.nextLine(); - }while (e.VerifFinale(j1, A,B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées + }while (e.verificationMouvement(j1, A,B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées //REAFFICHAGE ECHIQUIER System.out.println(e.toString()); @@ -62,7 +62,7 @@ public class main { System.out.println("A quel endroit la poser ? Donnez le code correspondant de l'endroit la poser la piece.\n"); B = sc.nextLine(); - }while (e.VerifFinale(j2, A,B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées + }while (e.verificationMouvement(j2, A,B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées //jeu = false; From cbc301bcd0a57f2c6a9b973640762f7a81d65211 Mon Sep 17 00:00:00 2001 From: Manon Date: Sun, 12 May 2019 21:43:29 +0200 Subject: [PATCH 128/271] Construction fonction enEchec() et en echecEtMat() (pas fini) pas encore fonctionnelle --- src/piecesEchiquier/Echiquier.java | 92 ++++++++++++++++++++++++++---- src/piecesEchiquier/Piece.java | 2 +- src/piecesEchiquier/Roi.java | 73 ++++++++++++++++++++++++ src/piecesEchiquier/Tour.java | 2 - src/visuel/main.java | 32 +++++++---- 5 files changed, 176 insertions(+), 25 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 0f03a38..b312417 100755 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -49,11 +49,11 @@ public class Echiquier { private Fou FouN1 = new Fou("Noir","FN",new Position(3,8)); private Fou FouN2 = new Fou("Noir","FN",new Position(6,8)); - private Reine ReineB1 = new Reine("Blanc","RB",new Position(4,1)); - private Reine ReineN1 = new Reine("Noir","RN",new Position(4,8)); + private Reine ReineB1 = new Reine("Blanc","RB",new Position(5,1)); + private Reine ReineN1 = new Reine("Noir","RN",new Position(5,8)); - private Roi RoiB1 = new Roi("Blanc","KB",new Position(5,1)); - private Roi RoiN1 = new Roi("Noir","KN",new Position(5,8)); + private Roi RoiB1 = new Roi("Blanc","KB",new Position(4,1)); + private Roi RoiN1 = new Roi("Noir","KN",new Position(4,8)); private Piece[][] echiquier = @@ -83,6 +83,8 @@ public class Echiquier { public String[][] getCodes() { return codes; } + + @@ -141,9 +143,6 @@ public class Echiquier { }while(( (getCodes()[i][j].equals(A)) == false) && (j+1 < codes.length)); }while((getCodes()[i][j].equals(A) == false) && (i+1 < codes.length)); - - - for (k = 0; k < codes.length;k++) /// TEST 2EME COORS { @@ -161,7 +160,7 @@ public class Echiquier { else if (this.getEchiquier()[i][j].deplacable(this,this.getEchiquier()[k][l]) == false) // VERIFICATION AVEC FONCTION DEPLACABLE { - System.out.println("Déplacement impossible. Recommencez. /n"); + System.out.println("Déplacement impossible. Recommencez. \n"); return false; } @@ -183,15 +182,84 @@ public class Echiquier { } System.out.println("Un de vos codes est faux. Recommencez."); // SI COORS INEXISTANTE (EX : A) return false; - } + } + + public boolean verificationMouvementSilencieuse(Joueur J, String A, String B) // FONCTION TRADUCTION, VERIF + DEPLACEMENTS SI POSSIBLE + { + int i = -1; + int j = -1; + int k; + int l; + Position stock; + Position stock2; + + do { /// TEST 1ERE COORS + i++; + j = -1; + + + do { + j++; + if (getCodes()[i][j].equals(A)) //Cherche dans la matrice code si on trouve une string = celle donnée par le joueur + { + if (this.getEchiquier()[i][j].getNom().equals("..")) // Verifie si la case choisie n'est pas vide + { + return false; + } + else if (this.getEchiquier()[i][j].getCouleur() != J.getCouleur()) // Verifie si la piece choisie n'est pas de la faction opposée + { + return false; + } + } + }while(( (getCodes()[i][j].equals(A)) == false) && (j+1 < codes.length)); + }while((getCodes()[i][j].equals(A) == false) && (i+1 < codes.length)); + + + for (k = 0; k < codes.length;k++) /// TEST 2EME COORS + { + for (l = 0; l < codes.length;l++) + { + if (getCodes()[k][l].equals(B) == true) + { + if (this.getEchiquier()[k][l].getCouleur() == J.getCouleur()) // Verifie que la piece visée n'est pas de ta faction + { + return false; + + } + + + else if (this.getEchiquier()[i][j].deplacable(this,this.getEchiquier()[k][l]) == false) // VERIFICATION AVEC FONCTION DEPLACABLE + { + return false; + + } + + + else + { // Partie déplacement + stock = new Position(l+1,8-k); + stock2 = new Position(j+1,8-i); + this.getEchiquier()[k][l] = this.getEchiquier()[i][j]; + this.getEchiquier()[k][l].setPosition(stock); + this.getEchiquier()[i][j] = new Piece(stock2); + return true; + } + + } + } + } + System.out.println("Un de vos codes est faux. Recommencez."); // SI COORS INEXISTANTE (EX : A) + return false; + } public boolean estVide(Position position) { int x = position.getX(); int y = position.getY(); - if(this.echiquier[8-y][x-1].getNom()=="..") { - return true; - } + if(this.echiquier[8-y][x-1].getNom()=="..") + { + return true; + } return false; } diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index c6bd898..3831050 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -3,7 +3,7 @@ package piecesEchiquier; public class Piece { - private String couleur; + private String couleur = ""; //private String lettre = ".."; private String nom = ".."; private boolean enVie = true; diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index bc6b369..fd5a934 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -1,5 +1,7 @@ package piecesEchiquier; +import joueurs.Joueur; + public class Roi extends Piece { private boolean verif=false; @@ -100,5 +102,76 @@ public class Roi extends Piece { } return false; } + + public boolean enEchec(Echiquier e, Joueur Jopp) + { + for (int i = 0; i < e.getEchiquier().length;i++) + { + for (int j = 0; j < e.getEchiquier().length;j++) + { + if ( !(e.getEchiquier()[i][j].getCouleur() == this.getCouleur() ) && (e.verificationMouvementSilencieuse(Jopp,e.getCodes()[i][j],e.getCodes()[8-this.getPosition().getY()][this.getPosition().getX()-1]) == true) ) + { + return true; + } + } + } + return false; + } + + public boolean enEchecEtMat(Echiquier e, Joueur Jopp) + { + if (this.getPosition().getY() <= 7 && e.getEchiquier()[8-(this.getPosition().getY()+1)][this.getPosition().getX()-1].getNom().equals("..")) // verification mouvement vers le haut libre + { + e.getEchiquier()[8-(this.getPosition().getY()+1)][this.getPosition().getX()-1] = this; // on fait un fantome roi + e.getEchiquier()[8-(this.getPosition().getY()+1)][this.getPosition().getX()-1].getPosition().setY(this.getPosition().getY()+1); // on corrige sa position + if (!(this.enEchec(e,Jopp) )) // si pas en echec possibilité de mouvement donc pas echec et mat + { + e.getEchiquier()[8-(this.getPosition().getY()+1)][this.getPosition().getX()-1] = new Piece(new Position(this.getPosition().getX(),this.getPosition().getY()+1)); + // on tue le fantome de test + return false; + } + + } + + if (e.getEchiquier()[8-(this.getPosition().getY()-1)][this.getPosition().getX()-1].getNom().equals("..")) // verification mouvement vers le bas libre + { + e.getEchiquier()[8-(this.getPosition().getY()-1)][this.getPosition().getX()-1] = this; // on fait un fantome roi + e.getEchiquier()[8-(this.getPosition().getY()-1)][this.getPosition().getX()-1].getPosition().setY(this.getPosition().getY()-1); // on corrige sa position + if (!(this.enEchec(e,Jopp) )) // si pas en echec possibilité de mouvement donc pas echec et mat + { + e.getEchiquier()[8-(this.getPosition().getY()-1)][this.getPosition().getX()-1] = new Piece(new Position(this.getPosition().getX(),this.getPosition().getY()-1)); + // on tue le fantome de test + return false; + } + + } + + if (e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)-1].getNom().equals("..")) // verification mouvement vers la gauche libre + { + e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)-1] = this; // on fait un fantome roi + e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)-1].getPosition().setX(this.getPosition().getX()-1); // on corrige sa position + if (!(this.enEchec(e,Jopp) )) // si pas en echec possibilité de mouvement donc pas echec et mat + { + e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)-1] = new Piece(new Position(this.getPosition().getX()-1,this.getPosition().getY()) ); + // on tue le fantome de test + return false; + } + + } + + if (e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)+1].getNom().equals("..")) // verification mouvement vers la droite libre + { + e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)+1] = this; // on fait un fantome roi + e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)+1].getPosition().setX(this.getPosition().getX()+1); // on corrige sa position + if (!(this.enEchec(e,Jopp) )) // si pas en echec possibilité de mouvement donc pas echec et mat + { + e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)+1] = new Piece(new Position(this.getPosition().getX()+1,this.getPosition().getY()) ); + // on tue le fantome de test + return false; + } + + } + return true; + } } diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java index c2524c6..30cb6a5 100755 --- a/src/piecesEchiquier/Tour.java +++ b/src/piecesEchiquier/Tour.java @@ -11,10 +11,8 @@ public class Tour extends Piece { { if(p.getPosition().getX() == this.getPosition().getX()) // verification les 2 pieces sont sur la meme colonne { - System.out.println("test"); if (p.getPosition().getY() > this.getPosition().getY()) // Test si la 2 eme piece est au dessus de la 1ere { - System.out.println("test2"); for (int i = this.getPosition().getY()+1; i <= p.getPosition().getY()-1;i++) // verifie qu'il n'y a pas d'obstacles sur le chemin { if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide diff --git a/src/visuel/main.java b/src/visuel/main.java index ed3ceab..e762825 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -48,22 +48,34 @@ public class main { B = sc.nextLine(); }while (e.verificationMouvement(j1, A,B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées - + if (e.getRoiN1().enEchec(e,j2) && e.getRoiN1().enEchecEtMat(e,j2)) + { + System.out.println("Le joueur 2 est echec et mat, il a perdu !"); + jeu = false; + } //REAFFICHAGE ECHIQUIER System.out.println(e.toString()); // JOUEUR2 System.out.println("Tour de "+j2.getNom()+"\n"); - do { - System.out.println("Quelle piece voulez vous deplacer ? Donnez le code correspondant de la piece a  deplacer(ex : A1).\n"); - A = sc.nextLine(); - - System.out.println("A quel endroit la poser ? Donnez le code correspondant de l'endroit la poser la piece.\n"); - B = sc.nextLine(); - - }while (e.verificationMouvement(j2, A,B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées - + if (jeu == true) + { + do { + System.out.println("Quelle piece voulez vous deplacer ? Donnez le code correspondant de la piece a  deplacer(ex : A1).\n"); + A = sc.nextLine(); + + System.out.println("A quel endroit la poser ? Donnez le code correspondant de l'endroit la poser la piece.\n"); + B = sc.nextLine(); + + }while (e.verificationMouvement(j2, A,B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées + } + + if (e.getRoiB1().enEchec(e,j1) && e.getRoiN1().enEchecEtMat(e,j1)) + { + System.out.println("Le joueur 1 est echec et mat, il a perdu !"); + jeu = false; + } //jeu = false; }while (jeu == true); From ec6bda5d4fcf10fdd0764e3c6d7e87bee49a4523 Mon Sep 17 00:00:00 2001 From: Chiara Date: Mon, 13 May 2019 16:00:31 +0200 Subject: [PATCH 129/271] classpath --- .classpath | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.classpath b/.classpath index 51a8bba..c6f41a5 100755 --- a/.classpath +++ b/.classpath @@ -2,5 +2,7 @@ + + From a830b20da42a9735a2282f0e1d4b208838823afa Mon Sep 17 00:00:00 2001 From: rc804998 Date: Tue, 14 May 2019 16:38:39 +0200 Subject: [PATCH 130/271] Update Echiquier.java --- src/piecesEchiquier/Echiquier.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index b312417..f88d953 100755 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -111,7 +111,7 @@ public class Echiquier { return echec; } - public boolean verificationMouvement(Joueur J, String A, String B) // FONCTION TRADUCTION, VERIF + DEPLACEMENTS SI POSSIBLE + public boolean verificationMouvement(Joueur J, String coorA, String coorB) // FONCTION TRADUCTION, VERIF + DEPLACEMENTS SI POSSIBLE { int i = -1; int j = -1; From 8851cc439de0270cb1d1dcfabd18308a9a18d1b5 Mon Sep 17 00:00:00 2001 From: Manon Date: Sun, 19 May 2019 23:07:34 +0200 Subject: [PATCH 131/271] Replacement des pos dans echiquier de roi et reine --- src/piecesEchiquier/Echiquier.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index b312417..5f09b5d 100755 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -58,14 +58,14 @@ public class Echiquier { private Piece[][] echiquier = { - {TourN1,CavalierN1,FouN1,RoiN1,ReineN1,FouN2,CavalierN2,TourN2}, + {TourN1,CavalierN1,FouN1,ReineN1,RoiN1,FouN2,CavalierN2,TourN2}, {pionN1,pionN2,pionN3,pionN4,pionN5,pionN6,pionN7,pionN8}, {new Piece(new Position(1,6)),new Piece(new Position(2,6)),new Piece(new Position(3,6)),new Piece(new Position(4,6)),new Piece(new Position(5,6)),new Piece(new Position(6,6)),new Piece(new Position(7,6)),new Piece(new Position(8,6))}, {new Piece(new Position(1,5)),new Piece(new Position(2,5)),new Piece(new Position(3,5)),new Piece(new Position(4,5)),new Piece(new Position(5,5)),new Piece(new Position(6,5)),new Piece(new Position(7,5)),new Piece(new Position(8,5))}, {new Piece(new Position(1,4)),new Piece(new Position(2,4)),new Piece(new Position(3,4)),new Piece(new Position(4,4)),new Piece(new Position(5,4)),new Piece(new Position(6,4)),new Piece(new Position(7,4)),new Piece(new Position(8,4))}, {new Piece(new Position(1,3)),new Piece(new Position(2,3)),new Piece(new Position(3,3)),new Piece(new Position(4,3)),new Piece(new Position(5,3)),new Piece(new Position(6,3)),new Piece(new Position(7,3)),new Piece(new Position(8,3))}, {pionB1,pionB2,pionB3,pionB4,pionB5,pionB6,pionB7,pionB8}, - {TourB1,CavalierB1,FouB1,RoiB1,ReineB1,FouB2,CavalierB2,TourB2} + {TourB1,CavalierB1,FouB1,ReineB1,RoiB1,FouB2,CavalierB2,TourB2} }; From 537c56528bb3635314844aff86bf68437e9efb8f Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Mon, 20 May 2019 08:19:04 +0200 Subject: [PATCH 132/271] equalsIgnorecase tests --- src/piecesEchiquier/Echiquier.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100755 => 100644 src/piecesEchiquier/Echiquier.java diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java old mode 100755 new mode 100644 index d6dcc06..c266280 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -1,5 +1,5 @@ package piecesEchiquier; - +//voir equalsIgnoreCase import joueurs.Joueur; public class Echiquier { From 4803d30e30c0c6b8c9a5ba3070d0910f35954556 Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Mon, 20 May 2019 08:33:43 +0200 Subject: [PATCH 133/271] Change method equals() to equalsIgnoreCase() for String comparison Change method equals() to equalsIgnoreCase() for String comparison --- src/piecesEchiquier/Echiquier.java | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index c266280..de8b1ca 100644 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -111,8 +111,8 @@ public class Echiquier { return echec; } - public boolean verificationMouvement(Joueur J, String coorA, String coorB) // FONCTION TRADUCTION, VERIF + DEPLACEMENTS SI POSSIBLE - { + public boolean verificationMouvement(Joueur J, String A, String B) // FONCTION TRADUCTION, VERIF + DEPLACEMENTS SI POSSIBLE + {// String A = coordonées de A; String B = coordonées de B int i = -1; int j = -1; int k; @@ -129,7 +129,7 @@ public class Echiquier { j++; if (getCodes()[i][j].equals(A)) //Cherche dans la matrice code si on trouve une string = celle donnée par le joueur { - if (this.getEchiquier()[i][j].getNom().equals("..")) // Verifie si la case choisie n'est pas vide + if (this.getEchiquier()[i][j].getNom().equalsIgnoreCase("..")) // Verifie si la case choisie n'est pas vide { System.out.println("Vous avez choisi une case vide. Recommencez."); return false; @@ -140,15 +140,15 @@ public class Echiquier { return false; } } - }while(( (getCodes()[i][j].equals(A)) == false) && (j+1 < codes.length)); - }while((getCodes()[i][j].equals(A) == false) && (i+1 < codes.length)); + }while(( (getCodes()[i][j].equalsIgnoreCase(A)) == false) && (j+1 < codes.length)); + }while((getCodes()[i][j].equalsIgnoreCase(A) == false) && (i+1 < codes.length)); for (k = 0; k < codes.length;k++) /// TEST 2EME COORS { for (l = 0; l < codes.length;l++) { - if (getCodes()[k][l].equals(B) == true) + if (getCodes()[k][l].equalsIgnoreCase(B) == true) { if (this.getEchiquier()[k][l].getCouleur() == J.getCouleur()) // Verifie que la piece visée n'est pas de ta faction { @@ -184,8 +184,9 @@ public class Echiquier { return false; } - public boolean verificationMouvementSilencieuse(Joueur J, String A, String B) // FONCTION TRADUCTION, VERIF + DEPLACEMENTS SI POSSIBLE - { + /* + * public boolean verificationMouvementSilencieuse(Joueur J, String A, String B) // FONCTION TRADUCTION, VERIF + DEPLACEMENTS SI POSSIBLE + {// String A = coords A; String B = coord B int i = -1; int j = -1; int k; @@ -202,7 +203,7 @@ public class Echiquier { j++; if (getCodes()[i][j].equals(A)) //Cherche dans la matrice code si on trouve une string = celle donnée par le joueur { - if (this.getEchiquier()[i][j].getNom().equals("..")) // Verifie si la case choisie n'est pas vide + if (this.getEchiquier()[i][j].getNom().equalsIgnoreCase("..")) // Verifie si la case choisie n'est pas vide { return false; } @@ -211,8 +212,8 @@ public class Echiquier { return false; } } - }while(( (getCodes()[i][j].equals(A)) == false) && (j+1 < codes.length)); - }while((getCodes()[i][j].equals(A) == false) && (i+1 < codes.length)); + }while(( (getCodes()[i][j].equalsIgnoreCase(A)) == false) && (j+1 < codes.length)); + }while((getCodes()[i][j].equalsIgnoreCase(A) == false) && (i+1 < codes.length)); for (k = 0; k < codes.length;k++) /// TEST 2EME COORS @@ -251,6 +252,7 @@ public class Echiquier { System.out.println("Un de vos codes est faux. Recommencez."); // SI COORS INEXISTANTE (EX : A) return false; } + */ public boolean estVide(Position position) { int x = position.getX(); From 729da2316d2da81fa281cf01724c3cd8e6d9b71f Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Mon, 20 May 2019 08:53:06 +0200 Subject: [PATCH 134/271] tempo test --- tests/testPiece.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tests/testPiece.java b/tests/testPiece.java index 6f16a11..423ac1b 100644 --- a/tests/testPiece.java +++ b/tests/testPiece.java @@ -1,7 +1,5 @@ -import static org.junit.jupiter.api.Assertions.*; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; +/* +import static org.junit.jupiter.api.*; import joueurs.Joueur; import piecesEchiquier.*; @@ -39,3 +37,4 @@ class testPiece { } } +*/ \ No newline at end of file From 7d96f90c86e5c1fa8207adcd952f45f6079f86a8 Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Mon, 20 May 2019 08:53:26 +0200 Subject: [PATCH 135/271] change // to /**/ --- src/visuel/main.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/visuel/main.java b/src/visuel/main.java index e762825..40d54e9 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -36,7 +36,7 @@ public class main { // AFFICHAGE ECHIQUIER System.out.println(e.toString()); - // JOUEUR1 + /*JOUEUR1*/ System.out.println("Tour de "+j1.getNom()+"\n"); From 044023dade711b86ddd7782d89dd3248db748819 Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Mon, 20 May 2019 08:54:43 +0200 Subject: [PATCH 136/271] change RB && RN to QB && QN --- src/piecesEchiquier/Echiquier.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index de8b1ca..10b745c 100644 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -49,8 +49,8 @@ public class Echiquier { private Fou FouN1 = new Fou("Noir","FN",new Position(3,8)); private Fou FouN2 = new Fou("Noir","FN",new Position(6,8)); - private Reine ReineB1 = new Reine("Blanc","RB",new Position(5,1)); - private Reine ReineN1 = new Reine("Noir","RN",new Position(5,8)); + private Reine ReineB1 = new Reine("Blanc","QB",new Position(5,1)); + private Reine ReineN1 = new Reine("Noir","QN",new Position(5,8)); private Roi RoiB1 = new Roi("Blanc","KB",new Position(4,1)); private Roi RoiN1 = new Roi("Noir","KN",new Position(4,8)); From 6975594c6a0bb835dc1dbd97e5ad8c511fd2db00 Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Mon, 20 May 2019 09:24:33 +0200 Subject: [PATCH 137/271] commente echec --- src/piecesEchiquier/Roi.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index fd5a934..0d312b8 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -1,6 +1,6 @@ package piecesEchiquier; -import joueurs.Joueur; +//import joueurs.Joueur; public class Roi extends Piece { private boolean verif=false; @@ -103,7 +103,7 @@ public class Roi extends Piece { return false; } - public boolean enEchec(Echiquier e, Joueur Jopp) +/* public boolean enEchec(Echiquier e, Joueur Jopp) { for (int i = 0; i < e.getEchiquier().length;i++) { @@ -172,6 +172,6 @@ public class Roi extends Piece { } return true; - } + }*/ } From bce21693d5f30c6ba940a5bcea26bb97062212c1 Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Mon, 20 May 2019 09:24:45 +0200 Subject: [PATCH 138/271] ajout choix nom joueur --- src/visuel/main.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/visuel/main.java b/src/visuel/main.java index 40d54e9..3d79efd 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -17,10 +17,13 @@ public class main { boolean jeu = true; - // joueurs APRES ON DEMANDERA NOM - Joueur j1 = new Joueur("Marion la Stagiaire","Blanc"); - Joueur j2 = new Joueur("Autre","Noir"); + // joueurs + System.out.println("Entrez le nom du joueur 1 (blanc) : "); + Joueur j1 = new Joueur(sc.nextLine(),"Blanc"); + + System.out.println("Entrez le nom du joueur 2 (noir) : "); + Joueur j2 = new Joueur(sc.nextLine(),"Noir"); // vars pour deplacer String A; @@ -48,11 +51,11 @@ public class main { B = sc.nextLine(); }while (e.verificationMouvement(j1, A,B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées - if (e.getRoiN1().enEchec(e,j2) && e.getRoiN1().enEchecEtMat(e,j2)) + /*if (e.getRoiN1().enEchec(e,j2) && e.getRoiN1().enEchecEtMat(e,j2)) { System.out.println("Le joueur 2 est echec et mat, il a perdu !"); jeu = false; - } + }*/ //REAFFICHAGE ECHIQUIER System.out.println(e.toString()); @@ -71,11 +74,11 @@ public class main { }while (e.verificationMouvement(j2, A,B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées } - if (e.getRoiB1().enEchec(e,j1) && e.getRoiN1().enEchecEtMat(e,j1)) + /*if (e.getRoiB1().enEchec(e,j1) && e.getRoiN1().enEchecEtMat(e,j1)) { System.out.println("Le joueur 1 est echec et mat, il a perdu !"); jeu = false; - } + }*/ //jeu = false; }while (jeu == true); From 5f0f79a7a8ffa331132ddd5aba4ee5fc3547b0d6 Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Mon, 20 May 2019 09:53:59 +0200 Subject: [PATCH 139/271] ajout choix configuration partie MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - choix des noms de joueurs - choix manuel de qui prends les noirs et qui prends les blancs - choix aléatoire de qui prends les noirs et qui prends les blancs --- src/visuel/main.java | 48 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/src/visuel/main.java b/src/visuel/main.java index 3d79efd..c30e474 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -7,6 +7,7 @@ import joueurs.Joueur; import piecesEchiquier.Echiquier; public class main { + static int while1 = 1; public static void main (String[] args) { @@ -20,10 +21,53 @@ public class main { // joueurs System.out.println("Entrez le nom du joueur 1 (blanc) : "); - Joueur j1 = new Joueur(sc.nextLine(),"Blanc"); + Joueur j1 = new Joueur(sc.nextLine(), null); System.out.println("Entrez le nom du joueur 2 (noir) : "); - Joueur j2 = new Joueur(sc.nextLine(),"Noir"); + Joueur j2 = new Joueur(sc.nextLine(),null); + + while(while1 == 1) { + + System.out.println("Choisissez la configuration de partie que vous désirez en tapant le numéro correspondant :"); + System.out.println("1 = Blanc : " + j1.getNom() + " - Noir : " + j2.getNom()); + System.out.println("2 = Blanc : " + j2.getNom() + " - Noir : " + j1.getNom()); + System.out.println("3 = Aléatoire"); + + String choixP = sc.nextLine(); + + if(choixP.equalsIgnoreCase("3")) + { + int random = (int)(Math.random() * 2 + 1); + + System.out.println("L'aléatoire a été effectué, la valeur du choix est = " + random); + + if(random <=1) + { + choixP = "1"; + } else { + choixP = "2"; + } + } + + if(choixP.equalsIgnoreCase("1")) + { + j1.setCouleur("Blanc"); + j2.setCouleur("Noir"); + System.out.println("Le joueur " + j1.getNom() + " jouera les blanc et le joueur " + j2.getNom() + " jouera les noirs."); + while1 = 2; + + } else if(choixP.equalsIgnoreCase("2")) + { + j2.setCouleur("Blanc"); + j1.setCouleur("Noir"); + System.out.println("Le joueur " + j2.getNom() + " jouera les blanc et le joueur " + j1.getNom() + " jouera les noirs."); + while1 = 2; + + } else + { + System.err.println("Veuillez rentrer une valeur correcte"); + } + } // vars pour deplacer String A; From 93bbbc5a7d799f5f2142fa77ea0c7c5b1c15e2cc Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 20 May 2019 12:51:59 +0200 Subject: [PATCH 140/271] changement infos joueurs config --- src/visuel/main.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/visuel/main.java b/src/visuel/main.java index c30e474..5f0d2d0 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -20,10 +20,10 @@ public class main { // joueurs - System.out.println("Entrez le nom du joueur 1 (blanc) : "); + System.out.println("Entrez le nom du joueur 1 : "); Joueur j1 = new Joueur(sc.nextLine(), null); - System.out.println("Entrez le nom du joueur 2 (noir) : "); + System.out.println("Entrez le nom du joueur 2 : "); Joueur j2 = new Joueur(sc.nextLine(),null); while(while1 == 1) { From 09466e9287e7f291beb63a9f125db26ecd7ae925 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 20 May 2019 12:57:38 +0200 Subject: [PATCH 141/271] supression de commentaires inutiles --- src/piecesEchiquier/Echiquier.java | 71 +----------------------------- src/piecesEchiquier/Piece.java | 23 ---------- src/piecesEchiquier/Roi.java | 71 +----------------------------- 3 files changed, 2 insertions(+), 163 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 10b745c..c2368da 100644 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -183,76 +183,7 @@ public class Echiquier { System.out.println("Un de vos codes est faux. Recommencez."); // SI COORS INEXISTANTE (EX : A) return false; } - - /* - * public boolean verificationMouvementSilencieuse(Joueur J, String A, String B) // FONCTION TRADUCTION, VERIF + DEPLACEMENTS SI POSSIBLE - {// String A = coords A; String B = coord B - int i = -1; - int j = -1; - int k; - int l; - Position stock; - Position stock2; - - do { /// TEST 1ERE COORS - i++; - j = -1; - - - do { - j++; - if (getCodes()[i][j].equals(A)) //Cherche dans la matrice code si on trouve une string = celle donnée par le joueur - { - if (this.getEchiquier()[i][j].getNom().equalsIgnoreCase("..")) // Verifie si la case choisie n'est pas vide - { - return false; - } - else if (this.getEchiquier()[i][j].getCouleur() != J.getCouleur()) // Verifie si la piece choisie n'est pas de la faction opposée - { - return false; - } - } - }while(( (getCodes()[i][j].equalsIgnoreCase(A)) == false) && (j+1 < codes.length)); - }while((getCodes()[i][j].equalsIgnoreCase(A) == false) && (i+1 < codes.length)); - - - for (k = 0; k < codes.length;k++) /// TEST 2EME COORS - { - for (l = 0; l < codes.length;l++) - { - if (getCodes()[k][l].equals(B) == true) - { - if (this.getEchiquier()[k][l].getCouleur() == J.getCouleur()) // Verifie que la piece visée n'est pas de ta faction - { - return false; - - } - - - else if (this.getEchiquier()[i][j].deplacable(this,this.getEchiquier()[k][l]) == false) // VERIFICATION AVEC FONCTION DEPLACABLE - { - return false; - - } - - - else - { // Partie déplacement - stock = new Position(l+1,8-k); - stock2 = new Position(j+1,8-i); - this.getEchiquier()[k][l] = this.getEchiquier()[i][j]; - this.getEchiquier()[k][l].setPosition(stock); - this.getEchiquier()[i][j] = new Piece(stock2); - return true; - } - - } - } - } - System.out.println("Un de vos codes est faux. Recommencez."); // SI COORS INEXISTANTE (EX : A) - return false; - } - */ + public boolean estVide(Position position) { int x = position.getX(); diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index 3831050..71936fc 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -49,20 +49,6 @@ public class Piece { return verif; } - -/* //verifie une eventuelle collision a chaque case - public boolean collision(Case caseArrivee){ - return caseArrivee.estVide(); - }*/ - /* - //check si la case est alliee - public boolean estAllie(Case caseArrivee) { - return possesseur.equals(caseArrivee.getPieceCase().getPossesseur()) ; - } -*/ - - - // gets & sets public String getNom() { @@ -72,16 +58,7 @@ public class Piece { this.nom = nom; } //////////// - /* - public String getEmplacement() { - return emplacement; - } - public void setEmplacement(String emplacement) { - this.emplacement = emplacement; - } -*/ - /////////// public boolean isEnVie() { return enVie; diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index 0d312b8..a591259 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -103,75 +103,6 @@ public class Roi extends Piece { return false; } -/* public boolean enEchec(Echiquier e, Joueur Jopp) - { - for (int i = 0; i < e.getEchiquier().length;i++) - { - for (int j = 0; j < e.getEchiquier().length;j++) - { - if ( !(e.getEchiquier()[i][j].getCouleur() == this.getCouleur() ) && (e.verificationMouvementSilencieuse(Jopp,e.getCodes()[i][j],e.getCodes()[8-this.getPosition().getY()][this.getPosition().getX()-1]) == true) ) - { - return true; - } - } - } - return false; - } - - public boolean enEchecEtMat(Echiquier e, Joueur Jopp) - { - if (this.getPosition().getY() <= 7 && e.getEchiquier()[8-(this.getPosition().getY()+1)][this.getPosition().getX()-1].getNom().equals("..")) // verification mouvement vers le haut libre - { - e.getEchiquier()[8-(this.getPosition().getY()+1)][this.getPosition().getX()-1] = this; // on fait un fantome roi - e.getEchiquier()[8-(this.getPosition().getY()+1)][this.getPosition().getX()-1].getPosition().setY(this.getPosition().getY()+1); // on corrige sa position - if (!(this.enEchec(e,Jopp) )) // si pas en echec possibilité de mouvement donc pas echec et mat - { - e.getEchiquier()[8-(this.getPosition().getY()+1)][this.getPosition().getX()-1] = new Piece(new Position(this.getPosition().getX(),this.getPosition().getY()+1)); - // on tue le fantome de test - return false; - } - - } - - if (e.getEchiquier()[8-(this.getPosition().getY()-1)][this.getPosition().getX()-1].getNom().equals("..")) // verification mouvement vers le bas libre - { - e.getEchiquier()[8-(this.getPosition().getY()-1)][this.getPosition().getX()-1] = this; // on fait un fantome roi - e.getEchiquier()[8-(this.getPosition().getY()-1)][this.getPosition().getX()-1].getPosition().setY(this.getPosition().getY()-1); // on corrige sa position - if (!(this.enEchec(e,Jopp) )) // si pas en echec possibilité de mouvement donc pas echec et mat - { - e.getEchiquier()[8-(this.getPosition().getY()-1)][this.getPosition().getX()-1] = new Piece(new Position(this.getPosition().getX(),this.getPosition().getY()-1)); - // on tue le fantome de test - return false; - } - - } - - if (e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)-1].getNom().equals("..")) // verification mouvement vers la gauche libre - { - e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)-1] = this; // on fait un fantome roi - e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)-1].getPosition().setX(this.getPosition().getX()-1); // on corrige sa position - if (!(this.enEchec(e,Jopp) )) // si pas en echec possibilité de mouvement donc pas echec et mat - { - e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)-1] = new Piece(new Position(this.getPosition().getX()-1,this.getPosition().getY()) ); - // on tue le fantome de test - return false; - } - - } - - if (e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)+1].getNom().equals("..")) // verification mouvement vers la droite libre - { - e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)+1] = this; // on fait un fantome roi - e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)+1].getPosition().setX(this.getPosition().getX()+1); // on corrige sa position - if (!(this.enEchec(e,Jopp) )) // si pas en echec possibilité de mouvement donc pas echec et mat - { - e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)+1] = new Piece(new Position(this.getPosition().getX()+1,this.getPosition().getY()) ); - // on tue le fantome de test - return false; - } - - } - return true; - }*/ + } From 30c94b44d78d7321a31b692c597e0cab273e9541 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 20 May 2019 19:09:56 +0200 Subject: [PATCH 142/271] Correction + commentaires MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ajout de commentaire de déclaration - ajout d'une boucle pour pouvoir redémarrer une partie - ajout d'un check pour empêche un joueur de ne pas avoir de noms - passage des messages d'erreurs de sysout() à syserr() --- src/visuel/main.java | 229 +++++++++++++++++++++++++------------------ 1 file changed, 132 insertions(+), 97 deletions(-) diff --git a/src/visuel/main.java b/src/visuel/main.java index 5f0d2d0..c9a1cab 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -1,131 +1,166 @@ package visuel; // sert pour recup input clavier -import java.util.Scanner; //a voir si on fait une classe 'leScan' pour gerer le scan du clavier plus simplement +import java.util.Scanner; import joueurs.Joueur; import piecesEchiquier.Echiquier; public class main { - static int while1 = 1; + public static void main (String[] args) { + //ouvre une porte pour input Scanner sc = new Scanner(System.in); // variable tempo pour tests boolean jeu = true; + //déclaration d'une valeur pour la boucle while de configuration + int choixPartie = 1; - // joueurs + //déclaration boucle partie + String choixRedem; + // déclaration des joueurs System.out.println("Entrez le nom du joueur 1 : "); Joueur j1 = new Joueur(sc.nextLine(), null); System.out.println("Entrez le nom du joueur 2 : "); - Joueur j2 = new Joueur(sc.nextLine(),null); + Joueur j2 = new Joueur(sc.nextLine(), null); - while(while1 == 1) { - - System.out.println("Choisissez la configuration de partie que vous désirez en tapant le numéro correspondant :"); - System.out.println("1 = Blanc : " + j1.getNom() + " - Noir : " + j2.getNom()); - System.out.println("2 = Blanc : " + j2.getNom() + " - Noir : " + j1.getNom()); - System.out.println("3 = Aléatoire"); - - String choixP = sc.nextLine(); - - if(choixP.equalsIgnoreCase("3")) - { - int random = (int)(Math.random() * 2 + 1); - - System.out.println("L'aléatoire a été effectué, la valeur du choix est = " + random); - - if(random <=1) - { - choixP = "1"; - } else { - choixP = "2"; - } + if(j1.getNom().equalsIgnoreCase("") || j2.getNom().equalsIgnoreCase("") || j1.getNom().equalsIgnoreCase(null) || j2.getNom().equalsIgnoreCase(null)) { + choixPartie = -1; } - if(choixP.equalsIgnoreCase("1")) - { - j1.setCouleur("Blanc"); - j2.setCouleur("Noir"); - System.out.println("Le joueur " + j1.getNom() + " jouera les blanc et le joueur " + j2.getNom() + " jouera les noirs."); - while1 = 2; - - } else if(choixP.equalsIgnoreCase("2")) - { - j2.setCouleur("Blanc"); - j1.setCouleur("Noir"); - System.out.println("Le joueur " + j2.getNom() + " jouera les blanc et le joueur " + j1.getNom() + " jouera les noirs."); - while1 = 2; - - } else - { - System.err.println("Veuillez rentrer une valeur correcte"); - } - } - - // vars pour deplacer - String A; - String B; - - - - System.out.println("Bienvenue dans ce jeu d'echec sur console !\n"); + //déclaration des variables de déplacement + String A; //coordonées de départ + String B; //coordonées d'arrivée + //déclaration de l'échiquier Echiquier e = new Echiquier(); - do { - - // AFFICHAGE ECHIQUIER - System.out.println(e.toString()); - - /*JOUEUR1*/ - - System.out.println("Tour de "+j1.getNom()+"\n"); - - - do { - System.out.println("Quelle piece voulez vous deplacer ? Donnez le code correspondant de la piece a  deplacer(ex : A1).\n"); - A = sc.nextLine(); - System.out.println("A quel endroit la poser ? Donnez le code correspondant a l'endroit ou poser la piece.\n"); - B = sc.nextLine(); - - }while (e.verificationMouvement(j1, A,B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées - /*if (e.getRoiN1().enEchec(e,j2) && e.getRoiN1().enEchecEtMat(e,j2)) - { - System.out.println("Le joueur 2 est echec et mat, il a perdu !"); - jeu = false; - }*/ - //REAFFICHAGE ECHIQUIER - System.out.println(e.toString()); - - // JOUEUR2 - System.out.println("Tour de "+j2.getNom()+"\n"); + + while (choixPartie >= 1) { - if (jeu == true) - { - do { - System.out.println("Quelle piece voulez vous deplacer ? Donnez le code correspondant de la piece a  deplacer(ex : A1).\n"); - A = sc.nextLine(); - - System.out.println("A quel endroit la poser ? Donnez le code correspondant de l'endroit la poser la piece.\n"); - B = sc.nextLine(); - - }while (e.verificationMouvement(j2, A,B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées + while (choixPartie == 1) { + + System.out.println( + "Choisissez la configuration de partie que vous désirez en tapant le numéro correspondant :"); + System.out.println("1 = Blanc : " + j1.getNom() + " - Noir : " + j2.getNom()); + System.out.println("2 = Blanc : " + j2.getNom() + " - Noir : " + j1.getNom()); + System.out.println("3 = Aléatoire"); + + String choixP = sc.nextLine(); + + if (choixP.equalsIgnoreCase("3")) { + int random = (int) (Math.random() * 2 + 1); + + System.out.println("La configuration " + random + " a été choisie aléatoirement !"); + + if (random <= 1) { + choixP = "1"; + } else { + choixP = "2"; + } + } + + if (choixP.equalsIgnoreCase("1")) { + j1.setCouleur("Blanc"); + j2.setCouleur("Noir"); + System.out.println("Le joueur " + j1.getNom() + " jouera les blanc et le joueur " + j2.getNom() + + " jouera les noirs."); + choixPartie = 2; + + } else if (choixP.equalsIgnoreCase("2")) { + j2.setCouleur("Blanc"); + j1.setCouleur("Noir"); + System.out.println("Le joueur " + j2.getNom() + " jouera les blanc et le joueur " + j1.getNom() + + " jouera les noirs."); + choixPartie = 2; + + } else { + System.err.println("Veuillez rentrer une valeur correcte"); + } } + + System.out.println("Bienvenue " + j1.getNom() + " et " + j2.getNom() + + " dans e-Chesstria ! Le jeu d'echec équestrien sur console fait entièrement en java !\n"); + + do { + + // AFFICHAGE ECHIQUIER + System.out.println(e.toString()); + + /*JOUEUR1*/ + + System.out.println("Tour de " + j1.getNom() + "\n"); + + do { + System.out.println( + "Quelle pièce voulez vous déplacer ? Donnez le code correspondant de la piece à déplacer(ex : A1).\n"); + A = sc.nextLine(); + System.out.println( + "À quel endroit la poser ? Donnez le code correspondant à l'endroit ou poser la pièce.\n"); + B = sc.nextLine(); + + } while (e.verificationMouvement(j1, A, B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées + /*if (e.getRoiN1().enEchec(e,j2) && e.getRoiN1().enEchecEtMat(e,j2)) + { + System.out.println("Le joueur 2 est echec et mat, il a perdu !"); + jeu = false; + }*/ + //REAFFICHAGE ECHIQUIER + System.out.println(e.toString()); + + // JOUEUR2 + System.out.println("Tour de " + j2.getNom() + "\n"); + + if (jeu == true) { + do { + System.out.println( + "Quelle piece voulez vous deplacer ? Donnez le code correspondant de la piece à déplacer(ex : A1).\n"); + A = sc.nextLine(); + + System.out.println( + "À quel endroit la poser ? Donnez le code correspondant à l'endroit la poser la pièce.\n"); + B = sc.nextLine(); + + } while (e.verificationMouvement(j2, A, B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées + } + + /*if (e.getRoiB1().enEchec(e,j1) && e.getRoiN1().enEchecEtMat(e,j1)) + { + System.out.println("Le joueur 1 est echec et mat, il a perdu !"); + jeu = false; + }*/ + //jeu = false; + + } while (jeu == true); + + System.out.println("Voulez vous redémarrer une nouvelle partie ? (oui / non)"); + choixRedem = sc.nextLine(); - /*if (e.getRoiB1().enEchec(e,j1) && e.getRoiN1().enEchecEtMat(e,j1)) - { - System.out.println("Le joueur 1 est echec et mat, il a perdu !"); - jeu = false; - }*/ - //jeu = false; - - }while (jeu == true); + if(choixRedem.equalsIgnoreCase("oui")) { + + jeu = true; + System.out.println("Voulez vous conserver les mêmes paramètres de partie ? (oui / non)"); + choixRedem = sc.nextLine(); + + if(choixRedem.equalsIgnoreCase("oui")) { + choixPartie = 2; + } else if (choixRedem.equalsIgnoreCase("non")) { + choixPartie = 1; + } + + } else if(choixRedem.equalsIgnoreCase("non")) { + System.out.println("Merci d'avoir joué à notre jeu d'échec - Team G00D3NOUGHT - CC BY !"); + } else { + System.err.println("Une erreur s'est produite, les joueurs ont mal saisie des entrée lors de la fin du programme."); + } + } + System.err.println("Une erreur s'est produite, les joueurs ont mal saisie des entrée lors du démarrage du programme. (l'un des joueurs a un nom vide par exemple)"); sc.close(); } From 00f08013888cf9ac28dea78518b296da6ff08cd5 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 20 May 2019 19:24:15 +0200 Subject: [PATCH 143/271] change sysout to syserr changement des messages d'erreur de System.out.println() en System.err.println() --- src/piecesEchiquier/Echiquier.java | 10 +++++----- src/piecesEchiquier/Fou.java | 4 ++-- src/piecesEchiquier/Pion.java | 4 ++-- src/piecesEchiquier/Reine.java | 14 +++++++------- src/piecesEchiquier/Tour.java | 6 +++--- 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index c2368da..afcd98a 100644 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -131,12 +131,12 @@ public class Echiquier { { if (this.getEchiquier()[i][j].getNom().equalsIgnoreCase("..")) // Verifie si la case choisie n'est pas vide { - System.out.println("Vous avez choisi une case vide. Recommencez."); + System.err.println("Vous avez choisi une case vide. Recommencez."); return false; } else if (this.getEchiquier()[i][j].getCouleur() != J.getCouleur()) // Verifie si la piece choisie n'est pas de la faction opposée { - System.out.println("Le pion choisi n'est pas de votre faction. Recommencez."); + System.err.println("Le pion choisi n'est pas de votre faction. Recommencez !"); return false; } } @@ -152,7 +152,7 @@ public class Echiquier { { if (this.getEchiquier()[k][l].getCouleur() == J.getCouleur()) // Verifie que la piece visée n'est pas de ta faction { - System.out.println("Le pion que vous voulez manger est de votre faction. Recommencez."); + System.err.println("Le pion que vous voulez manger est de votre faction. Recommencez !"); return false; } @@ -160,7 +160,7 @@ public class Echiquier { else if (this.getEchiquier()[i][j].deplacable(this,this.getEchiquier()[k][l]) == false) // VERIFICATION AVEC FONCTION DEPLACABLE { - System.out.println("Déplacement impossible. Recommencez. \n"); + System.err.println("Déplacement impossible. Recommencez ! \n"); return false; } @@ -168,7 +168,7 @@ public class Echiquier { else { - System.out.println("Choix validés. déplacement en cours."); // Partie déplacement + System.out.println("Choix validé ! Déplacement en cours."); // Partie déplacement stock = new Position(l+1,8-k); stock2 = new Position(j+1,8-i); this.getEchiquier()[k][l] = this.getEchiquier()[i][j]; diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java index f3c7ccf..d067fa8 100755 --- a/src/piecesEchiquier/Fou.java +++ b/src/piecesEchiquier/Fou.java @@ -22,7 +22,7 @@ public class Fou extends Piece { { if ( !(e.getEchiquier()[8-(this.getPosition().getY()+j)][this.getPosition().getX()+j-1].getNom().equals("..")) ) { - System.out.println("Le chemin n'est pas libre."); + System.err.println("Le chemin n'est pas libre."); return false; } } @@ -36,7 +36,7 @@ public class Fou extends Piece { { if ( !(e.getEchiquier()[8-(this.getPosition().getY()-j)][this.getPosition().getX()+j-1].getNom().equals("..")) ) { - System.out.println("Le chemin n'est pas libre."); + System.err.println("Le chemin n'est pas libre."); return false; } } diff --git a/src/piecesEchiquier/Pion.java b/src/piecesEchiquier/Pion.java index d89463f..e9586d5 100755 --- a/src/piecesEchiquier/Pion.java +++ b/src/piecesEchiquier/Pion.java @@ -18,7 +18,7 @@ public class Pion extends Piece { { if (p.getNom().equals("..")) { - System.out.println("Vous tentez de manger une case vide."); + System.err.println("Vous tentez de manger une case vide."); return false; } @@ -33,7 +33,7 @@ public class Pion extends Piece { { if (!(p.getNom().equals(".."))) // SI case non vide { - System.out.println("Vous ne pouvez pas manger en avancant tout droit."); + System.err.println("Vous ne pouvez pas manger en avancant tout droit."); return false; } if ( ((this.getCouleur().equals("Blanc")) && (p.getPosition().getY()-1 == this.getPosition().getY()) ) || ((this.getCouleur().equals("Noir")) && (p.getPosition().getY()+1 == this.getPosition().getY()))) diff --git a/src/piecesEchiquier/Reine.java b/src/piecesEchiquier/Reine.java index c6c0b5d..ed61a6b 100755 --- a/src/piecesEchiquier/Reine.java +++ b/src/piecesEchiquier/Reine.java @@ -20,7 +20,7 @@ public class Reine extends Piece { { if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide { - System.out.println("Le chemin n'est pas libre."); + System.err.println("Le chemin n'est pas libre."); return false; } } @@ -33,7 +33,7 @@ public class Reine extends Piece { { if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide { - System.out.println("Le chemin n'est pas libre."); + System.err.println("Le chemin n'est pas libre."); return false; } } @@ -50,7 +50,7 @@ public class Reine extends Piece { { if (!(e.getEchiquier()[8-this.getPosition().getY()][i-1].getNom().equals(".."))) // SI case non vide { - System.out.println("Le chemin n'est pas libre."); + System.err.println("Le chemin n'est pas libre."); return false; } } @@ -84,7 +84,7 @@ public class Reine extends Piece { { if ( !(e.getEchiquier()[8-(this.getPosition().getY()+j)][this.getPosition().getX()+j-1].getNom().equals("..")) ) { - System.out.println("Le chemin n'est pas libre."); + System.err.println("Le chemin n'est pas libre."); return false; } } @@ -98,7 +98,7 @@ public class Reine extends Piece { { if ( !(e.getEchiquier()[8-(this.getPosition().getY()-j)][this.getPosition().getX()+j-1].getNom().equals("..")) ) { - System.out.println("Le chemin n'est pas libre."); + System.err.println("Le chemin n'est pas libre."); return false; } } @@ -118,7 +118,7 @@ public class Reine extends Piece { { if ( !(e.getEchiquier()[8-(this.getPosition().getY()+j)][this.getPosition().getX()+j-1].getNom().equals("..")) ) { - System.out.println("Le chemin n'est pas libre."); + System.err.println("Le chemin n'est pas libre."); return false; } } @@ -132,7 +132,7 @@ public class Reine extends Piece { { if ( !(e.getEchiquier()[8-(this.getPosition().getY()-j)][this.getPosition().getX()+j-1].getNom().equals("..")) ) { - System.out.println("Le chemin n'est pas libre."); + System.err.println("Le chemin n'est pas libre."); return false; } } diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java index 30cb6a5..63021a2 100755 --- a/src/piecesEchiquier/Tour.java +++ b/src/piecesEchiquier/Tour.java @@ -17,7 +17,7 @@ public class Tour extends Piece { { if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide { - System.out.println("Le chemin n'est pas libre."); + System.err.println("Le chemin n'est pas libre."); return false; } } @@ -30,7 +30,7 @@ public class Tour extends Piece { { if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide { - System.out.println("Le chemin n'est pas libre."); + System.err.println("Le chemin n'est pas libre."); return false; } } @@ -47,7 +47,7 @@ public class Tour extends Piece { { if (!(e.getEchiquier()[8-this.getPosition().getY()][i-1].getNom().equals(".."))) // SI case non vide { - System.out.println("Le chemin n'est pas libre."); + System.err.println("Le chemin n'est pas libre."); return false; } } From 694ad6a2d13f9f078aaa01f569b63854b88e1e7b Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 20 May 2019 19:25:07 +0200 Subject: [PATCH 144/271] correction orthographique --- src/visuel/main.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/visuel/main.java b/src/visuel/main.java index c9a1cab..afdede6 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -69,14 +69,14 @@ public class main { if (choixP.equalsIgnoreCase("1")) { j1.setCouleur("Blanc"); j2.setCouleur("Noir"); - System.out.println("Le joueur " + j1.getNom() + " jouera les blanc et le joueur " + j2.getNom() + System.out.println("Le joueur " + j1.getNom() + " jouera les blancs et le joueur " + j2.getNom() + " jouera les noirs."); choixPartie = 2; } else if (choixP.equalsIgnoreCase("2")) { j2.setCouleur("Blanc"); j1.setCouleur("Noir"); - System.out.println("Le joueur " + j2.getNom() + " jouera les blanc et le joueur " + j1.getNom() + System.out.println("Le joueur " + j2.getNom() + " jouera les blancs et le joueur " + j1.getNom() + " jouera les noirs."); choixPartie = 2; @@ -99,10 +99,10 @@ public class main { do { System.out.println( - "Quelle pièce voulez vous déplacer ? Donnez le code correspondant de la piece à déplacer(ex : A1).\n"); + "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); A = sc.nextLine(); System.out.println( - "À quel endroit la poser ? Donnez le code correspondant à l'endroit ou poser la pièce.\n"); + "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); B = sc.nextLine(); } while (e.verificationMouvement(j1, A, B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées @@ -120,11 +120,11 @@ public class main { if (jeu == true) { do { System.out.println( - "Quelle piece voulez vous deplacer ? Donnez le code correspondant de la piece à déplacer(ex : A1).\n"); + "Quelle piece voulez-vous deplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); A = sc.nextLine(); System.out.println( - "À quel endroit la poser ? Donnez le code correspondant à l'endroit la poser la pièce.\n"); + "À quel endroit la poser ? Donnez le code correspondant à l'endroit où la poser la pièce.\n"); B = sc.nextLine(); } while (e.verificationMouvement(j2, A, B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées @@ -157,10 +157,10 @@ public class main { } else if(choixRedem.equalsIgnoreCase("non")) { System.out.println("Merci d'avoir joué à notre jeu d'échec - Team G00D3NOUGHT - CC BY !"); } else { - System.err.println("Une erreur s'est produite, les joueurs ont mal saisie des entrée lors de la fin du programme."); + System.err.println("Une erreur s'est produite, les joueurs ont mal saisie des entrées lors de la fin du programme."); } } - System.err.println("Une erreur s'est produite, les joueurs ont mal saisie des entrée lors du démarrage du programme. (l'un des joueurs a un nom vide par exemple)"); + System.err.println("Une erreur s'est produite, les joueurs ont mal saisie des entrées lors du démarrage du programme. (nom de joueur vide OU un mauvais numéro de configuration par exemple)"); sc.close(); } From 91a596905b4806f3ff7b2bb2741d1d6a40dc5153 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 20 May 2019 19:32:32 +0200 Subject: [PATCH 145/271] update readme.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ajout du début du readme ajout du sommaire --- README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5fd0eb9..59ccd12 100755 --- a/README.md +++ b/README.md @@ -1,5 +1,16 @@ -# e-Chesstria +# e-Chesstria - Projet Tutoré Equipe G00D3N0UGHT Semestre 2 + +##Sommaire + +1. Description +2. Installation +3. Commandes + +### 1 - Description Projet tutoré de jeux d'échec équestrien par le groupe "Good 3nough Team" Ajout de cette ligne pour le td git +### 2 - Installation + +### 3 - Commandes \ No newline at end of file From f11745d1cbcd6fe6cc73c3c5ccfae8bbfd95f8a8 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 20 May 2019 19:33:01 +0200 Subject: [PATCH 146/271] fix ## H2 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 59ccd12..619e2ec 100755 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # e-Chesstria - Projet Tutoré Equipe G00D3N0UGHT Semestre 2 -##Sommaire +## Sommaire 1. Description 2. Installation From e95c80d10747c0f050c0e6832136b004141cf247 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 20 May 2019 21:23:13 +0200 Subject: [PATCH 147/271] fix readme --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 619e2ec..281c120 100755 --- a/README.md +++ b/README.md @@ -13,4 +13,7 @@ Ajout de cette ligne pour le td git ### 2 - Installation -### 3 - Commandes \ No newline at end of file +### 3 - Commandes + + +License creative commons Attributions 4.0 (voir LICENSE.md) \ No newline at end of file From adb0565521c030a4da0885bc008c7c3ef9813f5a Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Tue, 21 May 2019 15:53:09 +0200 Subject: [PATCH 148/271] ajout sommaire readme --- README.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 281c120..5edb248 100755 --- a/README.md +++ b/README.md @@ -2,16 +2,19 @@ ## Sommaire -1. Description -2. Installation -3. Commandes +1. [Description](#Description) +2. [Pré-requis](#) +3. [Installation](#Installation) +3. [Commandes](#Commandes) ### 1 - Description -Projet tutoré de jeux d'échec équestrien par le groupe "Good 3nough Team" -Ajout de cette ligne pour le td git +Projet tutoré de jeux d'échec équestrien par le groupe "Good 3nough Team". + +### 3 - Installation + +Poue fonctionner, -### 2 - Installation ### 3 - Commandes From f555c3b90c816f32cdd627491e55271571c954e2 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Tue, 21 May 2019 15:54:04 +0200 Subject: [PATCH 149/271] fix sommaire1 --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5edb248..5ed66e0 100755 --- a/README.md +++ b/README.md @@ -2,10 +2,10 @@ ## Sommaire -1. [Description](#Description) +1. [Description](###Description) 2. [Pré-requis](#) -3. [Installation](#Installation) -3. [Commandes](#Commandes) +3. [Installation](###Installation) +3. [Commandes](###Commandes) ### 1 - Description From decd3493186b15a66bad24cb4ffcf0fda1091c3d Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Tue, 21 May 2019 15:59:48 +0200 Subject: [PATCH 150/271] fix summary ancres --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 5ed66e0..81a5a80 100755 --- a/README.md +++ b/README.md @@ -2,10 +2,10 @@ ## Sommaire -1. [Description](###Description) +1. [Description](#1 - Description) 2. [Pré-requis](#) -3. [Installation](###Installation) -3. [Commandes](###Commandes) +3. [Installation](#3 - Installation) +3. [Commandes](#4 - Commandes) ### 1 - Description @@ -16,7 +16,7 @@ Projet tutoré de jeux d'échec équestrien par le groupe "Good 3nough Team". Poue fonctionner, -### 3 - Commandes +### 4 - Commandes License creative commons Attributions 4.0 (voir LICENSE.md) \ No newline at end of file From afde65692533e632a4cb083df6b17057b065cf6c Mon Sep 17 00:00:00 2001 From: Chiara Date: Wed, 22 May 2019 08:33:51 +0200 Subject: [PATCH 151/271] force push echiquier et main MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ajout de commentaire pour que ce soit compréhensible --- src/piecesEchiquier/Echiquier.java | 2 +- src/visuel/main.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index afcd98a..86fb91d 100644 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -5,7 +5,7 @@ import joueurs.Joueur; public class Echiquier { private String[][] codes = -{ +{ {"A8","B8","C8","D8","E8","F8","G8","H8"}, {"A7","B7","C7","D7","E7","F7","G7","H7"}, {"A6","B6","C6","D6","E6","F6","G6","H6"}, diff --git a/src/visuel/main.java b/src/visuel/main.java index afdede6..f7be6b4 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -2,7 +2,7 @@ package visuel; // sert pour recup input clavier import java.util.Scanner; -import joueurs.Joueur; +import joueurs.Joueur; import piecesEchiquier.Echiquier; From acebdb458263eb54bf58b3393e8c0d42dba6f86f Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 08:54:02 +0200 Subject: [PATCH 152/271] =?UTF-8?q?ajout=20partie=20pr=C3=A9requis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 81a5a80..a6abd0b 100755 --- a/README.md +++ b/README.md @@ -7,16 +7,20 @@ 3. [Installation](#3 - Installation) 3. [Commandes](#4 - Commandes) -### 1 - Description +### Description Projet tutoré de jeux d'échec équestrien par le groupe "Good 3nough Team". -### 3 - Installation +### Pré-requis + +Pour fonctionner, ce projet necessite d'avoir un [java JDK SE 1.8] (https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) à jour pour compiler et lancer le programme. + +### Installation Poue fonctionner, -### 4 - Commandes +### Commandes License creative commons Attributions 4.0 (voir LICENSE.md) \ No newline at end of file From c184389fc0463f686c9439094fa1b4d73222c4d8 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 08:54:35 +0200 Subject: [PATCH 153/271] fix link prerequis --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a6abd0b..8bdd601 100755 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Projet tutoré de jeux d'échec équestrien par le groupe "Good 3nough Team". ### Pré-requis -Pour fonctionner, ce projet necessite d'avoir un [java JDK SE 1.8] (https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) à jour pour compiler et lancer le programme. +Pour fonctionner, ce projet necessite d'avoir un [java JDK SE 1.8](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) à jour pour compiler et lancer le programme. ### Installation From 3ec6fb69040a991f6dd5a040d0d46e78137e3dd9 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 09:11:57 +0200 Subject: [PATCH 154/271] ajout parties MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - modification sommaire - complétion installation - ajout crédits --- README.md | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 8bdd601..5045636 100755 --- a/README.md +++ b/README.md @@ -2,10 +2,11 @@ ## Sommaire -1. [Description](#1 - Description) -2. [Pré-requis](#) -3. [Installation](#3 - Installation) -3. [Commandes](#4 - Commandes) +1. [Description](#Description) +2. [Pré-requis](#Pré-requis) +3. [Installation](#Installation) +4. [Commandes](#Commandes) +5. [Crédits](#Crédits) ### Description @@ -17,10 +18,18 @@ Pour fonctionner, ce projet necessite d'avoir un [java JDK SE 1.8](https://www.o ### Installation -Poue fonctionner, - +Pour installer le projet, vous pouvez lancer le fichier [echesstria.jar](#) ou bien compiler le projet en créant un nouveau projet sous Eclipse ou Intellij. ### Commandes +Pour pouvoir jouer, vous devez dans un premier temps rentrer deux noms de joueurs, si ces derniers sont vides, le jeu ne se lancera pas. Dans un second temps, vous devrez choisir qui jouera les blancs et qui jouera les noirs, vous pouvez également laisser le jeu choisir pour vous. -License creative commons Attributions 4.0 (voir LICENSE.md) \ No newline at end of file +### Crédits + +- [ALEXOVITZ Anthony](https://git-iutinfo.unice.fr/aa700867) +- [NOWICKI Johann](https://git-iutinfo.unice.fr/nj715143) +- [RELEVAT Chiara](https://git-iutinfo.unice.fr/rc804998) +- [SRIFI Jose](https://git-iutinfo.unice.fr/sj801446) +- [THEBAULT Manon](https://git-iutinfo.unice.fr/tm802036) + +License creative commons Attributions 4.0 (voir [LICENSE.md]()) \ No newline at end of file From fc48e8fd710f5224c7151a53b4a48ff0e8c79e48 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 09:12:08 +0200 Subject: [PATCH 155/271] change LICENSE to LICENSE.md --- LICENSE => LICENSE.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename LICENSE => LICENSE.md (100%) mode change 100755 => 100644 diff --git a/LICENSE b/LICENSE.md old mode 100755 new mode 100644 similarity index 100% rename from LICENSE rename to LICENSE.md From a92e28c63eb9911e30e1cc5456d3e709255a0c2e Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 09:16:27 +0200 Subject: [PATCH 156/271] fix license --- LICENSE.md | 1 - 1 file changed, 1 deletion(-) diff --git a/LICENSE.md b/LICENSE.md index ff81b2f..022346c 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,4 +1,3 @@ -. * __Considerations for licensors:__ Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. [More considerations for licensors](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors). * __Considerations for the public:__ By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. [More considerations for the public](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees). From 2034e47c6b01856764db9d8fc7048c492f4cbf87 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 09:17:50 +0200 Subject: [PATCH 157/271] fix license headings --- LICENSE.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/LICENSE.md b/LICENSE.md index 022346c..ec57313 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,12 +1,8 @@ -* __Considerations for licensors:__ Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. [More considerations for licensors](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors). - -* __Considerations for the public:__ By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. [More considerations for the public](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees). - -## Creative Commons Attribution 4.0 International Public License +# Creative Commons Attribution 4.0 International Public License By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. -### Section 1 – Definitions. +## Section 1 – Definitions. a. __Adapted Material__ means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. @@ -30,7 +26,7 @@ j. __Sui Generis Database Rights__ means rights other than copyright resulting f k. __You__ means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. -### Section 2 – Scope. +## Section 2 – Scope. a. ___License grant.___ @@ -62,7 +58,7 @@ b. ___Other rights.___ 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties. -### Section 3 – License Conditions. +## Section 3 – License Conditions. Your exercise of the Licensed Rights is expressly made subject to the following conditions. @@ -92,7 +88,7 @@ a. ___Attribution.___ 4. If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of the Adapted Material from complying with this Public License. -### Section 4 – Sui Generis Database Rights. +## Section 4 – Sui Generis Database Rights. Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: @@ -104,7 +100,7 @@ c. You must comply with the conditions in Section 3(a) if You Share all or a sub For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. -### Section 5 – Disclaimer of Warranties and Limitation of Liability. +## Section 5 – Disclaimer of Warranties and Limitation of Liability. a. __Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.__ @@ -112,7 +108,7 @@ b. __To the extent possible, in no event will the Licensor be liable to You on a c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. -### Section 6 – Term and Termination. +## Section 6 – Term and Termination. a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. @@ -128,13 +124,13 @@ c. For the avoidance of doubt, the Licensor may also offer the Licensed Material d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. -### Section 7 – Other Terms and Conditions. +## Section 7 – Other Terms and Conditions. a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. -### Section 8 – Interpretation. +## Section 8 – Interpretation. a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. @@ -147,3 +143,7 @@ d. Nothing in this Public License constitutes or may be interpreted as a limitat > Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at [creativecommons.org/policies](http://creativecommons.org/policies), Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses. > > Creative Commons may be contacted at creativecommons.org + +* __Considerations for licensors:__ Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. [More considerations for licensors](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors). + +* __Considerations for the public:__ By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. [More considerations for the public](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees). \ No newline at end of file From 002cb692b011207f740f84e6ce8a276b3a111382 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 09:19:56 +0200 Subject: [PATCH 158/271] add links to readme --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 5045636..164f18d 100755 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# e-Chesstria - Projet Tutoré Equipe G00D3N0UGHT Semestre 2 +# e-Chesstria - Projet Tutoré Equipe [G00D3N0UGHT](https://git-iutinfo.unice.fr/good3nought) Semestre 2 ## Sommaire @@ -8,23 +8,23 @@ 4. [Commandes](#Commandes) 5. [Crédits](#Crédits) -### Description +## Description -Projet tutoré de jeux d'échec équestrien par le groupe "Good 3nough Team". +Projet tutoré de jeux d'échec équestrien par le groupe "[Good 3nough Team](https://git-iutinfo.unice.fr/good3nought)". -### Pré-requis +## Pré-requis Pour fonctionner, ce projet necessite d'avoir un [java JDK SE 1.8](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) à jour pour compiler et lancer le programme. -### Installation +## Installation Pour installer le projet, vous pouvez lancer le fichier [echesstria.jar](#) ou bien compiler le projet en créant un nouveau projet sous Eclipse ou Intellij. -### Commandes +## Commandes Pour pouvoir jouer, vous devez dans un premier temps rentrer deux noms de joueurs, si ces derniers sont vides, le jeu ne se lancera pas. Dans un second temps, vous devrez choisir qui jouera les blancs et qui jouera les noirs, vous pouvez également laisser le jeu choisir pour vous. -### Crédits +## Crédits - [ALEXOVITZ Anthony](https://git-iutinfo.unice.fr/aa700867) - [NOWICKI Johann](https://git-iutinfo.unice.fr/nj715143) @@ -32,4 +32,4 @@ Pour pouvoir jouer, vous devez dans un premier temps rentrer deux noms de joueur - [SRIFI Jose](https://git-iutinfo.unice.fr/sj801446) - [THEBAULT Manon](https://git-iutinfo.unice.fr/tm802036) -License creative commons Attributions 4.0 (voir [LICENSE.md]()) \ No newline at end of file +License creative commons Attributions 4.0 (voir [LICENSE.md](https://git-iutinfo.unice.fr/good3nought/echesstria/blob/master/LICENSE.md)) \ No newline at end of file From 33dc5a87025da454f145263e1dc4e865db186a11 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 09:25:46 +0200 Subject: [PATCH 159/271] add logo in imgs folder --- imgs/echesstria-LOGO.png | Bin 0 -> 72051 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 imgs/echesstria-LOGO.png diff --git a/imgs/echesstria-LOGO.png b/imgs/echesstria-LOGO.png new file mode 100644 index 0000000000000000000000000000000000000000..2690fa1d5e6621459dac12f2a2d7b8255f35af44 GIT binary patch literal 72051 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

L(%f}AfLK6@}fK9xK5CFeXR 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 literal 0 HcmV?d00001 From c7274a3dc659781859359d7271c89140fc99fb52 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 09:25:53 +0200 Subject: [PATCH 160/271] add logo --- logo.png | Bin 0 -> 72051 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 logo.png diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2690fa1d5e6621459dac12f2a2d7b8255f35af44 GIT binary patch literal 72051 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

L(%f}AfLK6@}fK9xK5CFeXR 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 literal 0 HcmV?d00001 From 60849bca7ba614be22f170728cf4594de42caa95 Mon Sep 17 00:00:00 2001 From: Manon Date: Wed, 22 May 2019 09:26:08 +0200 Subject: [PATCH 161/271] =?UTF-8?q?"vous=20avez=20mang=C3=A9=20un=20pion?= =?UTF-8?q?=20!"=20ajout=C3=A9=20partout?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/piecesEchiquier/Cavalier.java | 8 ++++++++ src/piecesEchiquier/Fou.java | 6 +++++- src/piecesEchiquier/Reine.java | 8 ++++++++ src/piecesEchiquier/Roi.java | 11 ++++++++++- 4 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/piecesEchiquier/Cavalier.java b/src/piecesEchiquier/Cavalier.java index d43e670..6b5a9be 100755 --- a/src/piecesEchiquier/Cavalier.java +++ b/src/piecesEchiquier/Cavalier.java @@ -14,6 +14,7 @@ public class Cavalier extends Piece { { if(p.getCouleur()!=this.getCouleur()) { + System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -22,6 +23,7 @@ public class Cavalier extends Piece { { if(p.getCouleur()!=this.getCouleur()) { + System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -30,6 +32,7 @@ public class Cavalier extends Piece { { if(p.getCouleur()!=this.getCouleur()) { + System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -46,6 +49,7 @@ public class Cavalier extends Piece { { if(p.getCouleur()!=this.getCouleur()) { + System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -54,6 +58,7 @@ public class Cavalier extends Piece { { if(p.getCouleur()!=this.getCouleur()) { + System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -62,6 +67,7 @@ public class Cavalier extends Piece { { if(p.getCouleur()!=this.getCouleur()) { + System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -70,9 +76,11 @@ public class Cavalier extends Piece { { if(p.getCouleur()!=this.getCouleur()) { + System.out.println("Vous avez mangé une pièce !"); return true; } } + return false; } } diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java index d067fa8..2db1859 100755 --- a/src/piecesEchiquier/Fou.java +++ b/src/piecesEchiquier/Fou.java @@ -26,6 +26,7 @@ public class Fou extends Piece { return false; } } + System.out.println("Vous avez mangé une pièce !"); return true; } @@ -40,6 +41,7 @@ public class Fou extends Piece { return false; } } + System.out.println("Vous avez mangé une pièce !"); return true; } @@ -61,6 +63,7 @@ public class Fou extends Piece { return false; } } + System.out.println("Vous avez mangé une pièce !"); return true; } @@ -75,11 +78,12 @@ public class Fou extends Piece { return false; } } + System.out.println("Vous avez mangé une pièce !"); return true; } - + System.out.println("Vous avez mangé une pièce !"); return true; } } diff --git a/src/piecesEchiquier/Reine.java b/src/piecesEchiquier/Reine.java index ed61a6b..192d708 100755 --- a/src/piecesEchiquier/Reine.java +++ b/src/piecesEchiquier/Reine.java @@ -24,6 +24,7 @@ public class Reine extends Piece { return false; } } + System.out.println("Vous avez mangé une pièce !"); return true; } @@ -37,6 +38,7 @@ public class Reine extends Piece { return false; } } + System.out.println("Vous avez mangé une pièce !"); return true; } return false; @@ -54,6 +56,7 @@ public class Reine extends Piece { return false; } } + System.out.println("Vous avez mangé une pièce !"); return true; } @@ -66,6 +69,7 @@ public class Reine extends Piece { return false; } } + System.out.println("Vous avez mangé une pièce !"); return true; } return false; @@ -88,6 +92,7 @@ public class Reine extends Piece { return false; } } + System.out.println("Vous avez mangé une pièce !"); return true; } @@ -102,6 +107,7 @@ public class Reine extends Piece { return false; } } + System.out.println("Vous avez mangé une pièce !"); return true; } @@ -122,6 +128,7 @@ public class Reine extends Piece { return false; } } + System.out.println("Vous avez mangé une pièce !"); return true; } @@ -136,6 +143,7 @@ public class Reine extends Piece { return false; } } + System.out.println("Vous avez mangé une pièce !"); return true; } diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index a591259..d3394b4 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -19,8 +19,9 @@ public class Roi extends Piece { } - */ + */ + // verifie si le roi a bougé de sa place initiale NE SERT PAS POUR ROI public boolean aBouge() { if(this.getIni() != this.getPosition()) @@ -41,6 +42,7 @@ public class Roi extends Piece { { if(p.getCouleur()!=this.getCouleur()) { + System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -49,6 +51,7 @@ public class Roi extends Piece { { if(p.getCouleur()!=this.getCouleur()) { + System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -57,6 +60,7 @@ public class Roi extends Piece { { if(p.getCouleur()!=this.getCouleur()) { + System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -65,6 +69,7 @@ public class Roi extends Piece { { if(p.getCouleur()!=this.getCouleur()) { + System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -73,6 +78,7 @@ public class Roi extends Piece { { if(p.getCouleur()!=this.getCouleur()) { + System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -81,6 +87,7 @@ public class Roi extends Piece { { if(p.getCouleur()!=this.getCouleur()) { + System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -89,6 +96,7 @@ public class Roi extends Piece { { if(p.getCouleur()!=this.getCouleur()) { + System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -97,6 +105,7 @@ public class Roi extends Piece { { if(p.getCouleur()!=this.getCouleur()) { + System.out.println("Vous avez mangé une pièce !"); return true; } } From 1feba7bc83d8b4423d64114db736ef1745833e7e Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 09:30:31 +0200 Subject: [PATCH 162/271] Add logo on readme --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 164f18d..0506181 100755 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # e-Chesstria - Projet Tutoré Equipe [G00D3N0UGHT](https://git-iutinfo.unice.fr/good3nought) Semestre 2 +![e-Chesstria logo](https://git-iutinfo.unice.fr/good3nought/echesstria/blob/master/logo.png "--") + ## Sommaire 1. [Description](#Description) From 2515b4eb39a448ab3750d11129e19273738d7534 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 09:31:36 +0200 Subject: [PATCH 163/271] fix logo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0506181..61a041b 100755 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # e-Chesstria - Projet Tutoré Equipe [G00D3N0UGHT](https://git-iutinfo.unice.fr/good3nought) Semestre 2 -![e-Chesstria logo](https://git-iutinfo.unice.fr/good3nought/echesstria/blob/master/logo.png "--") +![alt text](https://git-iutinfo.unice.fr/good3nought/echesstria/blob/master/logo.png "e-Chesstria logo") ## Sommaire From 43b343748f141c3e1b79f243e12725e823672317 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 09:32:28 +0200 Subject: [PATCH 164/271] fix 2 logo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 61a041b..59ffa8f 100755 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # e-Chesstria - Projet Tutoré Equipe [G00D3N0UGHT](https://git-iutinfo.unice.fr/good3nought) Semestre 2 -![alt text](https://git-iutinfo.unice.fr/good3nought/echesstria/blob/master/logo.png "e-Chesstria logo") +![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/blob/master/logo.png "e-Chesstria logo") ## Sommaire From dd3c119c16c39b0e39cb261d081ef5b065737d38 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 09:33:21 +0200 Subject: [PATCH 165/271] fix no3 logo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 59ffa8f..596862a 100755 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # e-Chesstria - Projet Tutoré Equipe [G00D3N0UGHT](https://git-iutinfo.unice.fr/good3nought) Semestre 2 -![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/blob/master/logo.png "e-Chesstria logo") +![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/logo.png "e-Chesstria logo") ## Sommaire From 67843065f417d77add889a5840204da7b521da81 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 09:34:46 +0200 Subject: [PATCH 166/271] fix no4 logo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 596862a..ce8b522 100755 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # e-Chesstria - Projet Tutoré Equipe [G00D3N0UGHT](https://git-iutinfo.unice.fr/good3nought) Semestre 2 -![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/logo.png "e-Chesstria logo") +![logo] ## Sommaire From 9bf9ddbf28bd30e272426129958fc33917ea6fd0 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 09:34:46 +0200 Subject: [PATCH 167/271] Revert "fix no4 logo" This reverts commit 67843065f417d77add889a5840204da7b521da81. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ce8b522..596862a 100755 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # e-Chesstria - Projet Tutoré Equipe [G00D3N0UGHT](https://git-iutinfo.unice.fr/good3nought) Semestre 2 -![logo] +![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/logo.png "e-Chesstria logo") ## Sommaire From b5547ead5beb2816ca26d556e6d6ac9837391b5f Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 09:40:27 +0200 Subject: [PATCH 168/271] change summary --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 596862a..aca1334 100755 --- a/README.md +++ b/README.md @@ -4,11 +4,11 @@ ## Sommaire -1. [Description](#Description) -2. [Pré-requis](#Pré-requis) -3. [Installation](#Installation) -4. [Commandes](#Commandes) -5. [Crédits](#Crédits) +1. **Description** +2. **Pré-requis** +3. **Installation** +4. **Commandes** +5. **Crédits** ## Description From 2cc6a3366653b44521fec22c324cfd8e13cb3dba Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 09:41:08 +0200 Subject: [PATCH 169/271] add jouer img demo --- imgs/joueurs.PNG | Bin 0 -> 1844 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 imgs/joueurs.PNG diff --git a/imgs/joueurs.PNG b/imgs/joueurs.PNG new file mode 100644 index 0000000000000000000000000000000000000000..49f9835adb66637908fa9f59e2b6541318d278e7 GIT binary patch literal 1844 zcmV-42g~@0P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf2FXc8K~#8N?VL|& z8%GqzzZQH>(-1;XWW@>5!GTg->>L(@eTYG~Ktk<`f)RvV)aFnc>tb>+x>(66sV^ZQ z1i@7xf!qX1sSIWh&cTEhd{9Uo+X*2J#`W2Uc4l_=k1UOLB&{k-`+l%QGpn81c{^|3 zo3-+N7LUjO1wn+E&*i^;K_X|uG_50-kd?hmJdL86LtsM@?e&Rm0>p6w?*y_AUE{}* zE*=fTmgWo?MheS2vV!O%ta;Xn1+FR*m{~rF>|+ikSx@u{l_kuuXFJz(4>p0Exd7bm z%mSy84)GhvA)PKdQKFcRi!*Uimq#)R81r@nDMFqW(IuC*LU2uVk)hdc)AerGC&5fBvF^n+6aSu$U25%FbstK*`1IG} zbq(i)k`m^O87x&~u~`ziL-$xsl@quVnH}umxsTgGGFGr6MAk$!d0pIiWogDqKinu% zeY3_mb6^==vZjGaaU;x7`4|ea-Y~MjyzM*{EX~;U{F)ssr`nB5jr#MW{@BIC&5vU> zCEH9bW6;xPG#Nvg^0xb5(qT{IIvhe0;E=AG4Go|S6hE9zvqjTOK~v%mV( zAA9`rIHG33y*HL>6wD}M=VjR}OUK>8>I=;QBqm|(EaPE&97*w=nPsN<*B&9hq zr&axEq(dFxd<;?cuv50fiQ~{@XCW-lR^UJkq|+avPoLQ{04J#6uWe|AdJm*20TFu035d|+>#}B4=p%?~kx6Kl48Xe5);-(mc|SX1A8B>H$%IBtYLrns+-2J^k`)G1OE9a%U~!1M-k!XIZzt5U)b`t1-A zdOEi!Ac!7;oPY>D!bGXhBd$zszAMM#fyWnb{rns)rLYul#9yHP+E__6))b@3xN-b&ey4F;w zxu~$aC|9`TVKfFm$y5hYrRFs1&ks_iuB9D&s^)|~@pFS7!Q=K(r$eMlEg@Cv8oH@U z&4rqi+wL>bfmEp(q)HtuU9zW0zvqE$!28tzoPboR1uV57Rcf2yRjIiHhzQV%1CS~; zKS!$6b!j+;Bcw{roO6Lc)T$IrJ*k_8eo7rG_(DOd)Q9QLo`C2Mq)J^EiUj?Rcn#|2 z<)lhoOX!_oU|;|T2M4l5gptsvL*xJi?Fop`Lry@19%oO`7pl}%5--)#Fa)8Z?#7rq z#K_;h<^)`p{aftawX}p^fFODVasnds ikP{H0hn#>2IlzBQfgL;FOQ&l90000 Date: Wed, 22 May 2019 09:43:25 +0200 Subject: [PATCH 170/271] add choix joueur img --- imgs/choix-c.PNG | Bin 0 -> 3738 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 imgs/choix-c.PNG diff --git a/imgs/choix-c.PNG b/imgs/choix-c.PNG new file mode 100644 index 0000000000000000000000000000000000000000..df82af955840e8940012901554767909c17ba5e9 GIT binary patch literal 3738 zcmZuzc|4R`AAbmu6ow%~LTE#78C+Y6wAs=kBSMXJs3yaRnNgG_q_PesWGBWl#29WD zlZ++0wrNHT#*%fcV|&NF?;r2y{oFs!^F815Ilu3D&hvcF?{^|?tSrR#$?XFGKNuPOCL6&@BtbTu47#t>$9!+ztcp%=>+@!#`BYaeMwBb8u*r$AA4rlS=>pj z_at%iq=9o#XoClhneJsd8dJT-Dh#jg_;&KH;%finH`Bp>V&_e)>58!h#3+CU!W#Kb zRYj)r&(G*n!-rYhlcTE%f#2*i?f{?X=DT$ku8^;X%o4->g%0G&;4=4Q1Mff|hP6a9 zR~Cl9=f)h2>##I2g8MaSAUHMp6Ft)@8m-0ZC5DzIYZ5jqH%T?dqw);%(HO+rxyx$> z#wlpp>E07;5ZaMrVOm}!&w12G>Scp+^`}u*d0i(_sHO+fXW+2I%C0bS%{4?-;I**LXmA4k5o{YvCg-67C<=XN0%#Qf${geH-t{1E$v}B* zg}wzkAaaxAeLHwfe#(U#xN6)o?B3CsNO5q;qnXo_<24wlR4Bx{8pY7AUal~vl~%`m zsxzk6*Qy4H^4ZsQbwqr7uH7?fo9gidDrkDhlb{|PDg~*lCk(;CH-nrG&dw0WvX1D< z2w6r&XAG%JThDyZeC7W-JN}*9szBNJ^T_yD>vk$?87&Q?&kNOcwW4c^o6EZ?XEgmE zHxSVK3}WV>R+=qf@9LH&)mV268j9N`m6X?ft-(6Rjdj~F&PQZQ+pNWBiP2wg>}>QB z!(^?Wo$0IaxQ6~w5gS&;mA}(e;a*ZaFyL`DfnAzin-0G=<_s2D)LWHVcx|2;5z!B> zPW17~wuf{lzde|mpuJTaJJ`Eb#MYq}I$X_6&mB^>@S=RTrsp0T%+d~5SWap2nx-oO z3GrVuQ}gZBvSx2+!lhpc(lc9lTE4;Eb|$HB%KH^-BauArlFxtvUh$~6SnXx;!gEJTgNQ> z0P3j?r_BVz@gQraoip)|y9cFF-%ks5ozgKy*>Ar9!`3j_h>ND;WZ%P1fr=Li- zlrw5#&l_x!K8=qVp%0@qO5&tpWQSC0nsaoiE~r9`gh0?dHkql`$gkefI`EN#MOpfx z(PQKTu`}W6cCgcMSL+Z`#ip>{p<=ObYZt4fJEQFE%D|D+Gq*k8vVV8c88xaR-YOXI z1XGp29nK|W)!AEkZMjbo6BpRZy{Kl+r|3W(O>fbA0~B4&n?Cgu7>%kM&HdNcB&p4D zd1Xd$hOybBNLPkJ1>Yg{WoeUfStHds*Q5Y3q8X){%kH?{nTcObTpu;kz*vU4p+07Z z-6q(!r{6AinnmJ!X?%tqi>3mX&55EqJN7H$v^cohWuawoN;S5v%04{^%4^5K40gHQ0= zeBtZJGdh3aNZ6y1^0?E2xkn*2K6o*#Q-iW>tM6ai$k5{Uysi0&Uulwr)}0!d+8{NS zE;+sYxlptbrT7~s*^|8BKTT+efQ(!p^<2~@A*~$^E3t7fMA|?s$qw)fd5~3Ows38! zskrT>o~EtkQb*Ffrmrtk1(x_o#I0zeDAI$nyv!aXxfnwrG6A%0|98h)(h&>0WwI@CkPb;h~12 ze~$|#Qm4|kXZZei@SjTbe}zd)3s~;UU+?BStBncC2;u{Pe3o$II$;}&1tnl~!kGVSe&I=>uBNDxO+ z$Q1P5p*FIELBKj@k{tIz_Q}#70GGr<^LP1NYZLo=0jkN!ThX?AuF?ELH&%b^N6J9W zn@jmyzAmDjQv9v(F~0@F!7fW!5VPBF>8{AHqx(}s^lt%}h?(QoUd+>QkpDl*?&AbP zVf7xM5gk|$Y7~QTE01^TLB?D`RV>AqVE!sGe`fL?#csEm>Ml(IE^^Qoq-N24JehhF zcuB2(xu(+zq56E5!EI6ISU=E;m(Vv@JgowBJm_3K@e5gl--cVTDh+X}Jd}#r%aKxg zFYsm-9~nG!QUKa(rZs4S-mKZ7J@w>Uvp`#~OcD8jpG)Kkk@pOr6QmET?dPqaH6&1@ zVIl*EzpSnV8~KeEKp2;-yWz~buxJkG%=wtR!+3|4jv73pdl z%)Suwtq_-$-MDYiZt=dbeS61^8Jve1YzQ6g`R;cveZTn@H>~jw9b4hXg-;osF#|#M zPv|}f57PnkS2F$6#acIE0MNSdke>$tFel6}&V!$>M*yA$0ZpNQr(`nly*g-k1=Q6P zxFI>kyTiS=x(k3;cTUXNt^_BpCc}JxtZ)0eGrFoGq`|9U274@en*!s=`c@Fmjxzte z#^T4>l8E<0K%gQoV`#2%#P0XBKVT3DK|IdzW7Z0(%TkUFOBzrMw!Y}Qed(0`R$BN!Ct-{*KI6Bpoi z6Ugn!NE~X{f%H6nzW6%k>S{phe+f6Y;qfX2GveT|iu5d#xNc)PY-7wE^zflA?XlX=YBK7rrh9$W>QT^LUCQmvob zVhBOJ-w{;ru`{~BiUr$ zo!?m^0Kk559O!``#apz_-QDEmLOXMGIi4yfQ+!&pv^eO7gRF^|>yZhgZ^2q9M+WIL zT&&8;b31KLwNVvA%usMysRH{nL*N0Fm zNgtdYc$sv&RQJ>-FAUHVw*U$WI4`5EGs^C7`#%|Bj6X|XAt-rxJ&TUbKmvaER!Lnkd|7rCJ;{ z34YA8P-UrV@2}lzq?hc^*B|71Q~LMVW8G&(K15AOhO#rP(J&GE7^x|Nj-9yj%nyuH?)Y^)mrPpAA6SAJTKh=h;?s9`fjwsq z!2ei8%B>dV-S*ek!Tw64xAmAVW1a@(`?UY_?~PO9h|!cQqtc2B-U~AH5z)rbMk`({ zF57cWSaw&1DZ(>205mqA1NeF9xc^^i&f4l0R;P)(Y;I-t@%+7K{{gJm BEC2ui literal 0 HcmV?d00001 From b0e6cc12e0b85cef8b531f0d272c18887fd57734 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 09:43:43 +0200 Subject: [PATCH 171/271] add demo image for player name --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index aca1334..aa0972c 100755 --- a/README.md +++ b/README.md @@ -24,7 +24,11 @@ Pour installer le projet, vous pouvez lancer le fichier [echesstria.jar](#) ou b ## Commandes -Pour pouvoir jouer, vous devez dans un premier temps rentrer deux noms de joueurs, si ces derniers sont vides, le jeu ne se lancera pas. Dans un second temps, vous devrez choisir qui jouera les blancs et qui jouera les noirs, vous pouvez également laisser le jeu choisir pour vous. +Pour pouvoir jouer, vous devez dans un premier temps rentrer deux noms de joueurs, si ces derniers sont vides, le jeu ne se lancera pas. +![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/joueurs.PNG) + +Dans un second temps, vous devrez choisir qui jouera les blancs et qui jouera les noirs, vous pouvez également laisser le jeu choisir pour vous. + ## Crédits From 110badb00e5e230d1f2df58d02de3c19ec96905b Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 09:44:42 +0200 Subject: [PATCH 172/271] add player camp choice image demo --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index aa0972c..aa011c0 100755 --- a/README.md +++ b/README.md @@ -24,10 +24,11 @@ Pour installer le projet, vous pouvez lancer le fichier [echesstria.jar](#) ou b ## Commandes -Pour pouvoir jouer, vous devez dans un premier temps rentrer deux noms de joueurs, si ces derniers sont vides, le jeu ne se lancera pas. +Pour pouvoir jouer, vous devez dans un premier temps rentrer deux noms de joueurs, si ces derniers sont vides, le jeu ne se lancera pas. ![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/joueurs.PNG) -Dans un second temps, vous devrez choisir qui jouera les blancs et qui jouera les noirs, vous pouvez également laisser le jeu choisir pour vous. +Dans un second temps, vous devrez choisir qui jouera les blancs et qui jouera les noirs, vous pouvez également laisser le jeu choisir pour vous. +![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/choix-c.PNG) ## Crédits From 113519c55ba2295149e296b2bf3e5242706093e3 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 09:45:09 +0200 Subject: [PATCH 173/271] fix spaces imgs --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index aa011c0..0d96bf3 100755 --- a/README.md +++ b/README.md @@ -25,9 +25,11 @@ Pour installer le projet, vous pouvez lancer le fichier [echesstria.jar](#) ou b ## Commandes Pour pouvoir jouer, vous devez dans un premier temps rentrer deux noms de joueurs, si ces derniers sont vides, le jeu ne se lancera pas. + ![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/joueurs.PNG) Dans un second temps, vous devrez choisir qui jouera les blancs et qui jouera les noirs, vous pouvez également laisser le jeu choisir pour vous. + ![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/choix-c.PNG) From d1f6ee760f0d668c669a0446178e8debd4c2c565 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 09:54:29 +0200 Subject: [PATCH 174/271] add echi1 --- imgs/echi1.PNG | Bin 0 -> 6851 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 imgs/echi1.PNG diff --git a/imgs/echi1.PNG b/imgs/echi1.PNG new file mode 100644 index 0000000000000000000000000000000000000000..74b5154f45fb33f7d360da4017bd85f5b016916b GIT binary patch literal 6851 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 Date: Wed, 22 May 2019 09:55:06 +0200 Subject: [PATCH 175/271] add echiquier img --- README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0d96bf3..3f9ade3 100755 --- a/README.md +++ b/README.md @@ -26,11 +26,16 @@ Pour installer le projet, vous pouvez lancer le fichier [echesstria.jar](#) ou b Pour pouvoir jouer, vous devez dans un premier temps rentrer deux noms de joueurs, si ces derniers sont vides, le jeu ne se lancera pas. -![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/joueurs.PNG) +![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/joueurs.PNG) Dans un second temps, vous devrez choisir qui jouera les blancs et qui jouera les noirs, vous pouvez également laisser le jeu choisir pour vous. -![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/choix-c.PNG) +![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/choix-c.PNG) + +Une fois ces choix effectués, le jeu demarrera en vous affichant le nom du joueur actif ainsi que l'échiquier actuel. + +![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/echi1.PNG) + ## Crédits From 99ba7996dbcd95fc1656c25b156937ede75cbe98 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 10:02:28 +0200 Subject: [PATCH 176/271] add image --- imgs/pos-E.PNG | Bin 0 -> 4199 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 imgs/pos-E.PNG diff --git a/imgs/pos-E.PNG b/imgs/pos-E.PNG new file mode 100644 index 0000000000000000000000000000000000000000..1f7ac928be44508c75c3c19283386949b56b029e GIT binary patch literal 4199 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 Date: Wed, 22 May 2019 10:02:38 +0200 Subject: [PATCH 177/271] Correction des testes ajout d'un @BeforeEach et adaptation des test pions fou et tour --- tests/testPiece.java | 152 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 125 insertions(+), 27 deletions(-) diff --git a/tests/testPiece.java b/tests/testPiece.java index 423ac1b..5fdad88 100644 --- a/tests/testPiece.java +++ b/tests/testPiece.java @@ -1,40 +1,138 @@ -/* -import static org.junit.jupiter.api.*; +import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import joueurs.Joueur; import piecesEchiquier.*; class testPiece { private Echiquier e; - private Joueur j; + private Joueur jb; + private Joueur jn; @BeforeEach public void initialisation() { - Echiquier e = new Echiquier(); - Joueur j = new Joueur("Marion la Stagiaire","Blanc"); - } - - @Test - void testVerif() { - assertFalse(e.VerifFinale(j, "A4", "A5")); //choix de case vide - assertFalse(e.VerifFinale(j, "A7", "A8")); //mauvais choix de pion - assertFalse(e.VerifFinale(j, "A1", "A2")); //manger pion allier - assertFalse(e.VerifFinale(j, "A2", "B5")); //mauvais deplacement + e = new Echiquier(); + jb = new Joueur("Joueur Blanc","Blanc"); + jn = new Joueur("JOueur Noir", "Noir"); + + System.out.println(); + System.out.println("nouveau test : "); + System.out.println(); } - @Test - void testTour() { - e.getPionB1().getPosition().setX(5); - e.getPionB1().getPosition().setY(4); - e.VerifFinale(j, "A1", "A4"); - assertEquals(0, e.getPionB1().getPosition().getX()); - assertEquals(4, e.getPionB1().getPosition().getY()); - e.VerifFinale(j, "A4", "F4"); - assertEquals(5, e.getPionB1().getPosition().getX()); - assertEquals(4, e.getPionB1().getPosition().getY()); + @AfterEach + public void netoyage () { + e = null; + jb = null; + jn = null; + } + + @Test + void testVerif() { + assertFalse(e.verificationMouvement(jb, "A4", "A5")); //choix de case vide + assertFalse(e.verificationMouvement(jb, "A7", "A8")); //mauvais choix de pion + assertFalse(e.verificationMouvement(jb, "A1", "A2")); //manger pion allier + assertFalse(e.verificationMouvement(jb, "A2", "B5")); //mauvais deplacement + } + + @Test + void testPion () { + e.verificationMouvement(jb, "A2", "A3"); //deplacement haut de un + assertEquals(1, e.getPionB1().getPosition().getX()); + assertEquals(3, e.getPionB1().getPosition().getY()); + + e.verificationMouvement(jb, "E2", "E4");//deplacement de depart de deux + assertEquals(5, e.getPionB5().getPosition().getX()); + assertEquals(4, e.getPionB5().getPosition().getY()); + + e.verificationMouvement(jn, "D7", "D5"); + e.verificationMouvement(jb, "E4", "D5"); //depalcement diagonale pour mangeage + assertEquals(4, e.getPionB5().getPosition().getX()); + assertEquals(5, e.getPionB5().getPosition().getY()); + + assertFalse(e.verificationMouvement(jb, "A3", "A5")); //verif erreure de deplacement de deux alors que pas premier mouvement + assertFalse(e.verificationMouvement(jb, "A3", "B4")); //verif erreure deplacement diagonale alors que pas de possibilit? de manger + assertFalse(e.verificationMouvement(jb, "D5", "D4")); //verif d?palcement impossible dans l'autre sens pour blanc + e.verificationMouvement(jb, "B7", "B6"); + assertFalse(e.verificationMouvement(jb, "B6", "B7")); //verif d?palcement impossible dans l'autre sens pour noirs + + } + + @Test + void testTour() { + e.verificationMouvement(jb, "A2", "a4"); + e.verificationMouvement(jb, "a4", "a5"); + + e.verificationMouvement(jb, "A1", "A4"); //d?placement haut + assertEquals(1, e.getTourB1().getPosition().getX()); + assertEquals(4, e.getTourB1().getPosition().getY()); + + e.verificationMouvement(jb, "A4", "A3"); //d?placement bas + assertEquals(1, e.getTourB1().getPosition().getX()); + assertEquals(3, e.getTourB1().getPosition().getY()); + + e.verificationMouvement(jb, "A3", "F3"); //deplacement droite + assertEquals(6, e.getTourB1().getPosition().getX()); + assertEquals(3, e.getTourB1().getPosition().getY()); + + e.verificationMouvement(jb, "F3", "C3"); //d?placement gauche + assertEquals(3, e.getTourB1().getPosition().getX()); + assertEquals(3, e.getTourB1().getPosition().getY()); - assertTrue(e.VerifFinale(j, "F4", "F7")); + e.verificationMouvement(jb, "c3", "C7"); //verification mangeage + assertEquals(3, e.getTourB1().getPosition().getX()); + assertEquals(7, e.getTourB1().getPosition().getY()); } - -} -*/ \ No newline at end of file + + @Test + void testFou() { + e.verificationMouvement(jb, "D2", "d3"); + + e.verificationMouvement(jb, "C1", "E3"); //d?palcement haut / droit + assertEquals(5, e.getFouB1().getPosition().getX()); + assertEquals(3, e.getFouB1().getPosition().getY()); + + e.verificationMouvement(jb, "E3", "C5"); //d?placement haut / gauche + assertEquals(3, e.getFouB1().getPosition().getX()); + assertEquals(5, e.getFouB1().getPosition().getY()); + + e.verificationMouvement(jb, "C5", "D4"); //?placment bas / droite + assertEquals(4, e.getFouB1().getPosition().getX()); + assertEquals(4, e.getFouB1().getPosition().getY()); + + e.verificationMouvement(jb, "D4", "B3"); //d?placement bas / gauche + assertEquals(2, e.getFouB1().getPosition().getX()); + assertEquals(3, e.getFouB1().getPosition().getY()); + + e.verificationMouvement(jb, "B3", "f7"); //verif mangeage + assertEquals(6, e.getFouB1().getPosition().getX()); + assertEquals(7, e.getFouB1().getPosition().getY()); + } + + /*@Test + void testCavalier() { + e.verificationMouvement(j, "B1", "C3"); //d?palcement haut / droit + saut par dessus autre pi?ce + assertEquals(5, e.getCavalierB1().getPosition().getX()); + assertEquals(2, e.getCavalierB1().getPosition().getY()); + + e.verificationMouvement(j, "C3", "B1"); //deplacement bas / gauche + saut + assertEquals(7, e.getCavalierB1().getPosition().getX()); + assertEquals(1, e.getCavalierB1().getPosition().getY()); + + e.verificationMouvement(j, "B1", "A3"); //deplacement haut / gauche + saut + assertEquals(5, e.getCavalierB1().getPosition().getX()); + assertEquals(0, e.getCavalierB1().getPosition().getY()); + + e.verificationMouvement(j, "A3", "B5"); + e.verificationMouvement(j, "B5", "C3"); //deplacement bas / droite + assertEquals(5, e.getCavalierB1().getPosition().getX()); + assertEquals(2, e.getCavalierB1().getPosition().getY()); + + e.verificationMouvement(j, "C3", "D5"); + e.verificationMouvement(j, "D5", "E7"); + assertFalse(e.getPionN5().isEnVie()); + } +*/ +} \ No newline at end of file From 3fbb72ad70a2a6ef557a2cd60ebe44615cb211a7 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Wed, 22 May 2019 10:04:16 +0200 Subject: [PATCH 178/271] change summary + add choice pos --- README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3f9ade3..7135e44 100755 --- a/README.md +++ b/README.md @@ -7,8 +7,9 @@ 1. **Description** 2. **Pré-requis** 3. **Installation** -4. **Commandes** -5. **Crédits** +4. **Pièces Echiquier** +5. **Commandes** +6. **Crédits** ## Description @@ -36,7 +37,11 @@ Une fois ces choix effectués, le jeu demarrera en vous affichant le nom du joue ![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/echi1.PNG) +Le jeu vous demandra ensuite de rentrer deux positions sur l'échiquier, la première étant celle d'une pièce de l'échiquier et la seconde étant la position de destination. +![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/pos-E.PNG) + +Le jeu affichera ensuite de nouveau l'échiquier et vous redemendera de refaire la manipulation précédente. ## Crédits From 2b370b863e0b4e9895c3b32d2c92811f3774aafc Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Thu, 23 May 2019 10:05:14 +0200 Subject: [PATCH 179/271] add CC mention on footer --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7135e44..90549e8 100755 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ 4. **Pièces Echiquier** 5. **Commandes** 6. **Crédits** +7. **License** ## Description @@ -17,12 +18,13 @@ Projet tutoré de jeux d'échec équestrien par le groupe "[Good 3nough Team](ht ## Pré-requis -Pour fonctionner, ce projet necessite d'avoir un [java JDK SE 1.8](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) à jour pour compiler et lancer le programme. +Pour fonctionner, ce projet necessite d'avoir un [java JDK SE 1.8](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) à jour pour compiler et un [java JRE](https://java.com/fr/download/manual.jsp) à jour lancer le programme. ## Installation Pour installer le projet, vous pouvez lancer le fichier [echesstria.jar](#) ou bien compiler le projet en créant un nouveau projet sous Eclipse ou Intellij. + ## Commandes Pour pouvoir jouer, vous devez dans un premier temps rentrer deux noms de joueurs, si ces derniers sont vides, le jeu ne se lancera pas. @@ -51,4 +53,6 @@ Le jeu affichera ensuite de nouveau l'échiquier et vous redemendera de refaire - [SRIFI Jose](https://git-iutinfo.unice.fr/sj801446) - [THEBAULT Manon](https://git-iutinfo.unice.fr/tm802036) -License creative commons Attributions 4.0 (voir [LICENSE.md](https://git-iutinfo.unice.fr/good3nought/echesstria/blob/master/LICENSE.md)) \ No newline at end of file +## License + +![logo](https://licensebuttons.net/l/by/4.0/88x31.png)This page is available under the terms of the [Creative Commons Attribution 4.0 International License](https://git-iutinfo.unice.fr/good3nought/echesstria/blob/master/LICENSE.md). \ No newline at end of file From 16eeb4383e764df207a606967a449c60a96d6b49 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Thu, 23 May 2019 10:05:39 +0200 Subject: [PATCH 180/271] fix space footer --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 90549e8..e054320 100755 --- a/README.md +++ b/README.md @@ -55,4 +55,4 @@ Le jeu affichera ensuite de nouveau l'échiquier et vous redemendera de refaire ## License -![logo](https://licensebuttons.net/l/by/4.0/88x31.png)This page is available under the terms of the [Creative Commons Attribution 4.0 International License](https://git-iutinfo.unice.fr/good3nought/echesstria/blob/master/LICENSE.md). \ No newline at end of file +![logo](https://licensebuttons.net/l/by/4.0/88x31.png) This page is available under the terms of the [Creative Commons Attribution 4.0 International License](https://git-iutinfo.unice.fr/good3nought/echesstria/blob/master/LICENSE.md). \ No newline at end of file From 8498b367714cce15a04f56d1aac73a16263f82dc Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Thu, 23 May 2019 10:07:23 +0200 Subject: [PATCH 181/271] change relink footer --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e054320..0a00097 100755 --- a/README.md +++ b/README.md @@ -55,4 +55,4 @@ Le jeu affichera ensuite de nouveau l'échiquier et vous redemendera de refaire ## License -![logo](https://licensebuttons.net/l/by/4.0/88x31.png) This page is available under the terms of the [Creative Commons Attribution 4.0 International License](https://git-iutinfo.unice.fr/good3nought/echesstria/blob/master/LICENSE.md). \ No newline at end of file +[![logo](https://licensebuttons.net/l/by/4.0/88x31.png)](https://creativecommons.org/licenses/by/4.0/) This page is available under the terms of the [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/). \ No newline at end of file From d199669305de1a49c1ee62391d3fb81d31a39e1e Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Thu, 23 May 2019 10:08:32 +0200 Subject: [PATCH 182/271] final modification for footer --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0a00097..0417e1f 100755 --- a/README.md +++ b/README.md @@ -55,4 +55,4 @@ Le jeu affichera ensuite de nouveau l'échiquier et vous redemendera de refaire ## License -[![logo](https://licensebuttons.net/l/by/4.0/88x31.png)](https://creativecommons.org/licenses/by/4.0/) This page is available under the terms of the [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/). \ No newline at end of file +[![logo](https://licensebuttons.net/l/by/4.0/88x31.png)](https://creativecommons.org/licenses/by/4.0/) This project is available under the terms of the [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/) or check [LICENSE.md](https://git-iutinfo.unice.fr/good3nought/echesstria/blob/master/LICENSE.md). \ No newline at end of file From 5f683c18eb1ec23c1340ac6d0a3f5926fde4b959 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Thu, 23 May 2019 10:09:11 +0200 Subject: [PATCH 183/271] fix "(" && ")" --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0417e1f..3c762b7 100755 --- a/README.md +++ b/README.md @@ -55,4 +55,4 @@ Le jeu affichera ensuite de nouveau l'échiquier et vous redemendera de refaire ## License -[![logo](https://licensebuttons.net/l/by/4.0/88x31.png)](https://creativecommons.org/licenses/by/4.0/) This project is available under the terms of the [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/) or check [LICENSE.md](https://git-iutinfo.unice.fr/good3nought/echesstria/blob/master/LICENSE.md). \ No newline at end of file +[![logo](https://licensebuttons.net/l/by/4.0/88x31.png)](https://creativecommons.org/licenses/by/4.0/) This project is available under the terms of the [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/) (or check [LICENSE.md](https://git-iutinfo.unice.fr/good3nought/echesstria/blob/master/LICENSE.md)). \ No newline at end of file From 9e8ba5b2a5ab5c3d3b47c9df6a822263726401e6 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Thu, 23 May 2019 10:35:49 +0200 Subject: [PATCH 184/271] changement orthographe --- README.md | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 3c762b7..944ea3b 100755 --- a/README.md +++ b/README.md @@ -9,8 +9,9 @@ 3. **Installation** 4. **Pièces Echiquier** 5. **Commandes** -6. **Crédits** -7. **License** +6. **Règles des échecs** +7. **Crédits** +8. **License** ## Description @@ -18,7 +19,7 @@ Projet tutoré de jeux d'échec équestrien par le groupe "[Good 3nough Team](ht ## Pré-requis -Pour fonctionner, ce projet necessite d'avoir un [java JDK SE 1.8](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) à jour pour compiler et un [java JRE](https://java.com/fr/download/manual.jsp) à jour lancer le programme. +Pour fonctionner, ce projet necessite d'avoir un [java JDK SE 1.8](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) **à jour** pour compiler et un [java JRE](https://java.com/fr/download/manual.jsp) **à jour** pour éxecuter et lancer le programme. ## Installation @@ -45,13 +46,18 @@ Le jeu vous demandra ensuite de rentrer deux positions sur l'échiquier, la prem Le jeu affichera ensuite de nouveau l'échiquier et vous redemendera de refaire la manipulation précédente. +## Règles du jeu d'échec + + + + ## Crédits -- [ALEXOVITZ Anthony](https://git-iutinfo.unice.fr/aa700867) -- [NOWICKI Johann](https://git-iutinfo.unice.fr/nj715143) -- [RELEVAT Chiara](https://git-iutinfo.unice.fr/rc804998) -- [SRIFI Jose](https://git-iutinfo.unice.fr/sj801446) -- [THEBAULT Manon](https://git-iutinfo.unice.fr/tm802036) +- [ALEXOVITZ Anthony](https://git-iutinfo.unice.fr/aa700867) : Conception et Développement +- [NOWICKI Johann](https://git-iutinfo.unice.fr/nj715143) : Conception et Développement +- [RELEVAT Chiara](https://git-iutinfo.unice.fr/rc804998) : Secrétariat, Conception et Développement +- [SRIFI Jose](https://git-iutinfo.unice.fr/sj801446) : Gestion de projet, Conception et Développement +- [THEBAULT Manon](https://git-iutinfo.unice.fr/tm802036) : Conception et Développement ## License From c7e8a048183a6691918b2623b630815604e03b87 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Thu, 23 May 2019 10:36:24 +0200 Subject: [PATCH 185/271] fix --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 944ea3b..bf2221e 100755 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ ## Description -Projet tutoré de jeux d'échec équestrien par le groupe "[Good 3nough Team](https://git-iutinfo.unice.fr/good3nought)". +Projet tutoré de jeux d'échec ~~sérieux~~ équestrien par le groupe "[Good 3nough Team](https://git-iutinfo.unice.fr/good3nought)". ## Pré-requis From 8eca4c3e55ff245958ec03547a2ecef2bb01f47e Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Thu, 23 May 2019 10:48:05 +0200 Subject: [PATCH 186/271] =?UTF-8?q?ajout=20section=20r=C3=A8gles=20+=20cr?= =?UTF-8?q?=C3=A9dtis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bf2221e..c9167a4 100755 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Projet tutoré de jeux d'échec ~~sérieux~~ équestrien par le groupe "[Good 3n ## Pré-requis -Pour fonctionner, ce projet necessite d'avoir un [java JDK SE 1.8](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) **à jour** pour compiler et un [java JRE](https://java.com/fr/download/manual.jsp) **à jour** pour éxecuter et lancer le programme. +Pour fonctionner, ce projet necessite d'avoir un [java JDK SE 1.8](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) **à jour** pour compiler et un [java JRE](https://java.com/fr/download/manual.jsp) **à jour** pour éxecuter et lancer le programme. Pour pouvoir jouer, il est conseillé de savoir jouer aux échecs. ## Installation @@ -47,9 +47,25 @@ Le jeu vous demandra ensuite de rentrer deux positions sur l'échiquier, la prem Le jeu affichera ensuite de nouveau l'échiquier et vous redemendera de refaire la manipulation précédente. ## Règles du jeu d'échec +> source [http://www.echecs.club/regles/](http://www.echecs.club/regles/) (voir [Crédits](#Crédits)) +### Déroulement du jeu +Au début d’une partie d’échecs, ce sont toujours les blancs qui commencent. Lors d’un tour de jeu, le joueur peut effectuer soit un déplacement, soit une prise soit un coup spécial. +### But du jeu + +Ces différents déplacements sont proposées aux joueurs pour parvenir à réaliser leur objectif qui est de prendre le roi adverse. Lorsque ce but est atteint, le joueur qui y est parvenu gagne immédiatement la partie qui prend fin automatiquement. + +### Échec + +Chaque fois que vous pouvez prendre le roi de votre adversaire à votre prochain coup, vous devez le prévenir en annonçant « échec ». Il doit alors tenter de parer votre échec, lors de son tour de jeu. + +### Échec et mat + +S’il n’y parvient pas, son roi est alors « échec et mat ». Vous remportez donc la partie. + +Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.club/regles/) visitez les [crédits](#Crédits). ## Crédits @@ -57,7 +73,10 @@ Le jeu affichera ensuite de nouveau l'échiquier et vous redemendera de refaire - [NOWICKI Johann](https://git-iutinfo.unice.fr/nj715143) : Conception et Développement - [RELEVAT Chiara](https://git-iutinfo.unice.fr/rc804998) : Secrétariat, Conception et Développement - [SRIFI Jose](https://git-iutinfo.unice.fr/sj801446) : Gestion de projet, Conception et Développement -- [THEBAULT Manon](https://git-iutinfo.unice.fr/tm802036) : Conception et Développement +- [THEBAULT Manon](https://git-iutinfo.unice.fr/tm802036) : Conception et Développement + +- [PRITCHARD Adam](https://github.com/adam-p) : [Utilisation & syntaxe Markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) +- [http://www.echecs.club](http://www.echecs.club) : [Règles](http://www.echecs.club/regles/) du jeu d'échec ## License From 3a00c2ed3f2c7ca6098fba32691c7c2d1b85b5c0 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Thu, 23 May 2019 10:49:55 +0200 Subject: [PATCH 187/271] fix credits --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c9167a4..babfba0 100755 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ Le jeu vous demandra ensuite de rentrer deux positions sur l'échiquier, la prem Le jeu affichera ensuite de nouveau l'échiquier et vous redemendera de refaire la manipulation précédente. ## Règles du jeu d'échec -> source [http://www.echecs.club/regles/](http://www.echecs.club/regles/) (voir [Crédits](#Crédits)) +> source [http://www.echecs.club/regles/](http://www.echecs.club/regles/) (voir crédits) ### Déroulement du jeu @@ -65,7 +65,7 @@ Chaque fois que vous pouvez prendre le roi de votre adversaire à votre prochain S’il n’y parvient pas, son roi est alors « échec et mat ». Vous remportez donc la partie. -Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.club/regles/) visitez les [crédits](#Crédits). +Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.club/regles/) visitez les crédits. ## Crédits @@ -75,7 +75,9 @@ Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.cl - [SRIFI Jose](https://git-iutinfo.unice.fr/sj801446) : Gestion de projet, Conception et Développement - [THEBAULT Manon](https://git-iutinfo.unice.fr/tm802036) : Conception et Développement -- [PRITCHARD Adam](https://github.com/adam-p) : [Utilisation & syntaxe Markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) +**==========** + +- [PRITCHARD Adam](https://github.com/adam-p) : [Utilisation](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) & syntaxe Markdown - [http://www.echecs.club](http://www.echecs.club) : [Règles](http://www.echecs.club/regles/) du jeu d'échec ## License From 79f92de0834433204a50c240afb7fa4c7311df0c Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Thu, 23 May 2019 10:58:42 +0200 Subject: [PATCH 188/271] Change Credit list to credit table --- README.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index babfba0..f675514 100755 --- a/README.md +++ b/README.md @@ -69,16 +69,18 @@ Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.cl ## Crédits -- [ALEXOVITZ Anthony](https://git-iutinfo.unice.fr/aa700867) : Conception et Développement -- [NOWICKI Johann](https://git-iutinfo.unice.fr/nj715143) : Conception et Développement -- [RELEVAT Chiara](https://git-iutinfo.unice.fr/rc804998) : Secrétariat, Conception et Développement -- [SRIFI Jose](https://git-iutinfo.unice.fr/sj801446) : Gestion de projet, Conception et Développement -- [THEBAULT Manon](https://git-iutinfo.unice.fr/tm802036) : Conception et Développement +| Source | Role | +| ---------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------:| +| [ALEXOVITZ Anthony](https://git-iutinfo.unice.fr/aa700867) | Conception et Développement | +| [NOWICKI Johann](https://git-iutinfo.unice.fr/nj715143) | Conception et Développement | +| [RELEVAT Chiara](https://git-iutinfo.unice.fr/rc804998) | Conception et Développement | +| [SRIFI Jose](https://git-iutinfo.unice.fr/sj801446) | Conception et Développement | +| [THEBAULT Manon](https://git-iutinfo.unice.fr/tm802036) | Conception et Développement | +| | | +| [PRITCHARD Adam](https://github.com/adam-p) | [Utilisation](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) & syntaxe Markdown | +| [http://www.echecs.club](http://www.echecs.club) | [Règles](http://www.echecs.club/regles/) du jeu d'échec | +| | | -**==========** - -- [PRITCHARD Adam](https://github.com/adam-p) : [Utilisation](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) & syntaxe Markdown -- [http://www.echecs.club](http://www.echecs.club) : [Règles](http://www.echecs.club/regles/) du jeu d'échec ## License From fdedbb1f8c82d347d1beb4b8c07338192fdb13d1 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Thu, 23 May 2019 11:00:13 +0200 Subject: [PATCH 189/271] fix credit table align --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f675514..f83806b 100755 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.cl ## Crédits | Source | Role | -| ---------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------:| +| :-------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------:| | [ALEXOVITZ Anthony](https://git-iutinfo.unice.fr/aa700867) | Conception et Développement | | [NOWICKI Johann](https://git-iutinfo.unice.fr/nj715143) | Conception et Développement | | [RELEVAT Chiara](https://git-iutinfo.unice.fr/rc804998) | Conception et Développement | From f7b5441efef9127a960aae28e7b646eab4cc5bfb Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Thu, 23 May 2019 11:01:50 +0200 Subject: [PATCH 190/271] fix table --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f83806b..4eefb91 100755 --- a/README.md +++ b/README.md @@ -69,6 +69,7 @@ Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.cl ## Crédits +| :-------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------:| | Source | Role | | :-------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------:| | [ALEXOVITZ Anthony](https://git-iutinfo.unice.fr/aa700867) | Conception et Développement | From 7e2ab72292dbc8dfdcbabba3692d379f45a9daab Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Thu, 23 May 2019 11:02:17 +0200 Subject: [PATCH 191/271] revert commit --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 4eefb91..f83806b 100755 --- a/README.md +++ b/README.md @@ -69,7 +69,6 @@ Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.cl ## Crédits -| :-------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------:| | Source | Role | | :-------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------:| | [ALEXOVITZ Anthony](https://git-iutinfo.unice.fr/aa700867) | Conception et Développement | From 90dbbd3f1452b57169292abe83a76a2bdaad3907 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Thu, 23 May 2019 11:02:56 +0200 Subject: [PATCH 192/271] try 1 cell of 2 cell leghth --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f83806b..c0539a4 100755 --- a/README.md +++ b/README.md @@ -76,10 +76,10 @@ Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.cl | [RELEVAT Chiara](https://git-iutinfo.unice.fr/rc804998) | Conception et Développement | | [SRIFI Jose](https://git-iutinfo.unice.fr/sj801446) | Conception et Développement | | [THEBAULT Manon](https://git-iutinfo.unice.fr/tm802036) | Conception et Développement | -| | | +| | | [PRITCHARD Adam](https://github.com/adam-p) | [Utilisation](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) & syntaxe Markdown | | [http://www.echecs.club](http://www.echecs.club) | [Règles](http://www.echecs.club/regles/) du jeu d'échec | -| | | +| | ## License From 186682a708c12e4695a2aafeed809067118fb95d Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Thu, 23 May 2019 11:08:48 +0200 Subject: [PATCH 193/271] try clickable sumary --- README.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index c0539a4..c7947cf 100755 --- a/README.md +++ b/README.md @@ -4,14 +4,13 @@ ## Sommaire -1. **Description** -2. **Pré-requis** -3. **Installation** -4. **Pièces Echiquier** -5. **Commandes** -6. **Règles des échecs** -7. **Crédits** -8. **License** +1. **[Description](https://git-iutinfo.unice.fr/good3nought/echesstria#description)** +2. **[Pré-requis](https://git-iutinfo.unice.fr/good3nought/echesstria#pr%C3%A9-requis)** +3. **[Installation](https://git-iutinfo.unice.fr/good3nought/echesstria#installation)** +4. **[Commandes](https://git-iutinfo.unice.fr/good3nought/echesstria#commandes)** +6. **[Règles des échecs](https://git-iutinfo.unice.fr/good3nought/echesstria#r%C3%A8gles-du-jeu-d%C3%A9chec)** +7. **[Crédits](https://git-iutinfo.unice.fr/good3nought/echesstria#cr%C3%A9dits)** +8. **[License](https://git-iutinfo.unice.fr/good3nought/echesstria#license)** ## Description @@ -69,7 +68,7 @@ Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.cl ## Crédits -| Source | Role | +| Peronne ou Source | Role | | :-------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------:| | [ALEXOVITZ Anthony](https://git-iutinfo.unice.fr/aa700867) | Conception et Développement | | [NOWICKI Johann](https://git-iutinfo.unice.fr/nj715143) | Conception et Développement | From 2d51f7655d31c606efe6eda7ac37739d24febe6c Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Thu, 23 May 2019 11:10:30 +0200 Subject: [PATCH 194/271] add "back to top" button --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index c7947cf..910870b 100755 --- a/README.md +++ b/README.md @@ -12,20 +12,20 @@ 7. **[Crédits](https://git-iutinfo.unice.fr/good3nought/echesstria#cr%C3%A9dits)** 8. **[License](https://git-iutinfo.unice.fr/good3nought/echesstria#license)** -## Description +## Description [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#license) Projet tutoré de jeux d'échec ~~sérieux~~ équestrien par le groupe "[Good 3nough Team](https://git-iutinfo.unice.fr/good3nought)". -## Pré-requis +## Pré-requis [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#license) Pour fonctionner, ce projet necessite d'avoir un [java JDK SE 1.8](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) **à jour** pour compiler et un [java JRE](https://java.com/fr/download/manual.jsp) **à jour** pour éxecuter et lancer le programme. Pour pouvoir jouer, il est conseillé de savoir jouer aux échecs. -## Installation +## Installation [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#license) Pour installer le projet, vous pouvez lancer le fichier [echesstria.jar](#) ou bien compiler le projet en créant un nouveau projet sous Eclipse ou Intellij. -## Commandes +## Commandes [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#license) Pour pouvoir jouer, vous devez dans un premier temps rentrer deux noms de joueurs, si ces derniers sont vides, le jeu ne se lancera pas. @@ -45,7 +45,7 @@ Le jeu vous demandra ensuite de rentrer deux positions sur l'échiquier, la prem Le jeu affichera ensuite de nouveau l'échiquier et vous redemendera de refaire la manipulation précédente. -## Règles du jeu d'échec +## Règles du jeu d'échec [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#license) > source [http://www.echecs.club/regles/](http://www.echecs.club/regles/) (voir crédits) ### Déroulement du jeu @@ -66,7 +66,7 @@ S’il n’y parvient pas, son roi est alors « échec et mat ». Vous remportez Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.club/regles/) visitez les crédits. -## Crédits +## Crédits [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#license) | Peronne ou Source | Role | | :-------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------:| @@ -81,6 +81,6 @@ Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.cl | | -## License +## License [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#license) [![logo](https://licensebuttons.net/l/by/4.0/88x31.png)](https://creativecommons.org/licenses/by/4.0/) This project is available under the terms of the [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/) (or check [LICENSE.md](https://git-iutinfo.unice.fr/good3nought/echesstria/blob/master/LICENSE.md)). \ No newline at end of file From 40b5ba620ac1bef66e54a2a3502bcb4f1d4833b5 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Thu, 23 May 2019 11:11:44 +0200 Subject: [PATCH 195/271] fix summary links --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 910870b..87a1dce 100755 --- a/README.md +++ b/README.md @@ -4,13 +4,13 @@ ## Sommaire -1. **[Description](https://git-iutinfo.unice.fr/good3nought/echesstria#description)** -2. **[Pré-requis](https://git-iutinfo.unice.fr/good3nought/echesstria#pr%C3%A9-requis)** -3. **[Installation](https://git-iutinfo.unice.fr/good3nought/echesstria#installation)** -4. **[Commandes](https://git-iutinfo.unice.fr/good3nought/echesstria#commandes)** -6. **[Règles des échecs](https://git-iutinfo.unice.fr/good3nought/echesstria#r%C3%A8gles-du-jeu-d%C3%A9chec)** -7. **[Crédits](https://git-iutinfo.unice.fr/good3nought/echesstria#cr%C3%A9dits)** -8. **[License](https://git-iutinfo.unice.fr/good3nought/echesstria#license)** +1. **[Description](https://git-iutinfo.unice.fr/good3nought/echesstria#description-revenir-au-sommaire)** +2. **[Pré-requis](https://git-iutinfo.unice.fr/good3nought/echesstria#pr%C3%A9-requis-revenir-au-sommaire)** +3. **[Installation](https://git-iutinfo.unice.fr/good3nought/echesstria#installation-revenir-au-sommaire)** +4. **[Commandes](https://git-iutinfo.unice.fr/good3nought/echesstria#commandes-revenir-au-sommaire)** +6. **[Règles des échecs](https://git-iutinfo.unice.fr/good3nought/echesstria#r%C3%A8gles-du-jeu-d%C3%A9chec-revenir-au-sommaire)** +7. **[Crédits](https://git-iutinfo.unice.fr/good3nought/echesstria#cr%C3%A9dits-revenir-au-sommaire)** +8. **[License](https://git-iutinfo.unice.fr/good3nought/echesstria#license-revenir-au-sommaire)** ## Description [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#license) From d4a7ac3ceb9acfb2ecbbdf0cc3633a7e23278489 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Thu, 23 May 2019 11:12:51 +0200 Subject: [PATCH 196/271] fix back to top --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 87a1dce..92e593b 100755 --- a/README.md +++ b/README.md @@ -12,20 +12,20 @@ 7. **[Crédits](https://git-iutinfo.unice.fr/good3nought/echesstria#cr%C3%A9dits-revenir-au-sommaire)** 8. **[License](https://git-iutinfo.unice.fr/good3nought/echesstria#license-revenir-au-sommaire)** -## Description [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#license) +## Description [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#sommaire) Projet tutoré de jeux d'échec ~~sérieux~~ équestrien par le groupe "[Good 3nough Team](https://git-iutinfo.unice.fr/good3nought)". -## Pré-requis [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#license) +## Pré-requis [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#sommaire) Pour fonctionner, ce projet necessite d'avoir un [java JDK SE 1.8](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) **à jour** pour compiler et un [java JRE](https://java.com/fr/download/manual.jsp) **à jour** pour éxecuter et lancer le programme. Pour pouvoir jouer, il est conseillé de savoir jouer aux échecs. -## Installation [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#license) +## Installation [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#sommaire) Pour installer le projet, vous pouvez lancer le fichier [echesstria.jar](#) ou bien compiler le projet en créant un nouveau projet sous Eclipse ou Intellij. -## Commandes [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#license) +## Commandes [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#sommaire) Pour pouvoir jouer, vous devez dans un premier temps rentrer deux noms de joueurs, si ces derniers sont vides, le jeu ne se lancera pas. @@ -45,7 +45,7 @@ Le jeu vous demandra ensuite de rentrer deux positions sur l'échiquier, la prem Le jeu affichera ensuite de nouveau l'échiquier et vous redemendera de refaire la manipulation précédente. -## Règles du jeu d'échec [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#license) +## Règles du jeu d'échec [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#sommaire) > source [http://www.echecs.club/regles/](http://www.echecs.club/regles/) (voir crédits) ### Déroulement du jeu @@ -66,7 +66,7 @@ S’il n’y parvient pas, son roi est alors « échec et mat ». Vous remportez Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.club/regles/) visitez les crédits. -## Crédits [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#license) +## Crédits [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#sommaire) | Peronne ou Source | Role | | :-------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------:| @@ -81,6 +81,6 @@ Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.cl | | -## License [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#license) +## License [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#sommaire) [![logo](https://licensebuttons.net/l/by/4.0/88x31.png)](https://creativecommons.org/licenses/by/4.0/) This project is available under the terms of the [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/) (or check [LICENSE.md](https://git-iutinfo.unice.fr/good3nought/echesstria/blob/master/LICENSE.md)). \ No newline at end of file From 74235c4eaf27c86df37b41e1904515f9123a520c Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Thu, 23 May 2019 11:15:12 +0200 Subject: [PATCH 197/271] fix relinks --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 92e593b..58008a2 100755 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ Le jeu vous demandra ensuite de rentrer deux positions sur l'échiquier, la prem Le jeu affichera ensuite de nouveau l'échiquier et vous redemendera de refaire la manipulation précédente. ## Règles du jeu d'échec [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#sommaire) -> source [http://www.echecs.club/regles/](http://www.echecs.club/regles/) (voir crédits) +> source [http://www.echecs.club/regles/](http://www.echecs.club/regles/) (voir [crédits](https://git-iutinfo.unice.fr/good3nought/echesstria#cr%C3%A9dits-revenir-au-sommaire)) ### Déroulement du jeu @@ -64,7 +64,7 @@ Chaque fois que vous pouvez prendre le roi de votre adversaire à votre prochain S’il n’y parvient pas, son roi est alors « échec et mat ». Vous remportez donc la partie. -Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.club/regles/) visitez les crédits. +Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.club/regles/) visitez les [crédits](https://git-iutinfo.unice.fr/good3nought/echesstria#cr%C3%A9dits-revenir-au-sommaire). ## Crédits [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#sommaire) From 240c25105efbc6da146ab9dd38e9dcc0a500a565 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Thu, 23 May 2019 11:18:23 +0200 Subject: [PATCH 198/271] add links to get eclispe && intellij --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 58008a2..1812a06 100755 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Pour fonctionner, ce projet necessite d'avoir un [java JDK SE 1.8](https://www.o ## Installation [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#sommaire) -Pour installer le projet, vous pouvez lancer le fichier [echesstria.jar](#) ou bien compiler le projet en créant un nouveau projet sous Eclipse ou Intellij. +Pour installer le projet, vous pouvez lancer le fichier [echesstria.jar](#) ou bien compiler le projet en créant un nouveau projet sous [Eclipse](https://www.eclipse.org/downloads/) ou [Intellij](https://www.jetbrains.com/idea/download/#section=windows). ## Commandes [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#sommaire) From 36b23546317e6e4f739bfcd68e1917502d705e14 Mon Sep 17 00:00:00 2001 From: sj801446 Date: Thu, 23 May 2019 11:21:13 +0200 Subject: [PATCH 199/271] Delete X.java (useless, it was for the git learning TD) --- X.java | 37 ------------------------------------- 1 file changed, 37 deletions(-) delete mode 100644 X.java diff --git a/X.java b/X.java deleted file mode 100644 index f79506f..0000000 --- a/X.java +++ /dev/null @@ -1,37 +0,0 @@ -public class X { - private String nom; - private String prenom; - - - public X() { - this.nom = null; - this.preom = null; - } - - public X(String s1, String s2) { - this.nom = s1; - this.prenom = s2; - } - - public getNom() { - return this.nom; - } - - public getPrenom() { - return this.prenom; - } - - public setNom(String s) { - this.nom = s; - } - - public setPrenom(Sting s) { - this.prenom = s; - } - - @Override - public String toString() { - return "La personne s'appelle " + this.prenom + " " + this.nom; - } - -} From d5874c89082b5c6344e4f06920cfec60dabf7af6 Mon Sep 17 00:00:00 2001 From: Chiara Date: Thu, 23 May 2019 11:36:18 +0200 Subject: [PATCH 200/271] teste deplacement fini --- tests/testPiece.java | 119 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 101 insertions(+), 18 deletions(-) diff --git a/tests/testPiece.java b/tests/testPiece.java index 5fdad88..385deed 100644 --- a/tests/testPiece.java +++ b/tests/testPiece.java @@ -15,7 +15,7 @@ class testPiece { public void initialisation() { e = new Echiquier(); jb = new Joueur("Joueur Blanc","Blanc"); - jn = new Joueur("JOueur Noir", "Noir"); + jn = new Joueur("Joueur Noir", "Noir"); System.out.println(); System.out.println("nouveau test : "); @@ -111,28 +111,111 @@ class testPiece { assertEquals(7, e.getFouB1().getPosition().getY()); } - /*@Test + @Test void testCavalier() { - e.verificationMouvement(j, "B1", "C3"); //d?palcement haut / droit + saut par dessus autre pi?ce - assertEquals(5, e.getCavalierB1().getPosition().getX()); - assertEquals(2, e.getCavalierB1().getPosition().getY()); + e.verificationMouvement(jb, "B1", "C3"); //d?palcement haut / droit + saut par dessus autre pi?ce + assertEquals(3, e.getCavalierB1().getPosition().getX()); + assertEquals(3, e.getCavalierB1().getPosition().getY()); - e.verificationMouvement(j, "C3", "B1"); //deplacement bas / gauche + saut - assertEquals(7, e.getCavalierB1().getPosition().getX()); + e.verificationMouvement(jb, "C3", "B1"); //deplacement bas / gauche + saut + assertEquals(2, e.getCavalierB1().getPosition().getX()); assertEquals(1, e.getCavalierB1().getPosition().getY()); - e.verificationMouvement(j, "B1", "A3"); //deplacement haut / gauche + saut - assertEquals(5, e.getCavalierB1().getPosition().getX()); - assertEquals(0, e.getCavalierB1().getPosition().getY()); + e.verificationMouvement(jb, "B1", "A3"); //deplacement haut / gauche + saut + assertEquals(1, e.getCavalierB1().getPosition().getX()); + assertEquals(3, e.getCavalierB1().getPosition().getY()); - e.verificationMouvement(j, "A3", "B5"); - e.verificationMouvement(j, "B5", "C3"); //deplacement bas / droite - assertEquals(5, e.getCavalierB1().getPosition().getX()); - assertEquals(2, e.getCavalierB1().getPosition().getY()); + e.verificationMouvement(jb, "A3", "B5"); + e.verificationMouvement(jb, "B5", "C3"); //deplacement bas / droite + assertEquals(3, e.getCavalierB1().getPosition().getX()); + assertEquals(3, e.getCavalierB1().getPosition().getY()); - e.verificationMouvement(j, "C3", "D5"); - e.verificationMouvement(j, "D5", "E7"); - assertFalse(e.getPionN5().isEnVie()); + e.verificationMouvement(jb, "C3", "D5"); + e.verificationMouvement(jb, "D5", "E7"); + assertEquals(5, e.getCavalierB1().getPosition().getX()); + assertEquals(7, e.getCavalierB1().getPosition().getY()); + } + + @Test + void testReine () { + e.verificationMouvement(jb, "d2", "d3"); + e.verificationMouvement(jb, "d1", "d2");//haut + assertEquals(4, e.getReineB1().getPosition().getX()); + assertEquals(2, e.getReineB1().getPosition().getY()); + + e.verificationMouvement(jb, "d2", "f4");//haut droite + assertEquals(6, e.getReineB1().getPosition().getX()); + assertEquals(4, e.getReineB1().getPosition().getY()); + + e.verificationMouvement(jb, "f4", "d6");//haut gauche + assertEquals(4, e.getReineB1().getPosition().getX()); + assertEquals(6, e.getReineB1().getPosition().getY()); + + e.verificationMouvement(jb, "d6", "c5");//bas gauche + assertEquals(3, e.getReineB1().getPosition().getX()); + assertEquals(5, e.getReineB1().getPosition().getY()); + + e.verificationMouvement(jb, "c5", "b5");//gauche + assertEquals(2, e.getReineB1().getPosition().getX()); + assertEquals(5, e.getReineB1().getPosition().getY()); + + e.verificationMouvement(jb, "b5", "c6");//haut droite + assertEquals(3, e.getReineB1().getPosition().getX()); + assertEquals(6, e.getReineB1().getPosition().getY()); + + e.verificationMouvement(jb, "c6", "c4");//bas + assertEquals(3, e.getReineB1().getPosition().getX()); + assertEquals(4, e.getReineB1().getPosition().getY()); + + e.verificationMouvement(jb, "c4", "d4");//droite + assertEquals(4, e.getReineB1().getPosition().getX()); + assertEquals(4, e.getReineB1().getPosition().getY()); + + e.verificationMouvement(jb, "d4", "d7");//mangeage + assertEquals(4, e.getReineB1().getPosition().getX()); + assertEquals(7, e.getReineB1().getPosition().getY()); + } + + @Test + void testRoi () { + e.verificationMouvement(jb, "d2", "d3"); + e.verificationMouvement(jb, "d1", "d2");//haut + assertEquals(4, e.getReineB1().getPosition().getX()); + assertEquals(2, e.getReineB1().getPosition().getY()); + + e.verificationMouvement(jb, "d2", "e3");//haut droite + assertEquals(5, e.getReineB1().getPosition().getX()); + assertEquals(3, e.getReineB1().getPosition().getY()); + + e.verificationMouvement(jb, "e3", "d4");//haut gauche + assertEquals(4, e.getReineB1().getPosition().getX()); + assertEquals(4, e.getReineB1().getPosition().getY()); + + e.verificationMouvement(jb, "d4", "c3");//bas gauche + assertEquals(3, e.getReineB1().getPosition().getX()); + assertEquals(3, e.getReineB1().getPosition().getY()); + + e.verificationMouvement(jb, "c3", "b3");//gauche + assertEquals(2, e.getReineB1().getPosition().getX()); + assertEquals(3, e.getReineB1().getPosition().getY()); + + e.verificationMouvement(jb, "b3", "c4");//haut droite + assertEquals(3, e.getReineB1().getPosition().getX()); + assertEquals(4, e.getReineB1().getPosition().getY()); + + e.verificationMouvement(jb, "c4", "c3");//bas + assertEquals(3, e.getReineB1().getPosition().getX()); + assertEquals(3, e.getReineB1().getPosition().getY()); + + e.verificationMouvement(jb, "c3", "b3"); + e.verificationMouvement(jb, "b3", "c3");//droite + assertEquals(3, e.getReineB1().getPosition().getX()); + assertEquals(3, e.getReineB1().getPosition().getY()); + + e.verificationMouvement(jn, "c7","c5"); + e.verificationMouvement(jn, "c5", "c4"); + e.verificationMouvement(jb, "c3", "c4");//mangeage + assertEquals(3, e.getReineB1().getPosition().getX()); + assertEquals(4, e.getReineB1().getPosition().getY()); } -*/ } \ No newline at end of file From 8625f60115bc369e74cef63feeaa1dca32a60719 Mon Sep 17 00:00:00 2001 From: Chiara Date: Thu, 23 May 2019 11:38:00 +0200 Subject: [PATCH 201/271] rectification messages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit le message "mangé pion" appariasait a chuque fois je l'ai enlevé dans tout les cas je le rajouterai que dans la bonne situation plus tard --- src/piecesEchiquier/Cavalier.java | 7 ------- src/piecesEchiquier/Fou.java | 15 ++++----------- 2 files changed, 4 insertions(+), 18 deletions(-) diff --git a/src/piecesEchiquier/Cavalier.java b/src/piecesEchiquier/Cavalier.java index 6b5a9be..ecdfeeb 100755 --- a/src/piecesEchiquier/Cavalier.java +++ b/src/piecesEchiquier/Cavalier.java @@ -14,7 +14,6 @@ public class Cavalier extends Piece { { if(p.getCouleur()!=this.getCouleur()) { - System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -23,7 +22,6 @@ public class Cavalier extends Piece { { if(p.getCouleur()!=this.getCouleur()) { - System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -32,7 +30,6 @@ public class Cavalier extends Piece { { if(p.getCouleur()!=this.getCouleur()) { - System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -49,7 +46,6 @@ public class Cavalier extends Piece { { if(p.getCouleur()!=this.getCouleur()) { - System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -58,7 +54,6 @@ public class Cavalier extends Piece { { if(p.getCouleur()!=this.getCouleur()) { - System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -67,7 +62,6 @@ public class Cavalier extends Piece { { if(p.getCouleur()!=this.getCouleur()) { - System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -76,7 +70,6 @@ public class Cavalier extends Piece { { if(p.getCouleur()!=this.getCouleur()) { - System.out.println("Vous avez mangé une pièce !"); return true; } } diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java index 2db1859..0dea83c 100755 --- a/src/piecesEchiquier/Fou.java +++ b/src/piecesEchiquier/Fou.java @@ -15,7 +15,7 @@ public class Fou extends Piece { if ( p.getPosition().getX() == this.getPosition().getX()+i) // 2eme coors a droite de la 1 ere { - + //DEPLACEMENT HAUT DROITE if (p.getPosition().getY() == this.getPosition().getY()+i ) // on teste si quand on avance de x vers la droite on monte aussi de x { for (int j = 1;this.getPosition().getX()+j <= p.getPosition().getX()-1;j++) // on verifie que le chemin est libre @@ -26,11 +26,10 @@ public class Fou extends Piece { return false; } } - System.out.println("Vous avez mangé une pièce !"); return true; } - + //DEPLACEMENT BAS DROITE else if (p.getPosition().getY() == this.getPosition().getY()-i) // on teste si quand on avance de x vers la droite on descend aussi de x { for (int j = 1;this.getPosition().getX()+j <= p.getPosition().getX()-1;j++) // on verifie que le chemin est libre @@ -41,7 +40,6 @@ public class Fou extends Piece { return false; } } - System.out.println("Vous avez mangé une pièce !"); return true; } @@ -52,7 +50,7 @@ public class Fou extends Piece { else if ( p.getPosition().getX() == this.getPosition().getX()-i) // 2eme coors a gauche de la 1 ere { - + //DEPLACEMENT HAUT GAUCHE if (p.getPosition().getY() == this.getPosition().getY()+i ) // on teste si quand on va en x vers la gauche on monte aussi de x { for (int j = 1;this.getPosition().getX()-j >= p.getPosition().getX()+1;j++) // on verifie que le chemin est libre @@ -63,11 +61,10 @@ public class Fou extends Piece { return false; } } - System.out.println("Vous avez mangé une pièce !"); return true; } - + //DEPLACEMENT BAS DROITE else if (p.getPosition().getY() == this.getPosition().getY()-i) // on teste si quand on va de x vers la droite on descend aussi de x { for (int j = 1;this.getPosition().getX()-j >= p.getPosition().getX()+1;j++) // on verifie que le chemin est libre @@ -78,12 +75,8 @@ public class Fou extends Piece { return false; } } - System.out.println("Vous avez mangé une pièce !"); return true; } - - - System.out.println("Vous avez mangé une pièce !"); return true; } } From 935276e40bcfb770c37a5211b70046eb87845aef Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Thu, 23 May 2019 11:45:25 +0200 Subject: [PATCH 202/271] change regles references --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1812a06..89c41a8 100755 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Projet tutoré de jeux d'échec ~~sérieux~~ équestrien par le groupe "[Good 3n ## Pré-requis [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#sommaire) -Pour fonctionner, ce projet necessite d'avoir un [java JDK SE 1.8](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) **à jour** pour compiler et un [java JRE](https://java.com/fr/download/manual.jsp) **à jour** pour éxecuter et lancer le programme. Pour pouvoir jouer, il est conseillé de savoir jouer aux échecs. +Pour fonctionner, ce projet necessite d'avoir un [java JDK SE 1.8](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) **à jour** pour compiler et un [java JRE](https://java.com/fr/download/manual.jsp) **à jour** pour éxecuter et lancer le programme. Si vous ne savez pas jouer aux échecs, vous pouvez consulter les [règles des échecs](https://git-iutinfo.unice.fr/good3nought/echesstria#r%C3%A8gles-du-jeu-d%C3%A9chec-revenir-au-sommaire). ## Installation [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#sommaire) @@ -64,7 +64,7 @@ Chaque fois que vous pouvez prendre le roi de votre adversaire à votre prochain S’il n’y parvient pas, son roi est alors « échec et mat ». Vous remportez donc la partie. -Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.club/regles/) visitez les [crédits](https://git-iutinfo.unice.fr/good3nought/echesstria#cr%C3%A9dits-revenir-au-sommaire). +Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.club/regles/) ou visitez les [crédits](https://git-iutinfo.unice.fr/good3nought/echesstria#cr%C3%A9dits-revenir-au-sommaire). ## Crédits [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#sommaire) From fd64233e731d3267879971be39310ed32c5ea5a1 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Thu, 23 May 2019 11:47:08 +0200 Subject: [PATCH 203/271] add space between echiquier and active player message --- src/visuel/main.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/visuel/main.java b/src/visuel/main.java index f7be6b4..534a093 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -95,7 +95,7 @@ public class main { /*JOUEUR1*/ - System.out.println("Tour de " + j1.getNom() + "\n"); + System.out.println("\n" + "Tour de " + j1.getNom() + "\n"); do { System.out.println( From 1f741736e1755fd8a658a55bb60d12dc7e9bd48c Mon Sep 17 00:00:00 2001 From: Chiara Date: Thu, 23 May 2019 12:26:28 +0200 Subject: [PATCH 204/271] tests des fonctions pas deplacement --- tests/testGeneraux.java | 55 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 tests/testGeneraux.java diff --git a/tests/testGeneraux.java b/tests/testGeneraux.java new file mode 100644 index 0000000..04776d7 --- /dev/null +++ b/tests/testGeneraux.java @@ -0,0 +1,55 @@ +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import piecesEchiquier.*; + +class testGeneraux { + private Echiquier e; + + @BeforeEach + public void initialisation() { + e = new Echiquier(); + } + + @Test + void testEchiquier() { + //toString + assertEquals("8 TN CN FN QN KN FN CN TN \n" + + "7 PN PN PN PN PN PN PN PN \n" + + "6 .. .. .. .. .. .. .. .. \n" + + "5 .. .. .. .. .. .. .. .. \n" + + "4 .. .. .. .. .. .. .. .. \n" + + "3 .. .. .. .. .. .. .. .. \n" + + "2 PB PB PB PB PB PB PB PB \n" + + "1 TB CB FB QB KB FB CB TB \n" + + " A B C D E F G H", e.toString()); + + //verificationMouvement fait dans test piece + + //estVide + /*Position p = new Position(3, 6); + assertTrue(e.estVide(p));*/ + for (int i = 3; i < 6; i++) { + for (int j = 1; i < 9; i++) { + Position p = new Position(j, i); + assertTrue(e.estVide(p)); + } + } + + for (int i = 0; i < 3; i++) { + for (int j = 1; i < 9; i++) { + Position p = new Position(j, i); + assertFalse(e.estVide(p)); + } + } + for (int i = 7; i < 9; i++) { + for (int j = 1; i < 9; i++) { + Position p = new Position(j, i); + assertFalse(e.estVide(p)); + } + } + } + +} From 2ef8e6f5e4dd83470056fa29ee04ba3d2eb8e5cb Mon Sep 17 00:00:00 2001 From: Chiara Date: Thu, 23 May 2019 12:26:43 +0200 Subject: [PATCH 205/271] ajout de commentaires --- src/piecesEchiquier/Echiquier.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 86fb91d..9f527fb 100644 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -185,7 +185,7 @@ public class Echiquier { } - public boolean estVide(Position position) { + public boolean estVide(Position position) { //Voir si la piece dans la position indiqué est vide int x = position.getX(); int y = position.getY(); From aa5cb78cb9f55d22d8f6be178d3000fd31c0b336 Mon Sep 17 00:00:00 2001 From: Chiara Date: Thu, 23 May 2019 13:25:30 +0200 Subject: [PATCH 206/271] finitions testes --- tests/testGeneraux.java | 31 +++++++++++++++++++++---------- tests/testPiece.java | 4 ---- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/tests/testGeneraux.java b/tests/testGeneraux.java index 04776d7..ce44b18 100644 --- a/tests/testGeneraux.java +++ b/tests/testGeneraux.java @@ -3,14 +3,17 @@ import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import joueurs.Joueur; import piecesEchiquier.*; class testGeneraux { private Echiquier e; + private Joueur jb; @BeforeEach public void initialisation() { e = new Echiquier(); + jb = new Joueur("Joueur Blanc","Blanc"); } @Test @@ -31,25 +34,33 @@ class testGeneraux { //estVide /*Position p = new Position(3, 6); assertTrue(e.estVide(p));*/ - for (int i = 3; i < 6; i++) { - for (int j = 1; i < 9; i++) { - Position p = new Position(j, i); + for (int x = 1; x < 9; x++) { + for (int y = 3; y < 7; y++) { + Position p = new Position(x, y); assertTrue(e.estVide(p)); } } - for (int i = 0; i < 3; i++) { - for (int j = 1; i < 9; i++) { - Position p = new Position(j, i); + for (int x = 1; x < 9; x++) { + for (int y = 1; y < 3; y++) { + Position p = new Position(x, y); assertFalse(e.estVide(p)); } } - for (int i = 7; i < 9; i++) { - for (int j = 1; i < 9; i++) { - Position p = new Position(j, i); + for (int x = 1; x < 9; x++) { + for (int y = 7; y < 9; y++) { + Position p = new Position(x, y); assertFalse(e.estVide(p)); } } } - + + @Test + public void testePiece () { + //aBouge + e.verificationMouvement(jb, "C2", "c3"); + assertTrue(e.getPionB3().aBouge()); + + assertFalse(e.getCavalierB1().aBouge()); + } } diff --git a/tests/testPiece.java b/tests/testPiece.java index 385deed..bdfa56d 100644 --- a/tests/testPiece.java +++ b/tests/testPiece.java @@ -16,10 +16,6 @@ class testPiece { e = new Echiquier(); jb = new Joueur("Joueur Blanc","Blanc"); jn = new Joueur("Joueur Noir", "Noir"); - - System.out.println(); - System.out.println("nouveau test : "); - System.out.println(); } @AfterEach From 6fb6c1394bc87029495bd632975e988f7453d2fe Mon Sep 17 00:00:00 2001 From: Chiara Date: Thu, 23 May 2019 13:33:07 +0200 Subject: [PATCH 207/271] =?UTF-8?q?Rectification=20des=20messages=20"vous?= =?UTF-8?q?=20avez=20mang=C3=A9=20une=20piece"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ils apparaissaient pas au bon moment --- src/piecesEchiquier/Cavalier.java | 3 +++ src/piecesEchiquier/Fou.java | 3 +++ src/piecesEchiquier/Reine.java | 10 ++-------- src/piecesEchiquier/Roi.java | 11 +++-------- src/piecesEchiquier/Tour.java | 3 +++ 5 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/piecesEchiquier/Cavalier.java b/src/piecesEchiquier/Cavalier.java index ecdfeeb..fc138b1 100755 --- a/src/piecesEchiquier/Cavalier.java +++ b/src/piecesEchiquier/Cavalier.java @@ -9,6 +9,9 @@ public class Cavalier extends Piece { public boolean deplacable(Echiquier e, Piece p) // vérifie que le Cavalier peut être déplacé { + if (e.estVide(p.getPosition()) == false) //si on mange une piece + System.out.println("Vous avez mangé une pièce !"); + //Côté droit if((p.getPosition().getX()) == (this.getPosition().getX()+1) && (p.getPosition().getY()) == (this.getPosition().getY()+2)) //Verifie deplacement y+2 vers le haut et x+1 vers la droite { diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java index 0dea83c..7ea8c65 100755 --- a/src/piecesEchiquier/Fou.java +++ b/src/piecesEchiquier/Fou.java @@ -9,6 +9,9 @@ public class Fou extends Piece { public boolean deplacable(Echiquier e,Piece p) { + if (e.estVide(p.getPosition()) == false) //si on mange une piece + System.out.println("Vous avez mangé une pièce !"); + for (int i = 1; i < 8; i++) // ON CHERCHE SI LA 2EME COORS EST EN DIAGONALE DE LA 1 ERE { diff --git a/src/piecesEchiquier/Reine.java b/src/piecesEchiquier/Reine.java index 192d708..a0c1d28 100755 --- a/src/piecesEchiquier/Reine.java +++ b/src/piecesEchiquier/Reine.java @@ -9,6 +9,8 @@ public class Reine extends Piece { public boolean deplacable(Echiquier e,Piece p) { + if (e.estVide(p.getPosition()) == false) //si on mange une piece + System.out.println("Vous avez mangé une pièce !"); if(p.getPosition().getX() == this.getPosition().getX()) // verification les 2 pieces sont sur la meme colonne { @@ -24,7 +26,6 @@ public class Reine extends Piece { return false; } } - System.out.println("Vous avez mangé une pièce !"); return true; } @@ -38,7 +39,6 @@ public class Reine extends Piece { return false; } } - System.out.println("Vous avez mangé une pièce !"); return true; } return false; @@ -56,7 +56,6 @@ public class Reine extends Piece { return false; } } - System.out.println("Vous avez mangé une pièce !"); return true; } @@ -69,7 +68,6 @@ public class Reine extends Piece { return false; } } - System.out.println("Vous avez mangé une pièce !"); return true; } return false; @@ -92,7 +90,6 @@ public class Reine extends Piece { return false; } } - System.out.println("Vous avez mangé une pièce !"); return true; } @@ -107,7 +104,6 @@ public class Reine extends Piece { return false; } } - System.out.println("Vous avez mangé une pièce !"); return true; } @@ -128,7 +124,6 @@ public class Reine extends Piece { return false; } } - System.out.println("Vous avez mangé une pièce !"); return true; } @@ -143,7 +138,6 @@ public class Reine extends Piece { return false; } } - System.out.println("Vous avez mangé une pièce !"); return true; } diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index d3394b4..6e599c7 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -37,12 +37,14 @@ public class Roi extends Piece { public boolean deplacable(Echiquier e, Piece p) // vérifie que le roi peut être déplacé { + if (e.estVide(p.getPosition()) == false) //si on mange une piece + System.out.println("Vous avez mangé une pièce !"); + //Côté droit if((p.getPosition().getX()) == (this.getPosition().getX()+1) && (p.getPosition().getY()) == (this.getPosition().getY()+1)) //Verifie deplacement y+1 vers le haut et x+1 vers la droite { if(p.getCouleur()!=this.getCouleur()) { - System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -51,7 +53,6 @@ public class Roi extends Piece { { if(p.getCouleur()!=this.getCouleur()) { - System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -60,7 +61,6 @@ public class Roi extends Piece { { if(p.getCouleur()!=this.getCouleur()) { - System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -69,7 +69,6 @@ public class Roi extends Piece { { if(p.getCouleur()!=this.getCouleur()) { - System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -78,7 +77,6 @@ public class Roi extends Piece { { if(p.getCouleur()!=this.getCouleur()) { - System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -87,7 +85,6 @@ public class Roi extends Piece { { if(p.getCouleur()!=this.getCouleur()) { - System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -96,7 +93,6 @@ public class Roi extends Piece { { if(p.getCouleur()!=this.getCouleur()) { - System.out.println("Vous avez mangé une pièce !"); return true; } } @@ -105,7 +101,6 @@ public class Roi extends Piece { { if(p.getCouleur()!=this.getCouleur()) { - System.out.println("Vous avez mangé une pièce !"); return true; } } diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java index 63021a2..1c4164b 100755 --- a/src/piecesEchiquier/Tour.java +++ b/src/piecesEchiquier/Tour.java @@ -9,6 +9,9 @@ public class Tour extends Piece { public boolean deplacable(Echiquier e,Piece p) { + if (e.estVide(p.getPosition()) == false) //si on mange une piece + System.out.println("Vous avez mangé une pièce !"); + if(p.getPosition().getX() == this.getPosition().getX()) // verification les 2 pieces sont sur la meme colonne { if (p.getPosition().getY() > this.getPosition().getY()) // Test si la 2 eme piece est au dessus de la 1ere From 9c2b05d728e7dc8cd35108c32ae1bb799e170649 Mon Sep 17 00:00:00 2001 From: Chiara Date: Thu, 23 May 2019 13:58:29 +0200 Subject: [PATCH 208/271] ajout de commentaires --- src/piecesEchiquier/Echiquier.java | 50 ++++++++++++++++-------------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 9f527fb..66df014 100644 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -4,6 +4,7 @@ import joueurs.Joueur; public class Echiquier { + //ATTRIBUTS private String[][] codes = { {"A8","B8","C8","D8","E8","F8","G8","H8"}, @@ -68,21 +69,14 @@ public class Echiquier { {TourB1,CavalierB1,FouB1,ReineB1,RoiB1,FouB2,CavalierB2,TourB2} }; - + //CONSTRUCTEURS public Echiquier() { } - public Piece[][] getEchiquier() { - return echiquier; - } - - - public String[][] getCodes() { - return codes; - } + @@ -93,10 +87,10 @@ public class Echiquier { char alphabet[]= {'A','B','C','D','E','F','G','H'}; String echec = ""; int compteur=8; - for (int i = 0; i < 8;i++) + for (int i = 0; i < 8;i++) //pour chaque ligne { - echec+= compteur + " "; - for (int j = 0; j < 8;j++) + echec+= compteur + " "; //afichage num ligne + for (int j = 0; j < 8;j++) //pour chaque colonne { echec +=echiquier[i][j].getNom(); echec += " "; @@ -106,7 +100,7 @@ public class Echiquier { } for (int i=0; i<8;i++) { - echec+= " " + alphabet[i]; + echec+= " " + alphabet[i]; //affichage des lettres } return echec; } @@ -120,14 +114,15 @@ public class Echiquier { Position stock; Position stock2; - do { /// TEST 1ERE COORS + /// TEST 1ERE SOURCE + do { i++; j = -1; do { j++; - if (getCodes()[i][j].equals(A)) //Cherche dans la matrice code si on trouve une string = celle donnée par le joueur + if (getCodes()[i][j].equals(A)) //Si la coors entré est un code possible { if (this.getEchiquier()[i][j].getNom().equalsIgnoreCase("..")) // Verifie si la case choisie n'est pas vide { @@ -143,18 +138,17 @@ public class Echiquier { }while(( (getCodes()[i][j].equalsIgnoreCase(A)) == false) && (j+1 < codes.length)); }while((getCodes()[i][j].equalsIgnoreCase(A) == false) && (i+1 < codes.length)); - - for (k = 0; k < codes.length;k++) /// TEST 2EME COORS + /// TEST 2EME DESTINATION + for (k = 0; k < codes.length;k++) { for (l = 0; l < codes.length;l++) { if (getCodes()[k][l].equalsIgnoreCase(B) == true) { - if (this.getEchiquier()[k][l].getCouleur() == J.getCouleur()) // Verifie que la piece visée n'est pas de ta faction + if (this.getEchiquier()[k][l].getCouleur() == J.getCouleur()) // Verifie si la piece visée est de ta faction { System.err.println("Le pion que vous voulez manger est de votre faction. Recommencez !"); return false; - } @@ -162,13 +156,12 @@ public class Echiquier { { System.err.println("Déplacement impossible. Recommencez ! \n"); return false; - } - else + else //PARTIE DEPLACEMENT { - System.out.println("Choix validé ! Déplacement en cours."); // Partie déplacement + System.out.println("Choix validé ! Déplacement en cours."); stock = new Position(l+1,8-k); stock2 = new Position(j+1,8-i); this.getEchiquier()[k][l] = this.getEchiquier()[i][j]; @@ -180,7 +173,7 @@ public class Echiquier { } } } - System.out.println("Un de vos codes est faux. Recommencez."); // SI COORS INEXISTANTE (EX : A) + System.out.println("Un de vos codes est faux. Recommencez."); // si coors entré inexistante return false; } @@ -197,7 +190,16 @@ public class Echiquier { } - //getters and setters + //GETTESRS AND SETTERS + public Piece[][] getEchiquier() { + return echiquier; + } + + + public String[][] getCodes() { + return codes; + } + public Pion getPionB1() { return pionB1; } From e2d8fcf7aff126e577c5dec25978cafa3452da3b Mon Sep 17 00:00:00 2001 From: Chiara Date: Thu, 23 May 2019 14:44:34 +0200 Subject: [PATCH 209/271] ajout commentaires --- src/piecesEchiquier/Cavalier.java | 8 ++++++-- src/piecesEchiquier/Echiquier.java | 29 ++++++++++++----------------- src/piecesEchiquier/Piece.java | 19 +++++-------------- src/piecesEchiquier/Pion.java | 4 ++-- src/piecesEchiquier/Position.java | 3 +++ src/piecesEchiquier/Reine.java | 2 -- 6 files changed, 28 insertions(+), 37 deletions(-) diff --git a/src/piecesEchiquier/Cavalier.java b/src/piecesEchiquier/Cavalier.java index fc138b1..a51b139 100755 --- a/src/piecesEchiquier/Cavalier.java +++ b/src/piecesEchiquier/Cavalier.java @@ -12,7 +12,8 @@ public class Cavalier extends Piece { if (e.estVide(p.getPosition()) == false) //si on mange une piece System.out.println("Vous avez mangé une pièce !"); - //Côté droit + //COTE DROIT + //HAUT if((p.getPosition().getX()) == (this.getPosition().getX()+1) && (p.getPosition().getY()) == (this.getPosition().getY()+2)) //Verifie deplacement y+2 vers le haut et x+1 vers la droite { if(p.getCouleur()!=this.getCouleur()) @@ -29,6 +30,7 @@ public class Cavalier extends Piece { } } + //BAS if((p.getPosition().getX()) == (this.getPosition().getX()+1) && (p.getPosition().getY()) == (this.getPosition().getY()-2)) //Verifie deplacement y-2 vers le bas et x+1 vers la droite { if(p.getCouleur()!=this.getCouleur()) @@ -44,7 +46,8 @@ public class Cavalier extends Piece { return true; } } - //Côté gauche + //COTE GAUCHE + //HAUT if((p.getPosition().getX()) == (this.getPosition().getX()-1) && (p.getPosition().getY()) == (this.getPosition().getY()+2)) //Verifie deplacement y+2 vers le haut et x-1 vers la gauche { if(p.getCouleur()!=this.getCouleur()) @@ -61,6 +64,7 @@ public class Cavalier extends Piece { } } + //BAS if((p.getPosition().getX()) == (this.getPosition().getX()-1) && (p.getPosition().getY()) == (this.getPosition().getY()-2)) //Verifie deplacement y-2 vers le bas et x-1 vers la gauche { if(p.getCouleur()!=this.getCouleur()) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 66df014..ea7a5ca 100644 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -5,7 +5,7 @@ import joueurs.Joueur; public class Echiquier { //ATTRIBUTS - private String[][] codes = + private String[][] codes = //pour définir quel code correspond a quel case { {"A8","B8","C8","D8","E8","F8","G8","H8"}, {"A7","B7","C7","D7","E7","F7","G7","H7"}, @@ -17,6 +17,7 @@ public class Echiquier { {"A1","B1","C1","D1","E1","F1","G1","H1"} }; + //declaration de toutes les pieces de l'echiquier private Pion pionB1 = new Pion("Blanc","PB",new Position(1,2)); private Pion pionB2 = new Pion("Blanc","PB",new Position(2,2)); private Pion pionB3 = new Pion("Blanc","PB",new Position(3,2)); @@ -56,7 +57,7 @@ public class Echiquier { private Roi RoiB1 = new Roi("Blanc","KB",new Position(4,1)); private Roi RoiN1 = new Roi("Noir","KN",new Position(4,8)); - + //remplissage de l'echiquier private Piece[][] echiquier = { {TourN1,CavalierN1,FouN1,ReineN1,RoiN1,FouN2,CavalierN2,TourN2}, @@ -73,14 +74,6 @@ public class Echiquier { public Echiquier() { } - - - - - - - - public String toString() // FONCTION AFFICHAGE { @@ -159,14 +152,14 @@ public class Echiquier { } - else //PARTIE DEPLACEMENT + else //PARTIE DEPLACEMENT DE LA PIECE { System.out.println("Choix validé ! Déplacement en cours."); - stock = new Position(l+1,8-k); - stock2 = new Position(j+1,8-i); - this.getEchiquier()[k][l] = this.getEchiquier()[i][j]; - this.getEchiquier()[k][l].setPosition(stock); - this.getEchiquier()[i][j] = new Piece(stock2); + stock = new Position(l+1,8-k); //stockage de la pos destination + stock2 = new Position(j+1,8-i); //stockage de la pos source + this.getEchiquier()[k][l] = this.getEchiquier()[i][j]; //deplacement de la piece + this.getEchiquier()[k][l].setPosition(stock); //donner nouvelle position a la piece dépalcer + this.getEchiquier()[i][j] = new Piece(stock2); //mettre piece vide dans la pos source, car la case est maintenant vide return true; } @@ -200,6 +193,8 @@ public class Echiquier { return codes; } + ////////////////// + public Pion getPionB1() { return pionB1; } @@ -294,7 +289,7 @@ public class Echiquier { this.pionB8 = pionB8; } - + ////////////////// public Pion getPionN1() { return pionN1; diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index 71936fc..1e6de67 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -2,23 +2,20 @@ package piecesEchiquier; public class Piece { - + //ATTRIBUTS private String couleur = ""; - //private String lettre = ".."; private String nom = ".."; private boolean enVie = true; private Position position; private Position ini; private boolean verif = false; - //constructeur par defaut qui devrait probablement remplacer vide - + //CONSTRUCTEURS public Piece() { } - // constructeur public Piece(Position pos) { position = pos; @@ -29,13 +26,13 @@ public class Piece { { this.couleur = couleur; this.nom = l; - //this.emplacementIni = emp; this.position = pos; this.ini=pos; } - public boolean aBouge() + //METHODES + public boolean aBouge() //voir si la piece a bouger pour certains deplacement { if(this.getIni() != this.getPosition()) @@ -49,7 +46,7 @@ public class Piece { return verif; } - // gets & sets + //GETTERS AND SETTERS public String getNom() { return nom; @@ -98,10 +95,4 @@ public class Piece { { return true; } - - - - - - } diff --git a/src/piecesEchiquier/Pion.java b/src/piecesEchiquier/Pion.java index e9586d5..44ebf6d 100755 --- a/src/piecesEchiquier/Pion.java +++ b/src/piecesEchiquier/Pion.java @@ -12,7 +12,7 @@ public class Pion extends Piece { public boolean deplacable(Echiquier e, Piece p) // CHECK QUE PION PEUT ETRE DEPLACE { - if (p.getPosition().getX()-1 == this.getPosition().getX() || p.getPosition().getX()+1 == this.getPosition().getX()) //vERIFICATION SI LA PERSONNE SOUHAITE MANGER LA PIECE + if (p.getPosition().getX()-1 == this.getPosition().getX() || p.getPosition().getX()+1 == this.getPosition().getX()) //Verification si la personne souhaite manger la piece { if ((this.getCouleur().equals("Blanc") && p.getPosition().getY()-1 == this.getPosition().getY()) || (this.getCouleur() == "noir" && p.getPosition().getY()+1 == this.getPosition().getY())) { @@ -28,7 +28,7 @@ public class Pion extends Piece { } - // Avancer tout droit + // AVANCER TOUT DROIT else if (p.getPosition().getX() == this.getPosition().getX()) { if (!(p.getNom().equals(".."))) // SI case non vide diff --git a/src/piecesEchiquier/Position.java b/src/piecesEchiquier/Position.java index f83091d..cfab854 100755 --- a/src/piecesEchiquier/Position.java +++ b/src/piecesEchiquier/Position.java @@ -1,9 +1,11 @@ package piecesEchiquier; public class Position { + //ATTRIBUTS private int x; private int y; + //CONSTRUCTEURS public Position() { } @@ -14,6 +16,7 @@ public class Position { this.y = y; } + //GETTERS AND SETTERS public int getX() { return x; } diff --git a/src/piecesEchiquier/Reine.java b/src/piecesEchiquier/Reine.java index a0c1d28..4fb1035 100755 --- a/src/piecesEchiquier/Reine.java +++ b/src/piecesEchiquier/Reine.java @@ -141,8 +141,6 @@ public class Reine extends Piece { return true; } - - return false; } } From fed94934c36adf63254c06569deaa2c6b666a474 Mon Sep 17 00:00:00 2001 From: Manon Date: Thu, 23 May 2019 15:19:16 +0200 Subject: [PATCH 210/271] =?UTF-8?q?correction=20pion=20vite=20fait=20+=20r?= =?UTF-8?q?eines=20bonnes=20coordonn=C3=A9es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/piecesEchiquier/Echiquier.java | 8 ++++---- src/piecesEchiquier/Pion.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index ea7a5ca..3b17247 100644 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -51,11 +51,11 @@ public class Echiquier { private Fou FouN1 = new Fou("Noir","FN",new Position(3,8)); private Fou FouN2 = new Fou("Noir","FN",new Position(6,8)); - private Reine ReineB1 = new Reine("Blanc","QB",new Position(5,1)); - private Reine ReineN1 = new Reine("Noir","QN",new Position(5,8)); + private Reine ReineB1 = new Reine("Blanc","QB",new Position(4,1)); + private Reine ReineN1 = new Reine("Noir","QN",new Position(4,8)); - private Roi RoiB1 = new Roi("Blanc","KB",new Position(4,1)); - private Roi RoiN1 = new Roi("Noir","KN",new Position(4,8)); + private Roi RoiB1 = new Roi("Blanc","KB",new Position(5,1)); + private Roi RoiN1 = new Roi("Noir","KN",new Position(5,8)); //remplissage de l'echiquier private Piece[][] echiquier = diff --git a/src/piecesEchiquier/Pion.java b/src/piecesEchiquier/Pion.java index 44ebf6d..8623a17 100755 --- a/src/piecesEchiquier/Pion.java +++ b/src/piecesEchiquier/Pion.java @@ -14,7 +14,7 @@ public class Pion extends Piece { { if (p.getPosition().getX()-1 == this.getPosition().getX() || p.getPosition().getX()+1 == this.getPosition().getX()) //Verification si la personne souhaite manger la piece { - if ((this.getCouleur().equals("Blanc") && p.getPosition().getY()-1 == this.getPosition().getY()) || (this.getCouleur() == "noir" && p.getPosition().getY()+1 == this.getPosition().getY())) + if ((this.getCouleur().equals("Blanc") && p.getPosition().getY()-1 == this.getPosition().getY()) || (this.getCouleur() == "Noir" && p.getPosition().getY()+1 == this.getPosition().getY())) { if (p.getNom().equals("..")) { From 5255f9932ba558158123e899f9d3ac2a078082cf Mon Sep 17 00:00:00 2001 From: Manon Date: Thu, 23 May 2019 17:35:58 +0200 Subject: [PATCH 211/271] Fou refait --- src/piecesEchiquier/Fou.java | 113 +++++++++++++++-------------------- 1 file changed, 48 insertions(+), 65 deletions(-) diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java index 7ea8c65..1f3e6e4 100755 --- a/src/piecesEchiquier/Fou.java +++ b/src/piecesEchiquier/Fou.java @@ -9,83 +9,66 @@ public class Fou extends Piece { public boolean deplacable(Echiquier e,Piece p) { - if (e.estVide(p.getPosition()) == false) //si on mange une piece - System.out.println("Vous avez mangé une pièce !"); + //if (e.estVide(p.getPosition()) == false) //si on mange une piece + // System.out.println("Vous avez mangé une pièce !"); - for (int i = 1; i < 8; i++) // ON CHERCHE SI LA 2EME COORS EST EN DIAGONALE DE LA 1 ERE + if (p.getPosition().getX() < this.getPosition().getX()) { - - if ( p.getPosition().getX() == this.getPosition().getX()+i) // 2eme coors a droite de la 1 ere + if (this.getPosition().getX() - p.getPosition().getX() == p.getPosition().getY()-this.getPosition().getY()) { - - //DEPLACEMENT HAUT DROITE - if (p.getPosition().getY() == this.getPosition().getY()+i ) // on teste si quand on avance de x vers la droite on monte aussi de x + for (int i = 1; i < p.getPosition().getY()-this.getPosition().getY();i++) { - for (int j = 1;this.getPosition().getX()+j <= p.getPosition().getX()-1;j++) // on verifie que le chemin est libre + if ( !(e.getEchiquier()[8-this.getPosition().getY()-i][this.getPosition().getX()-i-1].getNom().equals("..")) ) { - if ( !(e.getEchiquier()[8-(this.getPosition().getY()+j)][this.getPosition().getX()+j-1].getNom().equals("..")) ) - { - System.err.println("Le chemin n'est pas libre."); - return false; - } + System.err.println("Le chemin n'est pas libre."); + return false; } - return true; - } - - //DEPLACEMENT BAS DROITE - else if (p.getPosition().getY() == this.getPosition().getY()-i) // on teste si quand on avance de x vers la droite on descend aussi de x - { - for (int j = 1;this.getPosition().getX()+j <= p.getPosition().getX()-1;j++) // on verifie que le chemin est libre - { - if ( !(e.getEchiquier()[8-(this.getPosition().getY()-j)][this.getPosition().getX()+j-1].getNom().equals("..")) ) - { - System.err.println("Le chemin n'est pas libre."); - return false; - } - } - return true; - } - - - - } - - else if ( p.getPosition().getX() == this.getPosition().getX()-i) // 2eme coors a gauche de la 1 ere - { - - //DEPLACEMENT HAUT GAUCHE - if (p.getPosition().getY() == this.getPosition().getY()+i ) // on teste si quand on va en x vers la gauche on monte aussi de x - { - for (int j = 1;this.getPosition().getX()-j >= p.getPosition().getX()+1;j++) // on verifie que le chemin est libre - { - if ( !(e.getEchiquier()[8-(this.getPosition().getY()+j)][this.getPosition().getX()+j-1].getNom().equals("..")) ) - { - System.out.println("Le chemin n'est pas libre."); - return false; - } - } - return true; - } - - //DEPLACEMENT BAS DROITE - else if (p.getPosition().getY() == this.getPosition().getY()-i) // on teste si quand on va de x vers la droite on descend aussi de x - { - for (int j = 1;this.getPosition().getX()-j >= p.getPosition().getX()+1;j++) // on verifie que le chemin est libre - { - if ( !(e.getEchiquier()[8-(this.getPosition().getY()-j)][this.getPosition().getX()+j-1].getNom().equals("..")) ) - { - System.out.println("Le chemin n'est pas libre."); - return false; - } - } - return true; } return true; } + else if (this.getPosition().getX() - p.getPosition().getX() == this.getPosition().getY()-p.getPosition().getY()) + { + for (int i = 1; i < this.getPosition().getY()-p.getPosition().getY();i++) + { + if ( !(e.getEchiquier()[8-this.getPosition().getY()+i][this.getPosition().getX()-i-1].getNom().equals("..")) ) + { + System.err.println("Le chemin n'est pas libre."); + return false; + } + } + return true; + } + }else if (p.getPosition().getX() > this.getPosition().getX()) + { + if (p.getPosition().getX() - this.getPosition().getX() == p.getPosition().getY()-this.getPosition().getY()) + { + for (int i = 1; i < p.getPosition().getY()-this.getPosition().getY();i++) + { + if ( !(e.getEchiquier()[8-this.getPosition().getY()-i][this.getPosition().getX()+i-1].getNom().equals("..")) ) + { + System.err.println("Le chemin n'est pas libre."); + return false; + } + } + return true; + } + else if (p.getPosition().getX() - this.getPosition().getX() == this.getPosition().getY()-p.getPosition().getY()) + { + for (int i = 1; i < this.getPosition().getY()-p.getPosition().getY();i++) + { + if ( !(e.getEchiquier()[8-this.getPosition().getY()+i][this.getPosition().getX()+i-1].getNom().equals("..")) ) + { + System.err.println("Le chemin n'est pas libre."); + return false; + } + } + return true; + } + } return false; - } } + From a4252e634b8e03035a1d3db3f0fa41f67d891a55 Mon Sep 17 00:00:00 2001 From: Johann Date: Thu, 23 May 2019 20:50:09 +0200 Subject: [PATCH 212/271] Rajout condition d'affichage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Affiche le message "manger pièce" que si la pièce n'est pas un roi --- src/piecesEchiquier/Cavalier.java | 7 ++++++- src/piecesEchiquier/Echiquier.java | 3 +-- src/piecesEchiquier/Fou.java | 10 ++++++++++ src/piecesEchiquier/Pion.java | 8 +++++--- src/piecesEchiquier/Reine.java | 7 ++++++- src/piecesEchiquier/Roi.java | 14 +++++++++++--- src/piecesEchiquier/Tour.java | 7 ++++++- 7 files changed, 45 insertions(+), 11 deletions(-) diff --git a/src/piecesEchiquier/Cavalier.java b/src/piecesEchiquier/Cavalier.java index a51b139..67c2a76 100755 --- a/src/piecesEchiquier/Cavalier.java +++ b/src/piecesEchiquier/Cavalier.java @@ -10,7 +10,12 @@ public class Cavalier extends Piece { public boolean deplacable(Echiquier e, Piece p) // vérifie que le Cavalier peut être déplacé { if (e.estVide(p.getPosition()) == false) //si on mange une piece - System.out.println("Vous avez mangé une pièce !"); + { + if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + { + System.out.println("Vous avez mangé une pièce !"); + } + } //COTE DROIT //HAUT diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 3b17247..b21a3b9 100644 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -147,7 +147,7 @@ public class Echiquier { else if (this.getEchiquier()[i][j].deplacable(this,this.getEchiquier()[k][l]) == false) // VERIFICATION AVEC FONCTION DEPLACABLE { - System.err.println("Déplacement impossible. Recommencez ! \n"); + System.err.println("Déplacement impossiblec6. Recommencez ! \n"); return false; } @@ -162,7 +162,6 @@ public class Echiquier { this.getEchiquier()[i][j] = new Piece(stock2); //mettre piece vide dans la pos source, car la case est maintenant vide return true; } - } } } diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java index 1f3e6e4..cd762b7 100755 --- a/src/piecesEchiquier/Fou.java +++ b/src/piecesEchiquier/Fou.java @@ -9,8 +9,18 @@ public class Fou extends Piece { public boolean deplacable(Echiquier e,Piece p) { + //if (e.estVide(p.getPosition()) == false) //si on mange une piece // System.out.println("Vous avez mangé une pièce !"); + + if (e.estVide(p.getPosition()) == false) //si on mange une piece + { + if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + { + System.out.println("Vous avez mangé une pièce !"); + } + } + if (p.getPosition().getX() < this.getPosition().getX()) { diff --git a/src/piecesEchiquier/Pion.java b/src/piecesEchiquier/Pion.java index 8623a17..5a31193 100755 --- a/src/piecesEchiquier/Pion.java +++ b/src/piecesEchiquier/Pion.java @@ -18,11 +18,13 @@ public class Pion extends Piece { { if (p.getNom().equals("..")) { - System.err.println("Vous tentez de manger une case vide."); + System.err.println("Vous tentez de manger une case vide."); return false; } - - System.out.println("Vous avez mangé une pièce !"); + if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + { + System.out.println("Vous avez mangé une pièce !"); + } return true; } } diff --git a/src/piecesEchiquier/Reine.java b/src/piecesEchiquier/Reine.java index 4fb1035..67a7dd0 100755 --- a/src/piecesEchiquier/Reine.java +++ b/src/piecesEchiquier/Reine.java @@ -10,7 +10,12 @@ public class Reine extends Piece { public boolean deplacable(Echiquier e,Piece p) { if (e.estVide(p.getPosition()) == false) //si on mange une piece - System.out.println("Vous avez mangé une pièce !"); + { + if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + { + System.out.println("Vous avez mangé une pièce !"); + } + } if(p.getPosition().getX() == this.getPosition().getX()) // verification les 2 pieces sont sur la meme colonne { diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index 6e599c7..1741866 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -38,7 +38,12 @@ public class Roi extends Piece { public boolean deplacable(Echiquier e, Piece p) // vérifie que le roi peut être déplacé { if (e.estVide(p.getPosition()) == false) //si on mange une piece - System.out.println("Vous avez mangé une pièce !"); + { + if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + { + System.out.println("Vous avez mangé une pièce !"); + } + } //Côté droit if((p.getPosition().getX()) == (this.getPosition().getX()+1) && (p.getPosition().getY()) == (this.getPosition().getY()+1)) //Verifie deplacement y+1 vers le haut et x+1 vers la droite @@ -106,7 +111,10 @@ public class Roi extends Piece { } return false; } - - + /* + public boolean isEnEchec() + { + + }*/ } diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java index 1c4164b..2c9d0a0 100755 --- a/src/piecesEchiquier/Tour.java +++ b/src/piecesEchiquier/Tour.java @@ -10,7 +10,12 @@ public class Tour extends Piece { public boolean deplacable(Echiquier e,Piece p) { if (e.estVide(p.getPosition()) == false) //si on mange une piece - System.out.println("Vous avez mangé une pièce !"); + { + if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + { + System.out.println("Vous avez mangé une pièce !"); + } + } if(p.getPosition().getX() == this.getPosition().getX()) // verification les 2 pieces sont sur la meme colonne { From cac8ef3d37f21810ce2d05de4d0f3ac4df714dbd Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Fri, 24 May 2019 12:52:56 +0200 Subject: [PATCH 213/271] fix equalsignore case for manger() --- src/piecesEchiquier/Echiquier.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 3b17247..9fe89d7 100644 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -100,6 +100,7 @@ public class Echiquier { public boolean verificationMouvement(Joueur J, String A, String B) // FONCTION TRADUCTION, VERIF + DEPLACEMENTS SI POSSIBLE {// String A = coordonées de A; String B = coordonées de B + B.toUpperCase(); int i = -1; int j = -1; int k; @@ -166,7 +167,7 @@ public class Echiquier { } } } - System.out.println("Un de vos codes est faux. Recommencez."); // si coors entré inexistante + System.err.println("Un de vos codes est faux. Recommencez."); // si coors entré inexistante return false; } From aa7e603752d70275ce3c9ccecd492093ccdb6efe Mon Sep 17 00:00:00 2001 From: Manon Date: Fri, 24 May 2019 22:47:44 +0200 Subject: [PATCH 214/271] Modification reine et tour --- src/piecesEchiquier/Reine.java | 101 +++++++++++++-------------------- src/piecesEchiquier/Tour.java | 1 + 2 files changed, 42 insertions(+), 60 deletions(-) diff --git a/src/piecesEchiquier/Reine.java b/src/piecesEchiquier/Reine.java index 4fb1035..bc98bf5 100755 --- a/src/piecesEchiquier/Reine.java +++ b/src/piecesEchiquier/Reine.java @@ -14,10 +14,8 @@ public class Reine extends Piece { if(p.getPosition().getX() == this.getPosition().getX()) // verification les 2 pieces sont sur la meme colonne { - System.out.println("test"); if (p.getPosition().getY() > this.getPosition().getY()) // Test si la 2 eme piece est au dessus de la 1ere { - System.out.println("test2"); for (int i = this.getPosition().getY()+1; i <= p.getPosition().getY()-1;i++) // verifie qu'il n'y a pas d'obstacles sur le chemin { if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide @@ -73,78 +71,61 @@ public class Reine extends Piece { return false; } - for (int i = 1; i < 8; i++) // ON CHERCHE SI LA 2EME COORS EST EN DIAGONALE DE LA 1 ERE + if (p.getPosition().getX() < this.getPosition().getX()) { - System.out.println("test"); - if ( p.getPosition().getX() == this.getPosition().getX()+i) // 2eme coors a droite de la 1 ere + if (this.getPosition().getX() - p.getPosition().getX() == p.getPosition().getY()-this.getPosition().getY()) { - - - if (p.getPosition().getY() == this.getPosition().getY()+i ) // on teste si quand on avance de x vers la droite on monte aussi de x + for (int i = 1; i < p.getPosition().getY()-this.getPosition().getY();i++) { - for (int j = 1;this.getPosition().getX()+j <= p.getPosition().getX()-1;j++) // on verifie que le chemin est libre + if ( !(e.getEchiquier()[8-this.getPosition().getY()-i][this.getPosition().getX()-i-1].getNom().equals("..")) ) { - if ( !(e.getEchiquier()[8-(this.getPosition().getY()+j)][this.getPosition().getX()+j-1].getNom().equals("..")) ) - { - System.err.println("Le chemin n'est pas libre."); - return false; - } + System.err.println("Le chemin n'est pas libre."); + return false; } - return true; } - - - else if (p.getPosition().getY() == this.getPosition().getY()-i) // on teste si quand on avance de x vers la droite on descend aussi de x - { - for (int j = 1;this.getPosition().getX()+j <= p.getPosition().getX()-1;j++) // on verifie que le chemin est libre - { - if ( !(e.getEchiquier()[8-(this.getPosition().getY()-j)][this.getPosition().getX()+j-1].getNom().equals("..")) ) - { - System.err.println("Le chemin n'est pas libre."); - return false; - } - } - return true; - } - - - + return true; } - - else if ( p.getPosition().getX() == this.getPosition().getX()-i) // 2eme coors a gauche de la 1 ere + else if (this.getPosition().getX() - p.getPosition().getX() == this.getPosition().getY()-p.getPosition().getY()) { - - if (p.getPosition().getY() == this.getPosition().getY()+i ) // on teste si quand on va en x vers la gauche on monte aussi de x + for (int i = 1; i < this.getPosition().getY()-p.getPosition().getY();i++) { - for (int j = 1;this.getPosition().getX()-j >= p.getPosition().getX()+1;j++) // on verifie que le chemin est libre + if ( !(e.getEchiquier()[8-this.getPosition().getY()+i][this.getPosition().getX()-i-1].getNom().equals("..")) ) { - if ( !(e.getEchiquier()[8-(this.getPosition().getY()+j)][this.getPosition().getX()+j-1].getNom().equals("..")) ) - { - System.err.println("Le chemin n'est pas libre."); - return false; - } + System.err.println("Le chemin n'est pas libre."); + return false; } - return true; } - - - else if (p.getPosition().getY() == this.getPosition().getY()-i) // on teste si quand on va de x vers la droite on descend aussi de x - { - for (int j = 1;this.getPosition().getX()-j >= p.getPosition().getX()+1;j++) // on verifie que le chemin est libre - { - if ( !(e.getEchiquier()[8-(this.getPosition().getY()-j)][this.getPosition().getX()+j-1].getNom().equals("..")) ) - { - System.err.println("Le chemin n'est pas libre."); - return false; - } - } - return true; - } - - return false; + return true; } + }else if (p.getPosition().getX() > this.getPosition().getX()) + { + if (p.getPosition().getX() - this.getPosition().getX() == p.getPosition().getY()-this.getPosition().getY()) + { + for (int i = 1; i < p.getPosition().getY()-this.getPosition().getY();i++) + { + if ( !(e.getEchiquier()[8-this.getPosition().getY()-i][this.getPosition().getX()+i-1].getNom().equals("..")) ) + { + System.err.println("Le chemin n'est pas libre."); + return false; + } + } + return true; + } + else if (p.getPosition().getX() - this.getPosition().getX() == this.getPosition().getY()-p.getPosition().getY()) + { + for (int i = 1; i < this.getPosition().getY()-p.getPosition().getY();i++) + { + if ( !(e.getEchiquier()[8-this.getPosition().getY()+i][this.getPosition().getX()+i-1].getNom().equals("..")) ) + { + System.err.println("Le chemin n'est pas libre."); + return false; + } + } + return true; + } + } - return false; + } } diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java index 1c4164b..3f8319f 100755 --- a/src/piecesEchiquier/Tour.java +++ b/src/piecesEchiquier/Tour.java @@ -63,6 +63,7 @@ public class Tour extends Piece { { if (!(e.getEchiquier()[8-this.getPosition().getY()][i-1].getNom().equals(".."))) // SI case non vide { + System.err.println("Le chemin n'est pas libre."); return false; } } From a261b3a4df1fef88690690197aa0b43f60e3d781 Mon Sep 17 00:00:00 2001 From: Johann Date: Fri, 24 May 2019 22:52:04 +0200 Subject: [PATCH 215/271] =?UTF-8?q?Rajout=20condition=20d'affichage=20+=20?= =?UTF-8?q?methode=20metEnEchec=20+=20supression=20d'=C3=A9l=C3=A9ments=20?= =?UTF-8?q?inutiles?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/piecesEchiquier/Echiquier.java | 35 +++++++++++++++++++++++++++--- src/piecesEchiquier/Fou.java | 4 ---- src/piecesEchiquier/Piece.java | 10 +++++++++ src/piecesEchiquier/Pion.java | 5 ++++- src/piecesEchiquier/Reine.java | 3 --- src/piecesEchiquier/Roi.java | 7 ++---- 6 files changed, 48 insertions(+), 16 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index b21a3b9..3cc9429 100644 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -147,7 +147,7 @@ public class Echiquier { else if (this.getEchiquier()[i][j].deplacable(this,this.getEchiquier()[k][l]) == false) // VERIFICATION AVEC FONCTION DEPLACABLE { - System.err.println("Déplacement impossiblec6. Recommencez ! \n"); + System.err.println("Déplacement impossible. Recommencez ! \n"); return false; } @@ -158,9 +158,38 @@ public class Echiquier { stock = new Position(l+1,8-k); //stockage de la pos destination stock2 = new Position(j+1,8-i); //stockage de la pos source this.getEchiquier()[k][l] = this.getEchiquier()[i][j]; //deplacement de la piece - this.getEchiquier()[k][l].setPosition(stock); //donner nouvelle position a la piece dépalcer + this.getEchiquier()[k][l].setPosition(stock); //donner nouvelle position a la piece déplacer this.getEchiquier()[i][j] = new Piece(stock2); //mettre piece vide dans la pos source, car la case est maintenant vide - return true; + int p; + int q; + Piece stockageRoi=null; + if( this.getEchiquier( )[k][l].getCouleur().equals("Blanc") ) { + for ( p=0; p < codes.length;p++) //cherche le roi noir dans la matrice + { + for ( q=0; q < codes.length;q++) + { + if(this.getEchiquier()[p][q].getNom().equals("KN")) + { + stockageRoi=this.getEchiquier()[p][q]; + } + } + } + } + else + { + for ( p=0; p < codes.length;p++) //cherche le roi blanc dans la matrice + { + for ( q=0; q < codes.length;q++) + { + if(this.getEchiquier()[p][q].getNom().equals("KB")) + { + stockageRoi=this.getEchiquier()[p][q]; + } + } + } + } + this.getEchiquier()[k][l].metEnEchec(this,stockageRoi); //Verifie si le roi sera en echec + return true; } } } diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java index cd762b7..31e3067 100755 --- a/src/piecesEchiquier/Fou.java +++ b/src/piecesEchiquier/Fou.java @@ -10,9 +10,6 @@ public class Fou extends Piece { public boolean deplacable(Echiquier e,Piece p) { - //if (e.estVide(p.getPosition()) == false) //si on mange une piece - // System.out.println("Vous avez mangé une pièce !"); - if (e.estVide(p.getPosition()) == false) //si on mange une piece { if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message @@ -20,7 +17,6 @@ public class Fou extends Piece { System.out.println("Vous avez mangé une pièce !"); } } - if (p.getPosition().getX() < this.getPosition().getX()) { diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index 1e6de67..78deab4 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -95,4 +95,14 @@ public class Piece { { return true; } + + public boolean metEnEchec(Echiquier e, Piece p) + { + if(this.deplacable(e,p) == true) //1er cas : la pièce se deplace une seconde fois (pas vraiment) et verifie qu'elle tombe sur la position du roi (soit noir, soit blanc selon la couleur de la pièce) + { + System.out.println("Le roi est en échec"); + return true; + } + return false; + } } diff --git a/src/piecesEchiquier/Pion.java b/src/piecesEchiquier/Pion.java index 5a31193..a67f950 100755 --- a/src/piecesEchiquier/Pion.java +++ b/src/piecesEchiquier/Pion.java @@ -35,7 +35,10 @@ public class Pion extends Piece { { if (!(p.getNom().equals(".."))) // SI case non vide { - System.err.println("Vous ne pouvez pas manger en avancant tout droit."); + if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + { + System.err.println("Vous ne pouvez pas manger en avancant tout droit."); + } return false; } if ( ((this.getCouleur().equals("Blanc")) && (p.getPosition().getY()-1 == this.getPosition().getY()) ) || ((this.getCouleur().equals("Noir")) && (p.getPosition().getY()+1 == this.getPosition().getY()))) diff --git a/src/piecesEchiquier/Reine.java b/src/piecesEchiquier/Reine.java index 67a7dd0..d41b41c 100755 --- a/src/piecesEchiquier/Reine.java +++ b/src/piecesEchiquier/Reine.java @@ -19,10 +19,8 @@ public class Reine extends Piece { if(p.getPosition().getX() == this.getPosition().getX()) // verification les 2 pieces sont sur la meme colonne { - System.out.println("test"); if (p.getPosition().getY() > this.getPosition().getY()) // Test si la 2 eme piece est au dessus de la 1ere { - System.out.println("test2"); for (int i = this.getPosition().getY()+1; i <= p.getPosition().getY()-1;i++) // verifie qu'il n'y a pas d'obstacles sur le chemin { if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide @@ -80,7 +78,6 @@ public class Reine extends Piece { for (int i = 1; i < 8; i++) // ON CHERCHE SI LA 2EME COORS EST EN DIAGONALE DE LA 1 ERE { - System.out.println("test"); if ( p.getPosition().getX() == this.getPosition().getX()+i) // 2eme coors a droite de la 1 ere { diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index 1741866..fb97452 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -111,10 +111,7 @@ public class Roi extends Piece { } return false; } - /* - public boolean isEnEchec() - { - - }*/ + } + From 48c3d0ee291c8c66e16e666949e2dfcd00a852aa Mon Sep 17 00:00:00 2001 From: Johann Date: Fri, 24 May 2019 23:17:54 +0200 Subject: [PATCH 216/271] Rajout condition pour enlever un affichage --- src/piecesEchiquier/Reine.java | 35 +++++++++++++++++++++++++++------- src/piecesEchiquier/Tour.java | 20 +++++++++++++++---- 2 files changed, 44 insertions(+), 11 deletions(-) diff --git a/src/piecesEchiquier/Reine.java b/src/piecesEchiquier/Reine.java index d84873e..cd5fc90 100755 --- a/src/piecesEchiquier/Reine.java +++ b/src/piecesEchiquier/Reine.java @@ -25,7 +25,10 @@ public class Reine extends Piece { { if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide { - System.err.println("Le chemin n'est pas libre."); + if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + { + System.err.println("Le chemin n'est pas libre."); + } return false; } } @@ -38,7 +41,10 @@ public class Reine extends Piece { { if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide { - System.err.println("Le chemin n'est pas libre."); + if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + { + System.err.println("Le chemin n'est pas libre."); + } return false; } } @@ -55,7 +61,10 @@ public class Reine extends Piece { { if (!(e.getEchiquier()[8-this.getPosition().getY()][i-1].getNom().equals(".."))) // SI case non vide { - System.err.println("Le chemin n'est pas libre."); + if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + { + System.err.println("Le chemin n'est pas libre."); + } return false; } } @@ -84,7 +93,10 @@ public class Reine extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()-i][this.getPosition().getX()-i-1].getNom().equals("..")) ) { - System.err.println("Le chemin n'est pas libre."); + if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + { + System.err.println("Le chemin n'est pas libre."); + } return false; } } @@ -96,7 +108,10 @@ public class Reine extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()+i][this.getPosition().getX()-i-1].getNom().equals("..")) ) { - System.err.println("Le chemin n'est pas libre."); + if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + { + System.err.println("Le chemin n'est pas libre."); + } return false; } } @@ -110,7 +125,10 @@ public class Reine extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()-i][this.getPosition().getX()+i-1].getNom().equals("..")) ) { - System.err.println("Le chemin n'est pas libre."); + if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + { + System.err.println("Le chemin n'est pas libre."); + } return false; } } @@ -122,7 +140,10 @@ public class Reine extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()+i][this.getPosition().getX()+i-1].getNom().equals("..")) ) { - System.err.println("Le chemin n'est pas libre."); + if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + { + System.err.println("Le chemin n'est pas libre."); + } return false; } } diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java index e54dd2f..2408306 100755 --- a/src/piecesEchiquier/Tour.java +++ b/src/piecesEchiquier/Tour.java @@ -25,7 +25,10 @@ public class Tour extends Piece { { if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide { - System.err.println("Le chemin n'est pas libre."); + if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + { + System.err.println("Le chemin n'est pas libre."); + } return false; } } @@ -38,7 +41,10 @@ public class Tour extends Piece { { if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide { - System.err.println("Le chemin n'est pas libre."); + if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + { + System.err.println("Le chemin n'est pas libre."); + } return false; } } @@ -55,7 +61,10 @@ public class Tour extends Piece { { if (!(e.getEchiquier()[8-this.getPosition().getY()][i-1].getNom().equals(".."))) // SI case non vide { - System.err.println("Le chemin n'est pas libre."); + if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + { + System.err.println("Le chemin n'est pas libre."); + } return false; } } @@ -68,7 +77,10 @@ public class Tour extends Piece { { if (!(e.getEchiquier()[8-this.getPosition().getY()][i-1].getNom().equals(".."))) // SI case non vide { - System.err.println("Le chemin n'est pas libre."); + if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + { + System.err.println("Le chemin n'est pas libre."); + } return false; } } From a879eac69983ad7aafa870cbf99970cdd2fc9573 Mon Sep 17 00:00:00 2001 From: Johann Date: Fri, 24 May 2019 23:22:02 +0200 Subject: [PATCH 217/271] Rajout condition affichage --- src/piecesEchiquier/Fou.java | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java index 31e3067..c0d4c74 100755 --- a/src/piecesEchiquier/Fou.java +++ b/src/piecesEchiquier/Fou.java @@ -26,7 +26,10 @@ public class Fou extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()-i][this.getPosition().getX()-i-1].getNom().equals("..")) ) { - System.err.println("Le chemin n'est pas libre."); + if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + { + System.err.println("Le chemin n'est pas libre."); + } return false; } } @@ -38,7 +41,10 @@ public class Fou extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()+i][this.getPosition().getX()-i-1].getNom().equals("..")) ) { - System.err.println("Le chemin n'est pas libre."); + if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + { + System.err.println("Le chemin n'est pas libre."); + } return false; } } @@ -52,7 +58,10 @@ public class Fou extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()-i][this.getPosition().getX()+i-1].getNom().equals("..")) ) { - System.err.println("Le chemin n'est pas libre."); + if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + { + System.err.println("Le chemin n'est pas libre."); + } return false; } } @@ -64,7 +73,10 @@ public class Fou extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()+i][this.getPosition().getX()+i-1].getNom().equals("..")) ) { - System.err.println("Le chemin n'est pas libre."); + if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + { + System.err.println("Le chemin n'est pas libre."); + } return false; } } From 80f155b42b3ed1c280f5f12614ead4e5ed099db9 Mon Sep 17 00:00:00 2001 From: Johann Date: Sat, 25 May 2019 01:09:51 +0200 Subject: [PATCH 218/271] =?UTF-8?q?2=C3=A8me=20cas=20d'echec=20fini?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/piecesEchiquier/Piece.java | 1 + src/piecesEchiquier/Roi.java | 120 ++++++++++++++++++++++++++++++--- 2 files changed, 113 insertions(+), 8 deletions(-) diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index 78deab4..4a500fc 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -103,6 +103,7 @@ public class Piece { System.out.println("Le roi est en échec"); return true; } + return false; } } diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index fb97452..510a392 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -48,64 +48,168 @@ public class Roi extends Piece { //Côté droit if((p.getPosition().getX()) == (this.getPosition().getX()+1) && (p.getPosition().getY()) == (this.getPosition().getY()+1)) //Verifie deplacement y+1 vers le haut et x+1 vers la droite { - if(p.getCouleur()!=this.getCouleur()) + if(p.getCouleur()!=this.getCouleur()) //roi couleur différente de la pièce { + for (int i=0; i<8;i++) // parcours de la matrice + { + for (int j=0; j<8;j++) + { + if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur()) && (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse + { + if(e.getEchiquier()[i][j].metEnEchec(e,p) == true) //si la piece est en echec sur la 2eme coor + { + return false; + } + } + } + } return true; } } if((p.getPosition().getX()) == (this.getPosition().getX()+1) && (p.getPosition().getY()) == (this.getPosition().getY())) //Verifie deplacement x+1 vers la droite { - if(p.getCouleur()!=this.getCouleur()) + if(p.getCouleur()!=this.getCouleur()) //roi couleur différente de la pièce { + for (int i=0; i<8;i++) // parcours de la matrice + { + for (int j=0; j<8;j++) + { + if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur()) && (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse + { + if(e.getEchiquier()[i][j].metEnEchec(e,p) == true) //si la piece est en echec sur la 2eme coor + { + return false; + } + } + } + } return true; } } if((p.getPosition().getX()) == (this.getPosition().getX()+1) && (p.getPosition().getY()) == (this.getPosition().getY()-1)) //Verifie deplacement y-1 vers le bas et x+1 vers la droite { - if(p.getCouleur()!=this.getCouleur()) + if(p.getCouleur()!=this.getCouleur()) //roi couleur différente de la pièce { + for (int i=0; i<8;i++) // parcours de la matrice + { + for (int j=0; j<8;j++) + { + if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur())&& (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse + { + if(e.getEchiquier()[i][j].metEnEchec(e,p) == true) //si la piece est en echec sur la 2eme coor + { + return false; + } + } + } + } return true; } } //Coté haut if((p.getPosition().getX()) == (this.getPosition().getX()) && (p.getPosition().getY()) == (this.getPosition().getY()+1)) //Verifie deplacement y+1 vers le haut { - if(p.getCouleur()!=this.getCouleur()) + if(p.getCouleur()!=this.getCouleur()) //roi couleur différente de la pièce { + for (int i=0; i<8;i++) // parcours de la matrice + { + for (int j=0; j<8;j++) + { + if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur())&& (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse + { + if(e.getEchiquier()[i][j].metEnEchec(e,p) == true) //si la piece est en echec sur la 2eme coor + { + return false; + } + } + } + } return true; } } //Côté bas if((p.getPosition().getX()) == (this.getPosition().getX()) && (p.getPosition().getY()) == (this.getPosition().getY()-1)) //Verifie deplacement y-1 vers le bas { - if(p.getCouleur()!=this.getCouleur()) + if(p.getCouleur()!=this.getCouleur()) //roi couleur différente de la pièce { + for (int i=0; i<8;i++) // parcours de la matrice + { + for (int j=0; j<8;j++) + { + if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur())&& (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse + { + if(e.getEchiquier()[i][j].metEnEchec(e,p) == true) //si la piece est en echec sur la 2eme coor + { + return false; + } + } + } + } return true; } } //Côté gauche if((p.getPosition().getX()) == (this.getPosition().getX()-1) && (p.getPosition().getY()) == (this.getPosition().getY()+1)) //Verifie deplacement y+1 vers le haut et x-1 vers la gauche { - if(p.getCouleur()!=this.getCouleur()) + if(p.getCouleur()!=this.getCouleur()) //roi couleur différente de la pièce { + for (int i=0; i<8;i++) // parcours de la matrice + { + for (int j=0; j<8;j++) + { + if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur())&& (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse + { + if(e.getEchiquier()[i][j].metEnEchec(e,p) == true) //si la piece est en echec sur la 2eme coor + { + return false; + } + } + } + } return true; } } if((p.getPosition().getX()) == (this.getPosition().getX()-1) && (p.getPosition().getY()) == (this.getPosition().getY())) //Verifie deplacement x-1 vers la gauche { - if(p.getCouleur()!=this.getCouleur()) + if(p.getCouleur()!=this.getCouleur()) //roi couleur différente de la pièce { + for (int i=0; i<8;i++) // parcours de la matrice + { + for (int j=0; j<8;j++) + { + if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur())&& (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse + { + if(e.getEchiquier()[i][j].metEnEchec(e,p) == true) //si la piece est en echec sur la 2eme coor + { + return false; + } + } + } + } return true; } } if((p.getPosition().getX()) == (this.getPosition().getX()-1) && (p.getPosition().getY()) == (this.getPosition().getY()-1)) //Verifie deplacement y-1 vers le bas et x-1 vers la gauche { - if(p.getCouleur()!=this.getCouleur()) + if(p.getCouleur()!=this.getCouleur()) //roi couleur différente de la pièce { + for (int i=0; i<8;i++) // parcours de la matrice + { + for (int j=0; j<8;j++) + { + if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur())&& (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse + { + if(e.getEchiquier()[i][j].metEnEchec(e,p) == true) //si la piece est en echec sur la 2eme coor + { + return false; + } + } + } + } return true; } } From 3a9f5cbaa008c64ab8295dbf66458189e743b75e Mon Sep 17 00:00:00 2001 From: sj801446 Date: Sat, 25 May 2019 11:16:30 +0200 Subject: [PATCH 219/271] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 89c41a8..7f981be 100755 --- a/README.md +++ b/README.md @@ -72,8 +72,8 @@ Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.cl | :-------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------:| | [ALEXOVITZ Anthony](https://git-iutinfo.unice.fr/aa700867) | Conception et Développement | | [NOWICKI Johann](https://git-iutinfo.unice.fr/nj715143) | Conception et Développement | -| [RELEVAT Chiara](https://git-iutinfo.unice.fr/rc804998) | Conception et Développement | -| [SRIFI Jose](https://git-iutinfo.unice.fr/sj801446) | Conception et Développement | +| [RELEVAT Chiara](https://git-iutinfo.unice.fr/rc804998) | Secrétariat, Conception et Développement | +| [SRIFI Jose](https://git-iutinfo.unice.fr/sj801446) | Chef de projet, Conception et Développement | | [THEBAULT Manon](https://git-iutinfo.unice.fr/tm802036) | Conception et Développement | | | | [PRITCHARD Adam](https://github.com/adam-p) | [Utilisation](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) & syntaxe Markdown | From 221d47c8fbc59a432a7373f425c1de760c000801 Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Sat, 25 May 2019 12:32:13 +0200 Subject: [PATCH 220/271] =?UTF-8?q?Fix=20manger=20pieces=20alli=C3=A9es=20?= =?UTF-8?q?reine?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/piecesEchiquier/Piece.java | 3 +++ src/piecesEchiquier/Reine.java | 22 +++++++++++++--------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index 4a500fc..d9359dc 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -93,6 +93,9 @@ public class Piece { public boolean deplacable(Echiquier e,Piece p) { + if(p.getCouleur().equals(this.getCouleur())) { + return false; + } return true; } diff --git a/src/piecesEchiquier/Reine.java b/src/piecesEchiquier/Reine.java index cd5fc90..d1b258a 100755 --- a/src/piecesEchiquier/Reine.java +++ b/src/piecesEchiquier/Reine.java @@ -9,12 +9,16 @@ public class Reine extends Piece { public boolean deplacable(Echiquier e,Piece p) { + if (p.getCouleur().equals(this.getCouleur())) { + System.err.println("Vous ne pouvez pas manger une pièce de votre faction"); + } if (e.estVide(p.getPosition()) == false) //si on mange une piece { - if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi , on affiche le message { System.out.println("Vous avez mangé une pièce !"); } + } if(p.getPosition().getX() == this.getPosition().getX()) // verification les 2 pieces sont sur la meme colonne @@ -23,9 +27,9 @@ public class Reine extends Piece { { for (int i = this.getPosition().getY()+1; i <= p.getPosition().getY()-1;i++) // verifie qu'il n'y a pas d'obstacles sur le chemin { - if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide + if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equalsIgnoreCase(".."))) // SI case non vide { - if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -41,7 +45,7 @@ public class Reine extends Piece { { if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide { - if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -61,7 +65,7 @@ public class Reine extends Piece { { if (!(e.getEchiquier()[8-this.getPosition().getY()][i-1].getNom().equals(".."))) // SI case non vide { - if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -93,7 +97,7 @@ public class Reine extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()-i][this.getPosition().getX()-i-1].getNom().equals("..")) ) { - if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -108,7 +112,7 @@ public class Reine extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()+i][this.getPosition().getX()-i-1].getNom().equals("..")) ) { - if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -125,7 +129,7 @@ public class Reine extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()-i][this.getPosition().getX()+i-1].getNom().equals("..")) ) { - if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -140,7 +144,7 @@ public class Reine extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()+i][this.getPosition().getX()+i-1].getNom().equals("..")) ) { - if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi , on affiche le message { System.err.println("Le chemin n'est pas libre."); } From ecd73204464071815ad1ed81ebcfaa3826d6f03f Mon Sep 17 00:00:00 2001 From: Johann Date: Sat, 25 May 2019 12:46:36 +0200 Subject: [PATCH 221/271] =?UTF-8?q?Probl=C3=A8me=20"le=20chemin=20n'est=20?= =?UTF-8?q?pas=20libre"=20regl=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/piecesEchiquier/Fou.java | 8 ++++---- src/piecesEchiquier/Reine.java | 14 +++++++------- src/piecesEchiquier/Roi.java | 13 +------------ src/piecesEchiquier/Tour.java | 8 ++++---- 4 files changed, 16 insertions(+), 27 deletions(-) diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java index c0d4c74..d227735 100755 --- a/src/piecesEchiquier/Fou.java +++ b/src/piecesEchiquier/Fou.java @@ -26,7 +26,7 @@ public class Fou extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()-i][this.getPosition().getX()-i-1].getNom().equals("..")) ) { - if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -41,7 +41,7 @@ public class Fou extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()+i][this.getPosition().getX()-i-1].getNom().equals("..")) ) { - if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -58,7 +58,7 @@ public class Fou extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()-i][this.getPosition().getX()+i-1].getNom().equals("..")) ) { - if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -73,7 +73,7 @@ public class Fou extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()+i][this.getPosition().getX()+i-1].getNom().equals("..")) ) { - if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message { System.err.println("Le chemin n'est pas libre."); } diff --git a/src/piecesEchiquier/Reine.java b/src/piecesEchiquier/Reine.java index d1b258a..1ea06fb 100755 --- a/src/piecesEchiquier/Reine.java +++ b/src/piecesEchiquier/Reine.java @@ -29,7 +29,7 @@ public class Reine extends Piece { { if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equalsIgnoreCase(".."))) // SI case non vide { - if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -45,7 +45,7 @@ public class Reine extends Piece { { if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide { - if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -65,7 +65,7 @@ public class Reine extends Piece { { if (!(e.getEchiquier()[8-this.getPosition().getY()][i-1].getNom().equals(".."))) // SI case non vide { - if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -97,7 +97,7 @@ public class Reine extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()-i][this.getPosition().getX()-i-1].getNom().equals("..")) ) { - if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -112,7 +112,7 @@ public class Reine extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()+i][this.getPosition().getX()-i-1].getNom().equals("..")) ) { - if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -129,7 +129,7 @@ public class Reine extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()-i][this.getPosition().getX()+i-1].getNom().equals("..")) ) { - if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -144,7 +144,7 @@ public class Reine extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()+i][this.getPosition().getX()+i-1].getNom().equals("..")) ) { - if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message { System.err.println("Le chemin n'est pas libre."); } diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index 510a392..d8d6e8c 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -9,18 +9,7 @@ public class Roi extends Piece { { super(c,l,pos); } - - /* - public void enEchec(Piece piece, Position position) { - boolean[][] mouvementsPossibles; - mouvementsPossibles=piece.getMouvementsPossibles(); - - positionCourante = super.getEmplacement(); - - - } - */ - + // verifie si le roi a bougé de sa place initiale NE SERT PAS POUR ROI public boolean aBouge() { diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java index 2408306..f2909a9 100755 --- a/src/piecesEchiquier/Tour.java +++ b/src/piecesEchiquier/Tour.java @@ -25,7 +25,7 @@ public class Tour extends Piece { { if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide { - if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -41,7 +41,7 @@ public class Tour extends Piece { { if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide { - if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -61,7 +61,7 @@ public class Tour extends Piece { { if (!(e.getEchiquier()[8-this.getPosition().getY()][i-1].getNom().equals(".."))) // SI case non vide { - if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -77,7 +77,7 @@ public class Tour extends Piece { { if (!(e.getEchiquier()[8-this.getPosition().getY()][i-1].getNom().equals(".."))) // SI case non vide { - if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message { System.err.println("Le chemin n'est pas libre."); } From 755ba0f14610e8d0b0aaff2390ea6ba49be4f35d Mon Sep 17 00:00:00 2001 From: Manon Date: Sat, 25 May 2019 14:35:11 +0200 Subject: [PATCH 222/271] =?UTF-8?q?ROi=20enEchec=20modifi=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/piecesEchiquier/Roi.java | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index d8d6e8c..bed0fdf 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -43,13 +43,22 @@ public class Roi extends Piece { { for (int j=0; j<8;j++) { + + + if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur()) && (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse { - if(e.getEchiquier()[i][j].metEnEchec(e,p) == true) //si la piece est en echec sur la 2eme coor + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Roi(this.getCouleur(),this.getNom(),new Position(p.getPosition().getX(),p.getPosition().getY())); + //e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); + if(e.getEchiquier()[i][j].metEnEchec(e,e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1]) == true) //si la piece est en echec sur la 2eme coor { return false; } } + + + + } } return true; @@ -66,8 +75,10 @@ public class Roi extends Piece { { if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur()) && (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse { - if(e.getEchiquier()[i][j].metEnEchec(e,p) == true) //si la piece est en echec sur la 2eme coor + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Roi(this.getCouleur(),this.getNom(),new Position(p.getPosition().getX(),p.getPosition().getY())); + if(e.getEchiquier()[i][j].metEnEchec(e,e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1]) == true) //si la piece est en echec sur la 2eme coor { + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); return false; } } @@ -148,12 +159,22 @@ public class Roi extends Piece { { for (int j=0; j<8;j++) { + /* if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur())&& (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse { if(e.getEchiquier()[i][j].metEnEchec(e,p) == true) //si la piece est en echec sur la 2eme coor { return false; } + }*/ + if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur()) && (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse + { + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Roi(this.getCouleur(),this.getNom(),new Position(p.getPosition().getX(),p.getPosition().getY())); + if(e.getEchiquier()[i][j].metEnEchec(e,e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1]) == true) //si la piece est en echec sur la 2eme coor + { + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); + return false; + } } } } From eb009ac0e130857dffe79d1a4ed32e9fb9473f42 Mon Sep 17 00:00:00 2001 From: Johann Date: Sat, 25 May 2019 14:46:08 +0200 Subject: [PATCH 223/271] Correction de bugs d'affichage --- src/piecesEchiquier/Fou.java | 8 +++---- src/piecesEchiquier/Reine.java | 14 ++++++------ src/piecesEchiquier/Roi.java | 39 +++++++++++++++++----------------- src/piecesEchiquier/Tour.java | 8 +++---- 4 files changed, 35 insertions(+), 34 deletions(-) diff --git a/src/piecesEchiquier/Fou.java b/src/piecesEchiquier/Fou.java index d227735..424ae2f 100755 --- a/src/piecesEchiquier/Fou.java +++ b/src/piecesEchiquier/Fou.java @@ -26,7 +26,7 @@ public class Fou extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()-i][this.getPosition().getX()-i-1].getNom().equals("..")) ) { - if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi, on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -41,7 +41,7 @@ public class Fou extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()+i][this.getPosition().getX()-i-1].getNom().equals("..")) ) { - if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") )) // si la pièce n'est pas un roi , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -58,7 +58,7 @@ public class Fou extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()-i][this.getPosition().getX()+i-1].getNom().equals("..")) ) { - if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi, on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -73,7 +73,7 @@ public class Fou extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()+i][this.getPosition().getX()+i-1].getNom().equals("..")) ) { - if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi , on affiche le message { System.err.println("Le chemin n'est pas libre."); } diff --git a/src/piecesEchiquier/Reine.java b/src/piecesEchiquier/Reine.java index 1ea06fb..157bcd7 100755 --- a/src/piecesEchiquier/Reine.java +++ b/src/piecesEchiquier/Reine.java @@ -29,7 +29,7 @@ public class Reine extends Piece { { if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equalsIgnoreCase(".."))) // SI case non vide { - if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -45,7 +45,7 @@ public class Reine extends Piece { { if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide { - if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") )) // si la pièce n'est pas un roi, on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -65,7 +65,7 @@ public class Reine extends Piece { { if (!(e.getEchiquier()[8-this.getPosition().getY()][i-1].getNom().equals(".."))) // SI case non vide { - if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -97,7 +97,7 @@ public class Reine extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()-i][this.getPosition().getX()-i-1].getNom().equals("..")) ) { - if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -112,7 +112,7 @@ public class Reine extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()+i][this.getPosition().getX()-i-1].getNom().equals("..")) ) { - if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi, on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -129,7 +129,7 @@ public class Reine extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()-i][this.getPosition().getX()+i-1].getNom().equals("..")) ) { - if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -144,7 +144,7 @@ public class Reine extends Piece { { if ( !(e.getEchiquier()[8-this.getPosition().getY()+i][this.getPosition().getX()+i-1].getNom().equals("..")) ) { - if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi, on affiche le message { System.err.println("Le chemin n'est pas libre."); } diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index bed0fdf..94c3989 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -49,7 +49,6 @@ public class Roi extends Piece { if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur()) && (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse { e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Roi(this.getCouleur(),this.getNom(),new Position(p.getPosition().getX(),p.getPosition().getY())); - //e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); if(e.getEchiquier()[i][j].metEnEchec(e,e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1]) == true) //si la piece est en echec sur la 2eme coor { return false; @@ -96,10 +95,12 @@ public class Roi extends Piece { { for (int j=0; j<8;j++) { - if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur())&& (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse + if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur()) && (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse { - if(e.getEchiquier()[i][j].metEnEchec(e,p) == true) //si la piece est en echec sur la 2eme coor + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Roi(this.getCouleur(),this.getNom(),new Position(p.getPosition().getX(),p.getPosition().getY())); + if(e.getEchiquier()[i][j].metEnEchec(e,e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1]) == true) //si la piece est en echec sur la 2eme coor { + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); return false; } } @@ -117,10 +118,12 @@ public class Roi extends Piece { { for (int j=0; j<8;j++) { - if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur())&& (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse + if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur()) && (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse { - if(e.getEchiquier()[i][j].metEnEchec(e,p) == true) //si la piece est en echec sur la 2eme coor + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Roi(this.getCouleur(),this.getNom(),new Position(p.getPosition().getX(),p.getPosition().getY())); + if(e.getEchiquier()[i][j].metEnEchec(e,e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1]) == true) //si la piece est en echec sur la 2eme coor { + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); return false; } } @@ -138,10 +141,12 @@ public class Roi extends Piece { { for (int j=0; j<8;j++) { - if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur())&& (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse + if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur()) && (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse { - if(e.getEchiquier()[i][j].metEnEchec(e,p) == true) //si la piece est en echec sur la 2eme coor + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Roi(this.getCouleur(),this.getNom(),new Position(p.getPosition().getX(),p.getPosition().getY())); + if(e.getEchiquier()[i][j].metEnEchec(e,e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1]) == true) //si la piece est en echec sur la 2eme coor { + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); return false; } } @@ -159,14 +164,6 @@ public class Roi extends Piece { { for (int j=0; j<8;j++) { - /* - if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur())&& (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse - { - if(e.getEchiquier()[i][j].metEnEchec(e,p) == true) //si la piece est en echec sur la 2eme coor - { - return false; - } - }*/ if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur()) && (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse { e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Roi(this.getCouleur(),this.getNom(),new Position(p.getPosition().getX(),p.getPosition().getY())); @@ -190,10 +187,12 @@ public class Roi extends Piece { { for (int j=0; j<8;j++) { - if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur())&& (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse + if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur()) && (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse { - if(e.getEchiquier()[i][j].metEnEchec(e,p) == true) //si la piece est en echec sur la 2eme coor + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Roi(this.getCouleur(),this.getNom(),new Position(p.getPosition().getX(),p.getPosition().getY())); + if(e.getEchiquier()[i][j].metEnEchec(e,e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1]) == true) //si la piece est en echec sur la 2eme coor { + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); return false; } } @@ -211,10 +210,12 @@ public class Roi extends Piece { { for (int j=0; j<8;j++) { - if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur())&& (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse + if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur()) && (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse { - if(e.getEchiquier()[i][j].metEnEchec(e,p) == true) //si la piece est en echec sur la 2eme coor + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Roi(this.getCouleur(),this.getNom(),new Position(p.getPosition().getX(),p.getPosition().getY())); + if(e.getEchiquier()[i][j].metEnEchec(e,e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1]) == true) //si la piece est en echec sur la 2eme coor { + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); return false; } } diff --git a/src/piecesEchiquier/Tour.java b/src/piecesEchiquier/Tour.java index f2909a9..e85684f 100755 --- a/src/piecesEchiquier/Tour.java +++ b/src/piecesEchiquier/Tour.java @@ -25,7 +25,7 @@ public class Tour extends Piece { { if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide { - if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") )) // si la pièce n'est pas un roi , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -41,7 +41,7 @@ public class Tour extends Piece { { if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide { - if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -61,7 +61,7 @@ public class Tour extends Piece { { if (!(e.getEchiquier()[8-this.getPosition().getY()][i-1].getNom().equals(".."))) // SI case non vide { - if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi , on affiche le message { System.err.println("Le chemin n'est pas libre."); } @@ -77,7 +77,7 @@ public class Tour extends Piece { { if (!(e.getEchiquier()[8-this.getPosition().getY()][i-1].getNom().equals(".."))) // SI case non vide { - if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB") || p.getNom().equalsIgnoreCase("..") )) // si la pièce n'est pas un roi et que c'est pas une case vide , on affiche le message + if(!(p.getNom().equalsIgnoreCase("KN") || p.getNom().equalsIgnoreCase("KB"))) // si la pièce n'est pas un roi, on affiche le message { System.err.println("Le chemin n'est pas libre."); } From 049d28441584b8dacf76032577ce031b4ab81ec0 Mon Sep 17 00:00:00 2001 From: Manon Date: Sat, 25 May 2019 15:27:05 +0200 Subject: [PATCH 224/271] =?UTF-8?q?roi=20modifi=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/piecesEchiquier/Roi.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index 94c3989..318ec73 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -26,13 +26,6 @@ public class Roi extends Piece { public boolean deplacable(Echiquier e, Piece p) // vérifie que le roi peut être déplacé { - if (e.estVide(p.getPosition()) == false) //si on mange une piece - { - if(!(p.getNom().equals("KN") || p.getNom().equals("KB"))) // si la pièce n'est pas un roi , on affiche le message - { - System.out.println("Vous avez mangé une pièce !"); - } - } //Côté droit if((p.getPosition().getX()) == (this.getPosition().getX()+1) && (p.getPosition().getY()) == (this.getPosition().getY()+1)) //Verifie deplacement y+1 vers le haut et x+1 vers la droite @@ -51,8 +44,10 @@ public class Roi extends Piece { e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Roi(this.getCouleur(),this.getNom(),new Position(p.getPosition().getX(),p.getPosition().getY())); if(e.getEchiquier()[i][j].metEnEchec(e,e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1]) == true) //si la piece est en echec sur la 2eme coor { + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); return false; } + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); } @@ -80,6 +75,7 @@ public class Roi extends Piece { e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); return false; } + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); } } } @@ -103,6 +99,7 @@ public class Roi extends Piece { e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); return false; } + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); } } } @@ -126,6 +123,7 @@ public class Roi extends Piece { e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); return false; } + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); } } } @@ -149,6 +147,7 @@ public class Roi extends Piece { e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); return false; } + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); } } } @@ -172,6 +171,7 @@ public class Roi extends Piece { e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); return false; } + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); } } } @@ -195,6 +195,7 @@ public class Roi extends Piece { e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); return false; } + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); } } } @@ -218,6 +219,7 @@ public class Roi extends Piece { e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); return false; } + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); } } } From 7a9eb406b132df4b8738317cc5ad45c30359e02b Mon Sep 17 00:00:00 2001 From: Johann Date: Sat, 25 May 2019 18:48:48 +0200 Subject: [PATCH 225/271] Reglage probleme confrontation de roi --- src/piecesEchiquier/Echiquier.java | 32 ++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 0adf8a9..2baf630 100644 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -145,8 +145,30 @@ public class Echiquier { return false; } - - else if (this.getEchiquier()[i][j].deplacable(this,this.getEchiquier()[k][l]) == false) // VERIFICATION AVEC FONCTION DEPLACABLE + if(this.getEchiquier()[i][j].getNom() == "KB" || this.getEchiquier()[i][j].getNom() == "KN") + { + if (this.getEchiquier()[i][j].getNom() == "KB") + { + if(this.getEchiquier()[k][l+1].getNom() == "KN" || this.getEchiquier()[k+1][l+1].getNom()=="KN" + || this.getEchiquier()[k-1][l+1].getNom()== "KN" || this.getEchiquier()[k-1][l].getNom()== "KN" || this.getEchiquier()[k+1][l].getNom()== "KN" + || this.getEchiquier()[k-1][l-1].getNom()== "KN" || this.getEchiquier()[k][l-1].getNom()== "KN" || this.getEchiquier()[k+1][l-1].getNom()== "KN") + { + System.err.println("Le roi ne peut pas se coller à l'autre roi"); + return false; + } + } + if (this.getEchiquier()[i][j].getNom() == "KN") + { + if(this.getEchiquier()[k][l+1].getNom() == "KB" || this.getEchiquier()[k+1][l+1].getNom()=="KB" + || this.getEchiquier()[k-1][l+1].getNom()== "KB" || this.getEchiquier()[k-1][l].getNom()== "KB" || this.getEchiquier()[k+1][l].getNom()== "KB" + || this.getEchiquier()[k-1][l-1].getNom()== "KB" || this.getEchiquier()[k][l-1].getNom()== "KB" || this.getEchiquier()[k+1][l-1].getNom()== "KB") + { + System.err.println("Le roi ne peut pas se coller à l'autre roi"); + return false; + } + } + } + if (this.getEchiquier()[i][j].deplacable(this,this.getEchiquier()[k][l]) == false) // VERIFICATION AVEC FONCTION DEPLACABLE { System.err.println("Déplacement impossible. Recommencez ! \n"); return false; @@ -155,6 +177,7 @@ public class Echiquier { else //PARTIE DEPLACEMENT DE LA PIECE { + System.out.println("Choix validé ! Déplacement en cours."); stock = new Position(l+1,8-k); //stockage de la pos destination stock2 = new Position(j+1,8-i); //stockage de la pos source @@ -163,7 +186,7 @@ public class Echiquier { this.getEchiquier()[i][j] = new Piece(stock2); //mettre piece vide dans la pos source, car la case est maintenant vide int p; int q; - Piece stockageRoi=null; + Piece stockageRoi=null; if( this.getEchiquier( )[k][l].getCouleur().equals("Blanc") ) { for ( p=0; p < codes.length;p++) //cherche le roi noir dans la matrice { @@ -189,7 +212,8 @@ public class Echiquier { } } } - this.getEchiquier()[k][l].metEnEchec(this,stockageRoi); //Verifie si le roi sera en echec + + this.getEchiquier()[k][l].metEnEchec(this,stockageRoi); //Verifie si le roi sera en echec return true; } } From 7bafc81c5d55bb190ae08131797eb12428637060 Mon Sep 17 00:00:00 2001 From: Johann Date: Sat, 25 May 2019 21:08:50 +0200 Subject: [PATCH 226/271] Ajout boolean dans piece --- src/piecesEchiquier/Echiquier.java | 2 +- src/piecesEchiquier/Piece.java | 21 ++++++++++++++++++++- src/visuel/main.java | 10 ++-------- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 2baf630..37a35f9 100644 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -145,7 +145,7 @@ public class Echiquier { return false; } - if(this.getEchiquier()[i][j].getNom() == "KB" || this.getEchiquier()[i][j].getNom() == "KN") + if(this.getEchiquier()[i][j].getNom() == "KB" || this.getEchiquier()[i][j].getNom() == "KN") //test si le roi ne se colle pas à un autre roi { if (this.getEchiquier()[i][j].getNom() == "KB") { diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index d9359dc..0c0d80d 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -9,7 +9,9 @@ public class Piece { private Position position; private Position ini; private boolean verif = false; + private boolean roiEchec=false; + //CONSTRUCTEURS public Piece() { @@ -104,9 +106,26 @@ public class Piece { if(this.deplacable(e,p) == true) //1er cas : la pièce se deplace une seconde fois (pas vraiment) et verifie qu'elle tombe sur la position du roi (soit noir, soit blanc selon la couleur de la pièce) { System.out.println("Le roi est en échec"); + roiEchec=true; return true; } - + roiEchec=false; return false; } + + public boolean isVerif() { + return verif; + } + + public void setVerif(boolean verif) { + this.verif = verif; + } + + public boolean isRoiEchec() { + return roiEchec; + } + + public void setRoiEchec(boolean roiEchec) { + this.roiEchec = roiEchec; + } } diff --git a/src/visuel/main.java b/src/visuel/main.java index 534a093..44f78bd 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -37,8 +37,7 @@ public class main { //déclaration des variables de déplacement String A; //coordonées de départ - String B; //coordonées d'arrivée - + String B; //coordonées d'arrivée //déclaration de l'échiquier Echiquier e = new Echiquier(); @@ -100,17 +99,12 @@ public class main { do { System.out.println( "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); + A = sc.nextLine(); System.out.println( "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); B = sc.nextLine(); - } while (e.verificationMouvement(j1, A, B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées - /*if (e.getRoiN1().enEchec(e,j2) && e.getRoiN1().enEchecEtMat(e,j2)) - { - System.out.println("Le joueur 2 est echec et mat, il a perdu !"); - jeu = false; - }*/ //REAFFICHAGE ECHIQUIER System.out.println(e.toString()); From 48e9fe0f23b9426856fda6e4f61b583a881e32b1 Mon Sep 17 00:00:00 2001 From: Manon Date: Sat, 25 May 2019 21:52:52 +0200 Subject: [PATCH 227/271] forcer le roi a bouger quand en echec --- src/piecesEchiquier/Piece.java | 4 ++-- src/visuel/main.java | 32 +++++++++++++++++++++++++------- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java index 0c0d80d..86682a8 100755 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -106,10 +106,10 @@ public class Piece { if(this.deplacable(e,p) == true) //1er cas : la pièce se deplace une seconde fois (pas vraiment) et verifie qu'elle tombe sur la position du roi (soit noir, soit blanc selon la couleur de la pièce) { System.out.println("Le roi est en échec"); - roiEchec=true; + p.roiEchec=true; return true; } - roiEchec=false; + p.roiEchec=false; return false; } diff --git a/src/visuel/main.java b/src/visuel/main.java index 44f78bd..7a93d26 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -37,7 +37,8 @@ public class main { //déclaration des variables de déplacement String A; //coordonées de départ - String B; //coordonées d'arrivée + String B; //coordonées d'arrivée + //déclaration de l'échiquier Echiquier e = new Echiquier(); @@ -97,14 +98,30 @@ public class main { System.out.println("\n" + "Tour de " + j1.getNom() + "\n"); do { - System.out.println( - "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); + if (e.getRoiB1().isRoiEchec() == true) + { + System.out.println( + "Comme votre roi est en echec la piec e a bouger est forcement cette derniere. Ou voulez vous la poser ?\n"); + A = e.getCodes()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]; + B = sc.nextLine(); + } + else { + System.out.println( + "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); + A = sc.nextLine(); + System.out.println( + "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); + B = sc.nextLine(); + } + - A = sc.nextLine(); - System.out.println( - "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); - B = sc.nextLine(); + } while (e.verificationMouvement(j1, A, B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées + /*if (e.getRoiN1().enEchec(e,j2) && e.getRoiN1().enEchecEtMat(e,j2)) + { + System.out.println("Le joueur 2 est echec et mat, il a perdu !"); + jeu = false; + }*/ //REAFFICHAGE ECHIQUIER System.out.println(e.toString()); @@ -115,6 +132,7 @@ public class main { do { System.out.println( "Quelle piece voulez-vous deplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); + A = sc.nextLine(); System.out.println( From 540c7fbd303d2f1b80d8b01ad5f2da4404b41ffb Mon Sep 17 00:00:00 2001 From: Johann Date: Sun, 26 May 2019 15:14:35 +0200 Subject: [PATCH 228/271] =?UTF-8?q?Correction=20mouvement=20cavalier=20+?= =?UTF-8?q?=20echec=20et=20mat=20(pas=20compl=C3=A8tement)=20fini?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/piecesEchiquier/Cavalier.java | 2 +- src/piecesEchiquier/Echiquier.java | 1 - src/piecesEchiquier/Roi.java | 19 ++++++++++++++ src/visuel/main.java | 42 +++++++++++++++++++----------- 4 files changed, 47 insertions(+), 17 deletions(-) diff --git a/src/piecesEchiquier/Cavalier.java b/src/piecesEchiquier/Cavalier.java index 67c2a76..925d899 100755 --- a/src/piecesEchiquier/Cavalier.java +++ b/src/piecesEchiquier/Cavalier.java @@ -78,7 +78,7 @@ public class Cavalier extends Piece { } } - if((p.getPosition().getX()) == (this.getPosition().getX()-2) && (p.getPosition().getY()) == (this.getPosition().getY()-1)) //Verifie deplacement y+1 vers le haut et x-2 vers la gauche + if((p.getPosition().getX()) == (this.getPosition().getX()-2) && (p.getPosition().getY()) == (this.getPosition().getY()+1)) //Verifie deplacement y+1 vers le haut et x-2 vers la gauche { if(p.getCouleur()!=this.getCouleur()) { diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 37a35f9..1602071 100644 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -177,7 +177,6 @@ public class Echiquier { else //PARTIE DEPLACEMENT DE LA PIECE { - System.out.println("Choix validé ! Déplacement en cours."); stock = new Position(l+1,8-k); //stockage de la pos destination stock2 = new Position(j+1,8-i); //stockage de la pos source diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index 318ec73..eded64b 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -229,6 +229,25 @@ public class Roi extends Piece { return false; } + public boolean enEchecEtMat(Echiquier e, Piece p) + { + if ( !((8-(p.getPosition().getY()+1 ) )<0 || 8-(p.getPosition().getY()-1 )>7 || (p.getPosition().getX()-2 )<0 || (p.getPosition().getX() )>7)) //verifie que le roi n'est pas dans un coin + { + if (this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-1]) == false //verifie que si le roi ne peut pas de deplacer autour de lui + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1]) ==false + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()]) == false + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()]) == false + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()]) == false + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-2]) == false + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == false + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-2]) == false) + { + return true; + } + } + return false; + } + } diff --git a/src/visuel/main.java b/src/visuel/main.java index 7a93d26..879516b 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -101,7 +101,7 @@ public class main { if (e.getRoiB1().isRoiEchec() == true) { System.out.println( - "Comme votre roi est en echec la piec e a bouger est forcement cette derniere. Ou voulez vous la poser ?\n"); + "Comme votre roi est en echec la piece a bouger est forcement cette derniere. Ou voulez vous la poser ?\n"); A = e.getCodes()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]; B = sc.nextLine(); } @@ -128,26 +128,38 @@ public class main { // JOUEUR2 System.out.println("Tour de " + j2.getNom() + "\n"); - if (jeu == true) { do { - System.out.println( - "Quelle piece voulez-vous deplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); - - A = sc.nextLine(); - - System.out.println( - "À quel endroit la poser ? Donnez le code correspondant à l'endroit où la poser la pièce.\n"); - B = sc.nextLine(); + if (e.getRoiN1().isRoiEchec() == true) + { + System.out.println( + "Comme votre roi est en echec la piece a bouger est forcement cette derniere. Ou voulez vous la poser ?\n"); + A = e.getCodes()[8-e.getRoiN1().getPosition().getY()][e.getRoiN1().getPosition().getX()-1]; + B = sc.nextLine(); + } + else { + System.out.println( + "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); + A = sc.nextLine(); + System.out.println( + "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); + B = sc.nextLine(); + } } while (e.verificationMouvement(j2, A, B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées - } - /*if (e.getRoiB1().enEchec(e,j1) && e.getRoiN1().enEchecEtMat(e,j1)) + if (e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true || //si un des 2 roi est en echecetmmat + e.getRoiN1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiN1().getPosition().getY()][e.getRoiN1().getPosition().getX()-1]) == true) { - System.out.println("Le joueur 1 est echec et mat, il a perdu !"); + if (e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true ) //si cest le roi blanc + { + System.out.println("Le joueur 1 "+ j1.getNom() +" est echec et mat, il a perdu !"); + } + if (e.getRoiN1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiN1().getPosition().getY()][e.getRoiN1().getPosition().getX()-1]) == true )//si c'est le roi noir + { + System.out.println("Le joueur 2 " + j2.getNom() +" est echec et mat, il a perdu !"); + } jeu = false; - }*/ - //jeu = false; + } } while (jeu == true); From 147c23fa98bba98ded5cfa56b8584715296b367a Mon Sep 17 00:00:00 2001 From: Manon Date: Sun, 26 May 2019 16:08:09 +0200 Subject: [PATCH 229/271] changements main et autre --- src/piecesEchiquier/Echiquier.java | 5 +++- src/piecesEchiquier/Piece.java | 2 +- src/piecesEchiquier/Roi.java | 16 +++++------ src/visuel/main.java | 46 +++++++++++++++++++++--------- 4 files changed, 46 insertions(+), 23 deletions(-) mode change 100755 => 100644 src/piecesEchiquier/Piece.java diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 1602071..1e866de 100644 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -212,7 +212,10 @@ public class Echiquier { } } - this.getEchiquier()[k][l].metEnEchec(this,stockageRoi); //Verifie si le roi sera en echec + if (this.getEchiquier()[k][l].metEnEchec(this,stockageRoi) == true) //Verifie si le roi sera en echec + { + System.out.println("Le roi adverse est en échec"); + } return true; } } diff --git a/src/piecesEchiquier/Piece.java b/src/piecesEchiquier/Piece.java old mode 100755 new mode 100644 index 86682a8..0a0e7b7 --- a/src/piecesEchiquier/Piece.java +++ b/src/piecesEchiquier/Piece.java @@ -105,7 +105,7 @@ public class Piece { { if(this.deplacable(e,p) == true) //1er cas : la pièce se deplace une seconde fois (pas vraiment) et verifie qu'elle tombe sur la position du roi (soit noir, soit blanc selon la couleur de la pièce) { - System.out.println("Le roi est en échec"); + p.roiEchec=true; return true; } diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index eded64b..2bdb559 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -233,14 +233,14 @@ public class Roi extends Piece { { if ( !((8-(p.getPosition().getY()+1 ) )<0 || 8-(p.getPosition().getY()-1 )>7 || (p.getPosition().getX()-2 )<0 || (p.getPosition().getX() )>7)) //verifie que le roi n'est pas dans un coin { - if (this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-1]) == false //verifie que si le roi ne peut pas de deplacer autour de lui - && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1]) ==false - && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()]) == false - && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()]) == false - && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()]) == false - && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-2]) == false - && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == false - && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-2]) == false) + if (this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-1]) == false //HAUT verifie que si le roi ne peut pas de deplacer autour de lui + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1]) ==false // BAS + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()]) == false // HAUT DROITE + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()]) == false // DROITE + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()]) == false // BAS DROITE + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-2]) == false // HAUT GAUCHE + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == false // GAUCHE + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-2]) == false) // BAS GAUCHE { return true; } diff --git a/src/visuel/main.java b/src/visuel/main.java index 879516b..e758f0e 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -116,16 +116,30 @@ public class main { - } while (e.verificationMouvement(j1, A, B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées - /*if (e.getRoiN1().enEchec(e,j2) && e.getRoiN1().enEchecEtMat(e,j2)) + } while (e.verificationMouvement(j1, A, B) != true ); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées + + if (e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true || //si un des 2 roi est en echecetmmat + e.getRoiN1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiN1().getPosition().getY()][e.getRoiN1().getPosition().getX()-1]) == true) { - System.out.println("Le joueur 2 est echec et mat, il a perdu !"); + if (e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true ) //si cest le roi blanc + { + System.out.println("Le joueur 1 "+ j1.getNom() +" est echec et mat, il a perdu !"); + } + if (e.getRoiN1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiN1().getPosition().getY()][e.getRoiN1().getPosition().getX()-1]) == true )//si c'est le roi noir + { + System.out.println("Le joueur 2 " + j2.getNom() +" est echec et mat, il a perdu !"); + } jeu = false; - }*/ + } + + + if(jeu == true) + { //REAFFICHAGE ECHIQUIER System.out.println(e.toString()); // JOUEUR2 + System.out.println("Tour de " + j2.getNom() + "\n"); do { @@ -146,7 +160,9 @@ public class main { } } while (e.verificationMouvement(j2, A, B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées - + + + // VERIF ECHECMAT if (e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true || //si un des 2 roi est en echecetmmat e.getRoiN1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiN1().getPosition().getY()][e.getRoiN1().getPosition().getX()-1]) == true) { @@ -160,13 +176,13 @@ public class main { } jeu = false; } - - } while (jeu == true); - + }; + }while(jeu == true); System.out.println("Voulez vous redémarrer une nouvelle partie ? (oui / non)"); choixRedem = sc.nextLine(); - if(choixRedem.equalsIgnoreCase("oui")) { + if(choixRedem.equalsIgnoreCase("oui")) + { jeu = true; System.out.println("Voulez vous conserver les mêmes paramètres de partie ? (oui / non)"); @@ -178,14 +194,18 @@ public class main { choixPartie = 1; } - } else if(choixRedem.equalsIgnoreCase("non")) { + } + else if(choixRedem.equalsIgnoreCase("non")) { System.out.println("Merci d'avoir joué à notre jeu d'échec - Team G00D3NOUGHT - CC BY !"); - } else { + choixPartie = 0; + } + else { System.err.println("Une erreur s'est produite, les joueurs ont mal saisie des entrées lors de la fin du programme."); } - } + System.err.println("Une erreur s'est produite, les joueurs ont mal saisie des entrées lors du démarrage du programme. (nom de joueur vide OU un mauvais numéro de configuration par exemple)"); sc.close(); - } + } + } } From a98370fecf1c3a1fe5db9364fb9c836f3f9c7b34 Mon Sep 17 00:00:00 2001 From: Johann Date: Sun, 26 May 2019 16:19:18 +0200 Subject: [PATCH 230/271] Traitement roi sur bordure echiquier methode echecEtMat() --- src/piecesEchiquier/Roi.java | 45 ++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index 2bdb559..0ac92e5 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -244,6 +244,51 @@ public class Roi extends Piece { { return true; } + } + if ( (8-(p.getPosition().getY()+1 ) )<0) //traite le cas où le roi se trouve sur la bordure du haut de l'échiquier + { + if (this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == false // gauche verifie si le roi ne peut pas de deplacer autour de lui + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()]) ==false //droite + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1]) == false // bas + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-2]) == false // bas gauche + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()]) == false) // bas droite + { + return true; + } + } + + if ( 8-(p.getPosition().getY()-1 )>7) //traite le cas où le roi se trouve sur la bordure du bas de l'échiquier + { + if (this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == false // gauche verifie si le roi ne peut pas de deplacer autour de lui + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()]) ==false // droite + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-1]) == false // haut + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-2]) == false // haut gauche + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()]) == false) // haut droite + { + return true; + } + } + if ( (p.getPosition().getX()-2)<0) //traite le cas où le roi se trouve sur la bordure gauche de l'échiquier + { + if (this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-1]) == false //haut verifie si le roi ne peut pas de deplacer autour de lui + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1]) ==false // bas + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()]) == false // droite + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()]) == false //haut droite + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()]) == false) //bas droite + { + return true; + } + } + if ( (p.getPosition().getX())>7) //traite le cas où le roi se trouve sur la bordure droite de l'échiquier + { + if (this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-1]) == false //haut verifie si le roi ne peut pas de deplacer autour de lui + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1]) ==false //bas + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == false //gauche + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-2]) == false //bas gauche + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-2]) == false) //haut gauche + { + return true; + } } return false; } From 9018918816fb5bcb3d5d4937773ce43dc97547e7 Mon Sep 17 00:00:00 2001 From: Johann Date: Sun, 26 May 2019 16:37:17 +0200 Subject: [PATCH 231/271] Rajout condition pour methode echecetmat --- src/piecesEchiquier/Roi.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index 0ac92e5..9133ea8 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -245,6 +245,8 @@ public class Roi extends Piece { return true; } } + if(!(e.getEchiquier()[0][4].getNom() == "KN" && p.aBouge()==false)) + { if ( (8-(p.getPosition().getY()+1 ) )<0) //traite le cas où le roi se trouve sur la bordure du haut de l'échiquier { if (this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == false // gauche verifie si le roi ne peut pas de deplacer autour de lui @@ -256,7 +258,9 @@ public class Roi extends Piece { return true; } } - + } + if(!(e.getEchiquier()[7][4].getNom() == "KB" && p.aBouge()==false)) + { if ( 8-(p.getPosition().getY()-1 )>7) //traite le cas où le roi se trouve sur la bordure du bas de l'échiquier { if (this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == false // gauche verifie si le roi ne peut pas de deplacer autour de lui @@ -268,6 +272,7 @@ public class Roi extends Piece { return true; } } + } if ( (p.getPosition().getX()-2)<0) //traite le cas où le roi se trouve sur la bordure gauche de l'échiquier { if (this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-1]) == false //haut verifie si le roi ne peut pas de deplacer autour de lui From 212fc8892a66d16385269a25576d857294803b8a Mon Sep 17 00:00:00 2001 From: Manon Date: Sun, 26 May 2019 18:12:34 +0200 Subject: [PATCH 232/271] main : recommencer qui fonctionne --- src/visuel/main.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/visuel/main.java b/src/visuel/main.java index e758f0e..5f8d9ba 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -40,10 +40,10 @@ public class main { String B; //coordonées d'arrivée //déclaration de l'échiquier - Echiquier e = new Echiquier(); + while (choixPartie >= 1) { - + Echiquier e = new Echiquier(); while (choixPartie == 1) { System.out.println( @@ -176,7 +176,7 @@ public class main { } jeu = false; } - }; + } }while(jeu == true); System.out.println("Voulez vous redémarrer une nouvelle partie ? (oui / non)"); choixRedem = sc.nextLine(); @@ -198,14 +198,15 @@ public class main { else if(choixRedem.equalsIgnoreCase("non")) { System.out.println("Merci d'avoir joué à notre jeu d'échec - Team G00D3NOUGHT - CC BY !"); choixPartie = 0; + sc.close(); } else { System.err.println("Une erreur s'est produite, les joueurs ont mal saisie des entrées lors de la fin du programme."); } - + } System.err.println("Une erreur s'est produite, les joueurs ont mal saisie des entrées lors du démarrage du programme. (nom de joueur vide OU un mauvais numéro de configuration par exemple)"); - sc.close(); + + } - } } From f3d625bdb630080fb7ad2d8a520d9d76f01cbfe9 Mon Sep 17 00:00:00 2001 From: Manon Date: Sun, 26 May 2019 18:23:47 +0200 Subject: [PATCH 233/271] roi non fini --- src/piecesEchiquier/Roi.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index 9133ea8..f3aaf61 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -245,7 +245,17 @@ public class Roi extends Piece { return true; } } - if(!(e.getEchiquier()[0][4].getNom() == "KN" && p.aBouge()==false)) + if (this.getPosition().getX() == 5 && this.getPosition().getY() == 8 && e.getEchiquier()[0][4].getNom().equals("KN")) + { + if(!(e.getEchiquier()[0][4].getNom().equals("KN") && p.aBouge()==false) || ( e.getEchiquier()[0][4].getNom().equals("KN") && ( + e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1].getNom().equals("..") || + e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()].getNom().equals("..") || + e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()].getNom().equals("..") || + e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2].getNom().equals("..") || + e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-2].getNom().equals("..") + )) + ) + { if ( (8-(p.getPosition().getY()+1 ) )<0) //traite le cas où le roi se trouve sur la bordure du haut de l'échiquier { @@ -259,6 +269,7 @@ public class Roi extends Piece { } } } + } if(!(e.getEchiquier()[7][4].getNom() == "KB" && p.aBouge()==false)) { if ( 8-(p.getPosition().getY()-1 )>7) //traite le cas où le roi se trouve sur la bordure du bas de l'échiquier From 577ddb3002397ccb5c3953c6cff6cd361b8ac03d Mon Sep 17 00:00:00 2001 From: Manon Date: Sun, 26 May 2019 18:48:07 +0200 Subject: [PATCH 234/271] =?UTF-8?q?roi=20modifi=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/piecesEchiquier/Roi.java | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index f3aaf61..944a544 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -256,21 +256,31 @@ public class Roi extends Piece { )) ) - { - if ( (8-(p.getPosition().getY()+1 ) )<0) //traite le cas où le roi se trouve sur la bordure du haut de l'échiquier { - if (this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == false // gauche verifie si le roi ne peut pas de deplacer autour de lui - && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()]) ==false //droite - && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1]) == false // bas - && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-2]) == false // bas gauche - && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()]) == false) // bas droite + if ( (8-(p.getPosition().getY()+1 ) )<0 ) //traite le cas où le roi se trouve sur la bordure du haut de l'échiquier { - return true; + if (this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == false // gauche verifie si le roi ne peut pas de deplacer autour de lui + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()]) ==false //droite + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1]) == false // bas + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-2]) == false // bas gauche + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()]) == false) // bas droite + { + return true; + } } - } - } + } } - if(!(e.getEchiquier()[7][4].getNom() == "KB" && p.aBouge()==false)) + /* + if (this.getPosition().getX() == 5 && this.getPosition().getY() == 1 && e.getEchiquier()[7][4].getNom().equals("KB")) + { + if(!(e.getEchiquier()[7][4].getNom() == "KB" && p.aBouge()==false) || (e.getEchiquier()[0][4].getNom().equals("KB") && ( + e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-1].getNom().equals("..") || // HAUT + + )) + ) + + + { if ( 8-(p.getPosition().getY()-1 )>7) //traite le cas où le roi se trouve sur la bordure du bas de l'échiquier { @@ -284,6 +294,7 @@ public class Roi extends Piece { } } } + }*/ if ( (p.getPosition().getX()-2)<0) //traite le cas où le roi se trouve sur la bordure gauche de l'échiquier { if (this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-1]) == false //haut verifie si le roi ne peut pas de deplacer autour de lui From 46768248e89fd7eda8748f898099db6898fe736e Mon Sep 17 00:00:00 2001 From: Manon Date: Sun, 26 May 2019 18:50:16 +0200 Subject: [PATCH 235/271] =?UTF-8?q?roi=20modifi=C3=A9(2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/piecesEchiquier/Roi.java | 39 ++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index 944a544..7527a6d 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -245,7 +245,29 @@ public class Roi extends Piece { return true; } } - if (this.getPosition().getX() == 5 && this.getPosition().getY() == 8 && e.getEchiquier()[0][4].getNom().equals("KN")) + + + + + + + if ( (8-(p.getPosition().getY()+1 ) )<0 ) //traite le cas où le roi se trouve sur la bordure du haut de l'échiquier + { + if (p.getNom().equals("KN") && p.aBouge()==false && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == false // gauche verifie si le roi ne peut pas de deplacer autour de lui + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()]) ==false //droite + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1]) == false // bas + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-2]) == false // bas gauche + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()]) == false // bas droite + ) + { + return true; + } + } + + + + + /*if (this.getPosition().getX() == 5 && this.getPosition().getY() == 8 && e.getEchiquier()[0][4].getNom().equals("KN")) { if(!(e.getEchiquier()[0][4].getNom().equals("KN") && p.aBouge()==false) || ( e.getEchiquier()[0][4].getNom().equals("KN") && ( e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1].getNom().equals("..") || @@ -259,17 +281,23 @@ public class Roi extends Piece { { if ( (8-(p.getPosition().getY()+1 ) )<0 ) //traite le cas où le roi se trouve sur la bordure du haut de l'échiquier { - if (this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == false // gauche verifie si le roi ne peut pas de deplacer autour de lui + if (p.getNom().equals("KN") && p.aBouge()==false && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == false // gauche verifie si le roi ne peut pas de deplacer autour de lui && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()]) ==false //droite && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1]) == false // bas && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-2]) == false // bas gauche - && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()]) == false) // bas droite + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()]) == false // bas droite + ) { return true; } } } - } + }*/ + + + + + /* if (this.getPosition().getX() == 5 && this.getPosition().getY() == 1 && e.getEchiquier()[7][4].getNom().equals("KB")) { @@ -295,6 +323,9 @@ public class Roi extends Piece { } } }*/ + + + if ( (p.getPosition().getX()-2)<0) //traite le cas où le roi se trouve sur la bordure gauche de l'échiquier { if (this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-1]) == false //haut verifie si le roi ne peut pas de deplacer autour de lui From 61bebd9bb7f7cbdbe434444869562b9effeba74b Mon Sep 17 00:00:00 2001 From: Johann Date: Sun, 26 May 2019 18:54:36 +0200 Subject: [PATCH 236/271] =?UTF-8?q?roi=20modifi=C3=A9=20(3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/piecesEchiquier/Roi.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index 7527a6d..db94517 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -260,7 +260,7 @@ public class Roi extends Piece { && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()]) == false // bas droite ) { - return true; + return false; } } From 6b164274f60a0322762d8de49152bd5369eca043 Mon Sep 17 00:00:00 2001 From: Manon Date: Sun, 26 May 2019 20:05:51 +0200 Subject: [PATCH 237/271] echecEtMat bords fonctionnels (en theorie) --- src/piecesEchiquier/Roi.java | 86 +++++++++++++----------------------- 1 file changed, 31 insertions(+), 55 deletions(-) diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index db94517..787dec5 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -246,70 +246,50 @@ public class Roi extends Piece { } } - - - - - - if ( (8-(p.getPosition().getY()+1 ) )<0 ) //traite le cas où le roi se trouve sur la bordure du haut de l'échiquier + if (p.getNom().equals("KN")) { - if (p.getNom().equals("KN") && p.aBouge()==false && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == false // gauche verifie si le roi ne peut pas de deplacer autour de lui - && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()]) ==false //droite - && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1]) == false // bas - && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-2]) == false // bas gauche - && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()]) == false // bas droite - ) + if ( p.aBouge()==false && + (e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == false) // gauche verifie si le roi ne peut pas de deplacer autour de lui + || (e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()]) == false ) //droite + || (e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1]) == false) // bas + || (e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-2].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-2]) == false) // bas gauche + || (e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()]) == false) // bas droite + ) { - return false; - } + return true; + } } - - - - /*if (this.getPosition().getX() == 5 && this.getPosition().getY() == 8 && e.getEchiquier()[0][4].getNom().equals("KN")) - { - if(!(e.getEchiquier()[0][4].getNom().equals("KN") && p.aBouge()==false) || ( e.getEchiquier()[0][4].getNom().equals("KN") && ( - e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1].getNom().equals("..") || - e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()].getNom().equals("..") || - e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()].getNom().equals("..") || - e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2].getNom().equals("..") || - e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-2].getNom().equals("..") - )) - ) - + if(p.getNom() == "KN" && p.aBouge()==true) { - if ( (8-(p.getPosition().getY()+1 ) )<0 ) //traite le cas où le roi se trouve sur la bordure du haut de l'échiquier + if ( (8-(p.getPosition().getY()+1 ) )<0) //traite le cas où le roi se trouve sur la bordure du haut de l'échiquier { - if (p.getNom().equals("KN") && p.aBouge()==false && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == false // gauche verifie si le roi ne peut pas de deplacer autour de lui + if (this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == false // gauche verifie si le roi ne peut pas de deplacer autour de lui && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()]) ==false //droite && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1]) == false // bas && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-2]) == false // bas gauche - && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()]) == false // bas droite - ) + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()]) == false) // bas droite { return true; } } - } - }*/ + } - - - - - /* - if (this.getPosition().getX() == 5 && this.getPosition().getY() == 1 && e.getEchiquier()[7][4].getNom().equals("KB")) - { - if(!(e.getEchiquier()[7][4].getNom() == "KB" && p.aBouge()==false) || (e.getEchiquier()[0][4].getNom().equals("KB") && ( - e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-1].getNom().equals("..") || // HAUT - - )) - ) - - - - { + if (p.getNom().equals("KB")) + { + if ( p.aBouge()==false && + (e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == false) // gauche verifie si le roi ne peut pas de deplacer autour de lui + || (e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()]) == false ) //droite + || (e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-1].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-1]) == false) // HAUT + || (e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-2].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-2]) == false) // HAUT gauche + || (e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()]) == false) // HAUT droite + ) + { + return true; + } + } + if(p.getNom() == "KB" && p.aBouge()==true) + { if ( 8-(p.getPosition().getY()-1 )>7) //traite le cas où le roi se trouve sur la bordure du bas de l'échiquier { if (this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == false // gauche verifie si le roi ne peut pas de deplacer autour de lui @@ -321,11 +301,7 @@ public class Roi extends Piece { return true; } } - } - }*/ - - - + } if ( (p.getPosition().getX()-2)<0) //traite le cas où le roi se trouve sur la bordure gauche de l'échiquier { if (this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-1]) == false //haut verifie si le roi ne peut pas de deplacer autour de lui From c6cb45d952117632e1d965f8740b3a978295ac91 Mon Sep 17 00:00:00 2001 From: Manon Date: Sun, 26 May 2019 20:49:55 +0200 Subject: [PATCH 238/271] bordure haute et basse finie --- src/piecesEchiquier/Roi.java | 60 ++++++++++++++++++++++++------------ 1 file changed, 41 insertions(+), 19 deletions(-) diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index 787dec5..13c0291 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -248,18 +248,28 @@ public class Roi extends Piece { if (p.getNom().equals("KN")) { - if ( p.aBouge()==false && - (e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == false) // gauche verifie si le roi ne peut pas de deplacer autour de lui - || (e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()]) == false ) //droite - || (e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1]) == false) // bas - || (e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-2].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-2]) == false) // bas gauche - || (e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()]) == false) // bas droite + if (e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2].getCouleur() == "Noir" && //gauche + e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()].getCouleur() == "Noir" && //droite + e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1].getCouleur() == "Noir" && //bas + e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-2].getCouleur() == "Noir" && //bas gauche + e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()].getCouleur() == "Noir" // bas droite + ) + { + return false; + }else if ( p.aBouge()==false && + + (e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == true) // gauche verifie si le roi ne peut pas de deplacer autour de lui + || (e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()]) == true ) //droite + || (e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1]) == true) // bas + || (e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-2].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-2]) == true) // bas gauche + || (e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()]) == true) // bas droite ) { + return false; + } else return true; - } } - + if(p.getNom() == "KN" && p.aBouge()==true) { if ( (8-(p.getPosition().getY()+1 ) )<0) //traite le cas où le roi se trouve sur la bordure du haut de l'échiquier @@ -277,31 +287,43 @@ public class Roi extends Piece { if (p.getNom().equals("KB")) { - if ( p.aBouge()==false && - (e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == false) // gauche verifie si le roi ne peut pas de deplacer autour de lui - || (e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()]) == false ) //droite - || (e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-1].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-1]) == false) // HAUT - || (e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-2].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-2]) == false) // HAUT gauche - || (e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()]) == false) // HAUT droite + if (e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2].getCouleur() == "Blanc" && //gauche + e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()].getCouleur() == "Blanc" && //droite + e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-1].getCouleur() == "Blanc" && //haut + e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-2].getCouleur() == "Blanc" && //haut gauche + e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()].getCouleur() == "Blanc" // haut droite + ) + { + return false; + }else if ( p.aBouge()==false && + + (e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == true) // gauche verifie si le roi ne peut pas de deplacer autour de lui + || (e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()]) == true ) //droite + || (e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-1].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-1]) == true) // haut + || (e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-2].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-2]) == true) // haut gauche + || (e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()]) == true) // haut droite ) { + return false; + } else return true; - } } + if(p.getNom() == "KB" && p.aBouge()==true) { - if ( 8-(p.getPosition().getY()-1 )>7) //traite le cas où le roi se trouve sur la bordure du bas de l'échiquier + if ( (8-(p.getPosition().getY()+1 ) )<0) //traite le cas où le roi se trouve sur la bordure du haut de l'échiquier { if (this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == false // gauche verifie si le roi ne peut pas de deplacer autour de lui - && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()]) ==false // droite - && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-1]) == false // haut + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()]) ==false //droite + && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-1]) == false // haut && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-2]) == false // haut gauche && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()]) == false) // haut droite { return true; - } + } } } + if ( (p.getPosition().getX()-2)<0) //traite le cas où le roi se trouve sur la bordure gauche de l'échiquier { if (this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()+1)][p.getPosition().getX()-1]) == false //haut verifie si le roi ne peut pas de deplacer autour de lui From a72d62e678e9b6aecbf93ce92d58435efac1fa3d Mon Sep 17 00:00:00 2001 From: Manon Date: Sun, 26 May 2019 22:51:09 +0200 Subject: [PATCH 239/271] piece qui protege le roi en cas d'echec et mat sur le point d'arriver --- src/visuel/main.java | 80 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 64 insertions(+), 16 deletions(-) diff --git a/src/visuel/main.java b/src/visuel/main.java index 5f8d9ba..eba4348 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -97,27 +97,60 @@ public class main { System.out.println("\n" + "Tour de " + j1.getNom() + "\n"); - do { + //do { if (e.getRoiB1().isRoiEchec() == true) { - System.out.println( - "Comme votre roi est en echec la piece a bouger est forcement cette derniere. Ou voulez vous la poser ?\n"); - A = e.getCodes()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]; - B = sc.nextLine(); + do + { + System.out.println( + "Comme votre roi est en echec la piece a bouger est forcement cette derniere. Ou voulez vous la poser ?\n"); + A = e.getCodes()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]; + B = sc.nextLine(); + + }while(e.verificationMouvement(j1, A, B) != true ); + + } + else if (e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true) + { + do + { + System.out.println( + "Votre roi est en echec et mat temporaire. Bougez une piece pour le sauver si vous pouvez. Sinon bougez une piece au hasard.\n"); + System.out.println( + "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); + A = sc.nextLine(); + System.out.println( + "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); + B = sc.nextLine(); + }while(e.verificationMouvement(j1, A, B) != true && e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true); } else { + do { System.out.println( "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); A = sc.nextLine(); System.out.println( "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); B = sc.nextLine(); + }while(e.verificationMouvement(j1, A, B) != true ); } - } while (e.verificationMouvement(j1, A, B) != true ); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées + //} while (e.verificationMouvement(j1, A, B) != true ); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées + + if (e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true) // si roi blanc en echec etmat + { + if (e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true ) //si cest le roi blanc + { + System.out.println("Le joueur 1 "+ j1.getNom() +" est echec et mat, il a perdu !"); + } + jeu = false; + } + + + /* if (e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true || //si un des 2 roi est en echecetmmat e.getRoiN1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiN1().getPosition().getY()][e.getRoiN1().getPosition().getX()-1]) == true) { @@ -130,7 +163,7 @@ public class main { System.out.println("Le joueur 2 " + j2.getNom() +" est echec et mat, il a perdu !"); } jeu = false; - } + }*/ if(jeu == true) @@ -142,34 +175,48 @@ public class main { System.out.println("Tour de " + j2.getNom() + "\n"); - do { - if (e.getRoiN1().isRoiEchec() == true) + //do { + if (e.getRoiN1().isRoiEchec()) { + do { System.out.println( "Comme votre roi est en echec la piece a bouger est forcement cette derniere. Ou voulez vous la poser ?\n"); A = e.getCodes()[8-e.getRoiN1().getPosition().getY()][e.getRoiN1().getPosition().getX()-1]; B = sc.nextLine(); + }while(e.verificationMouvement(j2, A, B) != true ); + } + + else if (e.getRoiN1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiN1().getPosition().getY()][e.getRoiN1().getPosition().getX()-1]) == true) + { + do + { + System.out.println( + "Votre roi est en echec et mat temporaire. Bougez une piece pour le sauver si vous pouvez. Sinon bougez une piece au hasard.\n"); + System.out.println( + "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); + A = sc.nextLine(); + System.out.println( + "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); + B = sc.nextLine(); + }while(e.verificationMouvement(j2, A, B) != true && e.getRoiN1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiN1().getPosition().getY()][e.getRoiN1().getPosition().getX()-1]) == true); } else { + do { System.out.println( "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); A = sc.nextLine(); System.out.println( "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); B = sc.nextLine(); + }while(e.verificationMouvement(j2, A, B) != true ); } - } while (e.verificationMouvement(j2, A, B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées + //} while (e.verificationMouvement(j2, A, B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées // VERIF ECHECMAT - if (e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true || //si un des 2 roi est en echecetmmat - e.getRoiN1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiN1().getPosition().getY()][e.getRoiN1().getPosition().getX()-1]) == true) + if (e.getRoiN1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiN1().getPosition().getY()][e.getRoiN1().getPosition().getX()-1]) == true) // si roi noir en echec et mat { - if (e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true ) //si cest le roi blanc - { - System.out.println("Le joueur 1 "+ j1.getNom() +" est echec et mat, il a perdu !"); - } if (e.getRoiN1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiN1().getPosition().getY()][e.getRoiN1().getPosition().getX()-1]) == true )//si c'est le roi noir { System.out.println("Le joueur 2 " + j2.getNom() +" est echec et mat, il a perdu !"); @@ -199,6 +246,7 @@ public class main { System.out.println("Merci d'avoir joué à notre jeu d'échec - Team G00D3NOUGHT - CC BY !"); choixPartie = 0; sc.close(); + System.exit (0); } else { System.err.println("Une erreur s'est produite, les joueurs ont mal saisie des entrées lors de la fin du programme."); From c07f66204305359de0ed35bab6397bd27ee178f3 Mon Sep 17 00:00:00 2001 From: Johann Date: Sun, 26 May 2019 22:56:10 +0200 Subject: [PATCH 240/271] =?UTF-8?q?Deplacement=20roi=20sur=20bordure=20hau?= =?UTF-8?q?t=20et=20droite=20regl=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/piecesEchiquier/Echiquier.java | 8 ++++++++ src/piecesEchiquier/Roi.java | 19 +++++++++++++++---- src/visuel/main.java | 24 +----------------------- 3 files changed, 24 insertions(+), 27 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 1e866de..5664fa6 100644 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -149,6 +149,9 @@ public class Echiquier { { if (this.getEchiquier()[i][j].getNom() == "KB") { + if(!(this.getEchiquier()[k+1][l].getPosition().getX()>7 ||this.getEchiquier()[k][l+1].getPosition().getY()>7 ||this.getEchiquier()[k-1][l].getPosition().getX()<0 + ||this.getEchiquier()[k][l-1].getPosition().getY()<0))//test le cas ou le roi se deplace sur une bordure + { if(this.getEchiquier()[k][l+1].getNom() == "KN" || this.getEchiquier()[k+1][l+1].getNom()=="KN" || this.getEchiquier()[k-1][l+1].getNom()== "KN" || this.getEchiquier()[k-1][l].getNom()== "KN" || this.getEchiquier()[k+1][l].getNom()== "KN" || this.getEchiquier()[k-1][l-1].getNom()== "KN" || this.getEchiquier()[k][l-1].getNom()== "KN" || this.getEchiquier()[k+1][l-1].getNom()== "KN") @@ -156,9 +159,13 @@ public class Echiquier { System.err.println("Le roi ne peut pas se coller à l'autre roi"); return false; } + } } if (this.getEchiquier()[i][j].getNom() == "KN") { + if(!(this.getEchiquier()[k+1][l].getPosition().getX()>7 ||this.getEchiquier()[k][l+1].getPosition().getY()>7 ||this.getEchiquier()[k-1][l].getPosition().getX()<0 + ||this.getEchiquier()[k][l-1].getPosition().getY()<0))//test le cas ou le roi se deplace sur une bordure + { if(this.getEchiquier()[k][l+1].getNom() == "KB" || this.getEchiquier()[k+1][l+1].getNom()=="KB" || this.getEchiquier()[k-1][l+1].getNom()== "KB" || this.getEchiquier()[k-1][l].getNom()== "KB" || this.getEchiquier()[k+1][l].getNom()== "KB" || this.getEchiquier()[k-1][l-1].getNom()== "KB" || this.getEchiquier()[k][l-1].getNom()== "KB" || this.getEchiquier()[k+1][l-1].getNom()== "KB") @@ -167,6 +174,7 @@ public class Echiquier { return false; } } + } } if (this.getEchiquier()[i][j].deplacable(this,this.getEchiquier()[k][l]) == false) // VERIFICATION AVEC FONCTION DEPLACABLE { diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index 13c0291..2e29b89 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -248,6 +248,7 @@ public class Roi extends Piece { if (p.getNom().equals("KN")) { + if (e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2].getCouleur() == "Noir" && //gauche e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()].getCouleur() == "Noir" && //droite e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1].getCouleur() == "Noir" && //bas @@ -256,8 +257,11 @@ public class Roi extends Piece { ) { return false; - }else if ( p.aBouge()==false && - + } + if(!(p.getPosition().getX()>7 ||p.getPosition().getY()>7 ||p.getPosition().getX()<0 + ||p.getPosition().getY()<0))//verifie que ca va pas chercher une case vide si elle est en dehors de la matrice + { + if( p.aBouge()==false && (e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == true) // gauche verifie si le roi ne peut pas de deplacer autour de lui || (e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()]) == true ) //droite || (e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY()-1)][p.getPosition().getX()-1]) == true) // bas @@ -269,6 +273,7 @@ public class Roi extends Piece { } else return true; } + } if(p.getNom() == "KN" && p.aBouge()==true) { @@ -295,7 +300,11 @@ public class Roi extends Piece { ) { return false; - }else if ( p.aBouge()==false && + } + if(!(p.getPosition().getX()>7 ||p.getPosition().getY()>7 ||p.getPosition().getX()<0 + ||p.getPosition().getY()<0)) //verifie que ca va pas chercher une case vide si elle est en dehors de la matrice + { + if ( p.aBouge()==false && (e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()-2]) == true) // gauche verifie si le roi ne peut pas de deplacer autour de lui || (e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()].getNom().equals("..") && this.deplacable(e, e.getEchiquier()[8-(p.getPosition().getY())][p.getPosition().getX()]) == true ) //droite @@ -305,7 +314,9 @@ public class Roi extends Piece { ) { return false; - } else + } + } + else return true; } diff --git a/src/visuel/main.java b/src/visuel/main.java index eba4348..7090bd6 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -147,25 +147,7 @@ public class main { System.out.println("Le joueur 1 "+ j1.getNom() +" est echec et mat, il a perdu !"); } jeu = false; - } - - - /* - if (e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true || //si un des 2 roi est en echecetmmat - e.getRoiN1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiN1().getPosition().getY()][e.getRoiN1().getPosition().getX()-1]) == true) - { - if (e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true ) //si cest le roi blanc - { - System.out.println("Le joueur 1 "+ j1.getNom() +" est echec et mat, il a perdu !"); - } - if (e.getRoiN1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiN1().getPosition().getY()][e.getRoiN1().getPosition().getX()-1]) == true )//si c'est le roi noir - { - System.out.println("Le joueur 2 " + j2.getNom() +" est echec et mat, il a perdu !"); - } - jeu = false; - }*/ - - + } if(jeu == true) { //REAFFICHAGE ECHIQUIER @@ -252,9 +234,5 @@ public class main { System.err.println("Une erreur s'est produite, les joueurs ont mal saisie des entrées lors de la fin du programme."); } } - System.err.println("Une erreur s'est produite, les joueurs ont mal saisie des entrées lors du démarrage du programme. (nom de joueur vide OU un mauvais numéro de configuration par exemple)"); - - - } } From e5e6b444e36540f7994036b69677e98868e605fd Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Mon, 27 May 2019 08:38:17 +0200 Subject: [PATCH 241/271] fix player order choose --- src/visuel/main.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/visuel/main.java b/src/visuel/main.java index 7090bd6..39b05a1 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -31,6 +31,8 @@ public class main { System.out.println("Entrez le nom du joueur 2 : "); Joueur j2 = new Joueur(sc.nextLine(), null); + Joueur jTemp = new Joueur(null, null); // ce joueur sert de mémoire pour le choix de l'odre de jeu + if(j1.getNom().equalsIgnoreCase("") || j2.getNom().equalsIgnoreCase("") || j1.getNom().equalsIgnoreCase(null) || j2.getNom().equalsIgnoreCase(null)) { choixPartie = -1; } @@ -78,6 +80,16 @@ public class main { j1.setCouleur("Noir"); System.out.println("Le joueur " + j2.getNom() + " jouera les blancs et le joueur " + j1.getNom() + " jouera les noirs."); + + jTemp.setNom(j1.getNom()); + jTemp.setCouleur(j1.getCouleur()); + + j1.setCouleur(j2.getCouleur()); + j1.setNom(j2.getNom()); + + j2.setNom(jTemp.getNom()); + j2.setCouleur(jTemp.getCouleur()); + choixPartie = 2; } else { From 886b41df00177d57f0943e80ba7f3664b6273e78 Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Mon, 27 May 2019 08:38:37 +0200 Subject: [PATCH 242/271] change A1, a2 ... to a1, a2 ... --- src/piecesEchiquier/Echiquier.java | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 5664fa6..4215cf7 100644 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -7,14 +7,14 @@ public class Echiquier { //ATTRIBUTS private String[][] codes = //pour définir quel code correspond a quel case { - {"A8","B8","C8","D8","E8","F8","G8","H8"}, - {"A7","B7","C7","D7","E7","F7","G7","H7"}, - {"A6","B6","C6","D6","E6","F6","G6","H6"}, - {"A5","B5","C5","D5","E5","F5","G5","H5"}, - {"A4","B4","C4","D4","E4","F4","G4","H4"}, - {"A3","B3","C3","D3","E3","F3","G3","H3"}, - {"A2","B2","C2","D2","E2","F2","G2","H2"}, - {"A1","B1","C1","D1","E1","F1","G1","H1"} + {"a8","b8","c8","d8","e8","f8","g8","h8"}, + {"a7","b7","c7","d7","e7","f7","g7","h7"}, + {"a6","b6","c6","d6","e6","f6","g6","h6"}, + {"a5","b5","c5","d5","e5","f5","g5","h5"}, + {"a4","b4","c4","d4","e4","f4","g4","h4"}, + {"a3","b3","c3","d3","e3","f3","g3","h3"}, + {"a2","b2","c2","d2","e2","f2","g2","h2"}, + {"a1","b1","c1","d1","e1","f1","g1","h1"} }; //declaration de toutes les pieces de l'echiquier @@ -100,7 +100,9 @@ public class Echiquier { public boolean verificationMouvement(Joueur J, String A, String B) // FONCTION TRADUCTION, VERIF + DEPLACEMENTS SI POSSIBLE {// String A = coordonées de A; String B = coordonées de B - B.toUpperCase(); + //A.toLowerCase(); + //B.toLowerCase(); + int i = -1; int j = -1; int k; From 63ad481dfe8995d9312fa83ecf33b8193211d89e Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Mon, 27 May 2019 08:44:00 +0200 Subject: [PATCH 243/271] ajout affichage joueur actif --- src/visuel/main.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/visuel/main.java b/src/visuel/main.java index 39b05a1..c43835e 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -107,7 +107,7 @@ public class main { /*JOUEUR1*/ - System.out.println("\n" + "Tour de " + j1.getNom() + "\n"); + System.out.println("\n" + "Tour de " + j1.getNom() + "(" + j1.getCouleur() + ")\n"); //do { if (e.getRoiB1().isRoiEchec() == true) @@ -167,7 +167,7 @@ public class main { // JOUEUR2 - System.out.println("Tour de " + j2.getNom() + "\n"); + System.out.println("Tour de " + j2.getNom() + "(" + j2.getCouleur() + ")\n"); //do { if (e.getRoiN1().isRoiEchec()) From 14070bcd63960e9513c4da755d57904fcf70adb3 Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Mon, 27 May 2019 08:44:33 +0200 Subject: [PATCH 244/271] remis les toLowerCase() --- src/piecesEchiquier/Echiquier.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 4215cf7..a2ec3a0 100644 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -100,8 +100,8 @@ public class Echiquier { public boolean verificationMouvement(Joueur J, String A, String B) // FONCTION TRADUCTION, VERIF + DEPLACEMENTS SI POSSIBLE {// String A = coordonées de A; String B = coordonées de B - //A.toLowerCase(); - //B.toLowerCase(); + A.toLowerCase(); + B.toLowerCase(); int i = -1; int j = -1; From 5ebb276f7b8c4d66d9a4f96908f9c002ff5de82a Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Mon, 27 May 2019 08:51:26 +0200 Subject: [PATCH 245/271] force lower case after scan --- src/visuel/main.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/visuel/main.java b/src/visuel/main.java index c43835e..cd15964 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -141,9 +141,11 @@ public class main { System.out.println( "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); A = sc.nextLine(); + A.toLowerCase(); System.out.println( "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); B = sc.nextLine(); + B.toLowerCase(); }while(e.verificationMouvement(j1, A, B) != true ); } From 7a4ddb3efd6b50f4e5a8a6ff8ea4c6d4436b4266 Mon Sep 17 00:00:00 2001 From: Jose Srifi Date: Mon, 27 May 2019 10:07:24 +0200 Subject: [PATCH 246/271] push pour changement pc --- src/visuel/main.java | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/src/visuel/main.java b/src/visuel/main.java index cd15964..722752d 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -41,9 +41,17 @@ public class main { String A; //coordonées de départ String B; //coordonées d'arrivée + char cA = 'y';//pour recup le premier char + char cB = 'z'; + + char pA = '8';//pour recup le 2e char + char pB = '9'; + + String sA;//pour concatener + String sB; + + //déclaration de l'échiquier - - while (choixPartie >= 1) { Echiquier e = new Echiquier(); while (choixPartie == 1) { @@ -141,11 +149,26 @@ public class main { System.out.println( "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); A = sc.nextLine(); - A.toLowerCase(); + + cA = A.charAt(0); + pA = A.charAt(1); + + System.out.println(cA); + char cAl = Character.toLowerCase(cA); + System.out.println(cAl); + + //pas finis + + System.out.println(A); + System.out.println( "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); B = sc.nextLine(); B.toLowerCase(); + + B.charAt(0); + System.out.println(cB); + }while(e.verificationMouvement(j1, A, B) != true ); } From 7bb796d37bd276bec6e7d490935a77fdf7ba34aa Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 27 May 2019 10:23:19 +0200 Subject: [PATCH 247/271] le bug bouger autre faction REGLE !!!!!!!!!! --- src/visuel/main.java | 42 ++++++++++++++++++------------------------ 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/src/visuel/main.java b/src/visuel/main.java index 722752d..3639298 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -42,13 +42,8 @@ public class main { String B; //coordonées d'arrivée char cA = 'y';//pour recup le premier char - char cB = 'z'; - char pA = '8';//pour recup le 2e char - char pB = '9'; - String sA;//pour concatener - String sB; //déclaration de l'échiquier @@ -152,24 +147,15 @@ public class main { cA = A.charAt(0); pA = A.charAt(1); - - System.out.println(cA); char cAl = Character.toLowerCase(cA); - System.out.println(cAl); - - //pas finis - - System.out.println(A); + sA = "" + cAl + pA; System.out.println( "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); B = sc.nextLine(); - B.toLowerCase(); + - B.charAt(0); - System.out.println(cB); - - }while(e.verificationMouvement(j1, A, B) != true ); + }while(e.verificationMouvement(j1, sA, B) != true ); } @@ -221,13 +207,21 @@ public class main { } else { do { - System.out.println( - "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); - A = sc.nextLine(); - System.out.println( - "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); - B = sc.nextLine(); - }while(e.verificationMouvement(j2, A, B) != true ); + System.out.println( + "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); + A = sc.nextLine(); + + cA = A.charAt(0); + pA = A.charAt(1); + char cAl = Character.toLowerCase(cA); + sA = "" + cAl + pA; + + System.out.println( + "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); + B = sc.nextLine(); + + + }while(e.verificationMouvement(j2, sA, B) != true ); } //} while (e.verificationMouvement(j2, A, B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées From 67f776aaca5ff5d42ec2bcb33ca4fd7e946f7594 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 27 May 2019 11:43:48 +0200 Subject: [PATCH 248/271] update readme --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 7f981be..7e00550 100755 --- a/README.md +++ b/README.md @@ -22,8 +22,16 @@ Pour fonctionner, ce projet necessite d'avoir un [java JDK SE 1.8](https://www.o ## Installation [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#sommaire) +Il faut dans une premier temp cloner ce repo git en utilisant la commande suivante : + +``` +git clone https://git-iutinfo.unice.fr/good3nought/echesstria.git +``` + Pour installer le projet, vous pouvez lancer le fichier [echesstria.jar](#) ou bien compiler le projet en créant un nouveau projet sous [Eclipse](https://www.eclipse.org/downloads/) ou [Intellij](https://www.jetbrains.com/idea/download/#section=windows). +Vous pouvez également, si vous êtes sur windows, exécuter la commande suivante en spécifiant la version de java entre \[crochets\] pour compiler le projet : + ## Commandes [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#sommaire) From f04febb1e75b3651adaf8714c6e9d9653d17eac7 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 27 May 2019 12:11:55 +0200 Subject: [PATCH 249/271] add img for readme --- imgs/git.PNG | Bin 0 -> 17531 bytes imgs/gitalab.PNG | Bin 0 -> 30389 bytes imgs/java.PNG | Bin 0 -> 23691 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 imgs/git.PNG create mode 100644 imgs/gitalab.PNG create mode 100644 imgs/java.PNG diff --git a/imgs/git.PNG b/imgs/git.PNG new file mode 100644 index 0000000000000000000000000000000000000000..eba7846dd955a3011de683309a8e38c8f6ab80bd GIT binary patch literal 17531 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 literal 0 HcmV?d00001 diff --git a/imgs/gitalab.PNG b/imgs/gitalab.PNG new file mode 100644 index 0000000000000000000000000000000000000000..7cedfaa277443fdd5b21c6175021902e77cadda5 GIT binary patch literal 30389 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 literal 0 HcmV?d00001 diff --git a/imgs/java.PNG b/imgs/java.PNG new file mode 100644 index 0000000000000000000000000000000000000000..43dfeee27ffcd000c883b7a3f4bfaba0bee2de4d GIT binary patch literal 23691 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 literal 0 HcmV?d00001 From d898bf7bc1f175277a2b8aed3231bafc5bd8c055 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 27 May 2019 12:12:57 +0200 Subject: [PATCH 250/271] add logo license --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7e00550..852ede3 100755 --- a/README.md +++ b/README.md @@ -91,4 +91,6 @@ Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.cl ## License [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#sommaire) -[![logo](https://licensebuttons.net/l/by/4.0/88x31.png)](https://creativecommons.org/licenses/by/4.0/) This project is available under the terms of the [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/) (or check [LICENSE.md](https://git-iutinfo.unice.fr/good3nought/echesstria/blob/master/LICENSE.md)). \ No newline at end of file +[![logo](https://licensebuttons.net/l/by/4.0/88x31.png)](https://creativecommons.org/licenses/by/4.0/) This project is available under the terms of the [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/) (or check [LICENSE.md](https://git-iutinfo.unice.fr/good3nought/echesstria/blob/master/LICENSE.md)). + +![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/gitalab.PNG) ![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/git.PNG) ![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/java.PNG) \ No newline at end of file From 5f05b24bc1ff8f83b410e51503ebb0c05eaf96b0 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 27 May 2019 12:13:58 +0200 Subject: [PATCH 251/271] changes imgs --- imgs/git.PNG | Bin 17531 -> 12657 bytes imgs/gitalab.PNG | Bin 30389 -> 16298 bytes imgs/java.PNG | Bin 23691 -> 22506 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/imgs/git.PNG b/imgs/git.PNG index eba7846dd955a3011de683309a8e38c8f6ab80bd..611f07467964f582eeae8cf1baa10ef59d11b656 100644 GIT binary patch literal 12657 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 D9WYXD literal 17531 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 diff --git a/imgs/gitalab.PNG b/imgs/gitalab.PNG index 7cedfaa277443fdd5b21c6175021902e77cadda5..ed8f0e408505f7cc8925ee1a244ec6b75656069c 100644 GIT binary patch literal 16298 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 diff --git a/imgs/java.PNG b/imgs/java.PNG index 43dfeee27ffcd000c883b7a3f4bfaba0bee2de4d..73a59a9541cf0c761766c674a39f5a1b582be01f 100644 GIT binary patch literal 22506 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 a0Q^736c^7PiM9a%0000|#yPgzHe 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 From 542be549ca0d2d6f3efbb635ba9811d188a58813 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 27 May 2019 12:18:07 +0200 Subject: [PATCH 252/271] change resolution --- imgs/git.PNG | Bin 12657 -> 8939 bytes imgs/gitalab.PNG | Bin 16298 -> 12073 bytes imgs/java.PNG | Bin 22506 -> 15660 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/imgs/git.PNG b/imgs/git.PNG index 611f07467964f582eeae8cf1baa10ef59d11b656..d902d07cb59aaa64ab23d3297e2ea79194485315 100644 GIT binary patch literal 8939 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 D9WYXD diff --git a/imgs/gitalab.PNG b/imgs/gitalab.PNG index ed8f0e408505f7cc8925ee1a244ec6b75656069c..29019b8152b60423c966ae034b80e29fc1141c72 100644 GIT binary patch literal 12073 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 T1G2Sa00000NkvXXu0mjfqqKh9 literal 16298 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 literal 22506 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 a0Q^736c^7PiM9a%0000 Date: Mon, 27 May 2019 12:18:12 +0200 Subject: [PATCH 253/271] update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 852ede3..5247f5f 100755 --- a/README.md +++ b/README.md @@ -93,4 +93,4 @@ Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.cl [![logo](https://licensebuttons.net/l/by/4.0/88x31.png)](https://creativecommons.org/licenses/by/4.0/) This project is available under the terms of the [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/) (or check [LICENSE.md](https://git-iutinfo.unice.fr/good3nought/echesstria/blob/master/LICENSE.md)). -![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/gitalab.PNG) ![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/git.PNG) ![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/java.PNG) \ No newline at end of file +[![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/gitalab.PNG)](https://gitlab.com/gitlab-org) [![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/git.PNG)](https://git-scm.com/) [![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/java.PNG)](https://www.java.com/fr/download/) \ No newline at end of file From db149dacbec4f1a8850d497837cb4b458dee9e59 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 27 May 2019 12:19:02 +0200 Subject: [PATCH 254/271] touch readme --- README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README.md b/README.md index 5247f5f..7f45624 100755 --- a/README.md +++ b/README.md @@ -28,10 +28,7 @@ Il faut dans une premier temp cloner ce repo git en utilisant la commande suivan git clone https://git-iutinfo.unice.fr/good3nought/echesstria.git ``` -Pour installer le projet, vous pouvez lancer le fichier [echesstria.jar](#) ou bien compiler le projet en créant un nouveau projet sous [Eclipse](https://www.eclipse.org/downloads/) ou [Intellij](https://www.jetbrains.com/idea/download/#section=windows). - -Vous pouvez également, si vous êtes sur windows, exécuter la commande suivante en spécifiant la version de java entre \[crochets\] pour compiler le projet : - +Pour installer le projet, vous pouvez lancer le fichier [echesstria.jar](#) ou bien compiler le projet en créant un nouveau projet sous [Eclipse](https://www.eclipse.org/downloads/) ou [Intellij](https://www.jetbrains.com/idea/download/#section=windows). ## Commandes [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#sommaire) From de599ec856dddb8fe2027f43fb32615e8af4065a Mon Sep 17 00:00:00 2001 From: Chiara Date: Mon, 27 May 2019 17:36:46 +0200 Subject: [PATCH 255/271] testes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit a compléter si méthose echec et mat fini a temps --- src/visuel/main.java | 2 +- tests/testGeneraux.java | 47 +++++++++++++++++++++++++++++++++++++++-- tests/testPiece.java | 9 ++++---- 3 files changed, 51 insertions(+), 7 deletions(-) diff --git a/src/visuel/main.java b/src/visuel/main.java index 3639298..88e0173 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -101,7 +101,7 @@ public class main { } System.out.println("Bienvenue " + j1.getNom() + " et " + j2.getNom() - + " dans e-Chesstria ! Le jeu d'echec équestrien sur console fait entièrement en java !\n"); + + " dans e-Chesstria ! Le jeu d'echec sur console fait entièrement en java !\n"); do { diff --git a/tests/testGeneraux.java b/tests/testGeneraux.java index ce44b18..08bc56f 100644 --- a/tests/testGeneraux.java +++ b/tests/testGeneraux.java @@ -1,5 +1,6 @@ import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -9,11 +10,20 @@ import piecesEchiquier.*; class testGeneraux { private Echiquier e; private Joueur jb; + private Joueur jn; @BeforeEach public void initialisation() { e = new Echiquier(); jb = new Joueur("Joueur Blanc","Blanc"); + jn = new Joueur("Joueur Noir", "Noir"); + } + + @AfterEach + public void netoyage () { + e = null; + jb = null; + jn = null; } @Test @@ -32,8 +42,6 @@ class testGeneraux { //verificationMouvement fait dans test piece //estVide - /*Position p = new Position(3, 6); - assertTrue(e.estVide(p));*/ for (int x = 1; x < 9; x++) { for (int y = 3; y < 7; y++) { Position p = new Position(x, y); @@ -53,6 +61,12 @@ class testGeneraux { assertFalse(e.estVide(p)); } } + + e.verificationMouvement(jb, "e2", "e4"); + Position p1 = new Position (5, 4); + assertFalse(e.estVide(p1)); + Position p2 = new Position (5, 2); + assertTrue(e.estVide(p2)); } @Test @@ -63,4 +77,33 @@ class testGeneraux { assertFalse(e.getCavalierB1().aBouge()); } + + /*@Test + public void testEchec () { + e.verificationMouvement(jb, "e2", "e4"); + e.verificationMouvement(jn, "e7", "e5"); + e.verificationMouvement(jb, "d1", "g4"); + e.verificationMouvement(jn, "f7", "f5"); + e.verificationMouvement(jb, "g4", "g6"); + assertTrue(e.getRoiN1().metEnEchec(e, e.getReineB1())); + } + + @Test + public void testEchecEtMat () { + System.out.println("prout"); + e.verificationMouvement(jb, "e2", "e4"); + e.verificationMouvement(jn, "e7", "e5"); + e.verificationMouvement(jb, "g1", "h3"); + e.verificationMouvement(jn, "b8", "c6"); + e.verificationMouvement(jb, "e1", "c4"); + e.verificationMouvement(jn, "d7", "d6"); + e.verificationMouvement(jb, "b1", "c3"); + e.verificationMouvement(jn, "c8", "g4"); + e.verificationMouvement(jb, "e3", "d5"); + e.verificationMouvement(jn, "g4", "d1"); + e.verificationMouvement(jb, "c4", "e7"); + e.verificationMouvement(jn, "e8", "e7"); + e.verificationMouvement(jb, "c3", "d5"); + assertTrue(e.getRoiN1().enEchecEtMat(e, e.getCavalierB1())); + }*/ } diff --git a/tests/testPiece.java b/tests/testPiece.java index bdfa56d..c0c48cc 100644 --- a/tests/testPiece.java +++ b/tests/testPiece.java @@ -98,12 +98,13 @@ class testPiece { assertEquals(4, e.getFouB1().getPosition().getX()); assertEquals(4, e.getFouB1().getPosition().getY()); - e.verificationMouvement(jb, "D4", "B3"); //d?placement bas / gauche - assertEquals(2, e.getFouB1().getPosition().getX()); + e.verificationMouvement(jb, "D4", "C3"); //d?placement bas / gauche + System.out.println(e.toString()); + assertEquals(3, e.getFouB1().getPosition().getX()); assertEquals(3, e.getFouB1().getPosition().getY()); - e.verificationMouvement(jb, "B3", "f7"); //verif mangeage - assertEquals(6, e.getFouB1().getPosition().getX()); + e.verificationMouvement(jb, "C3", "g7"); //verif mangeage + assertEquals(7, e.getFouB1().getPosition().getX()); assertEquals(7, e.getFouB1().getPosition().getY()); } From a72681e9b69b063305eefb320e6ddba90451f112 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 27 May 2019 17:56:31 +0200 Subject: [PATCH 256/271] add table of pieces --- README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7f45624..910231d 100755 --- a/README.md +++ b/README.md @@ -71,6 +71,19 @@ S’il n’y parvient pas, son roi est alors « échec et mat ». Vous remportez Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.club/regles/) ou visitez les [crédits](https://git-iutinfo.unice.fr/good3nought/echesstria#cr%C3%A9dits-revenir-au-sommaire). +Vous trouverez ici un tableau résumant les pièces : + +| Pièce | Lettre | +|:---------:|:--------:| +|Cavalier | C | +|Fou | F | +|Pion | P | +|Reine | Q | +|Roi | K | +|Tour | T | + +La lettre ``B`` signifie qu'une pièce est de couleur blanche et la lettre ``N`` signifie qu'une pièce est de couleur noire. + ## Crédits [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#sommaire) | Peronne ou Source | Role | @@ -83,7 +96,6 @@ Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.cl | | | [PRITCHARD Adam](https://github.com/adam-p) | [Utilisation](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) & syntaxe Markdown | | [http://www.echecs.club](http://www.echecs.club) | [Règles](http://www.echecs.club/regles/) du jeu d'échec | -| | ## License [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#sommaire) From d276b330f449f7dc4a5fd64446d4edf8bfe5fe6a Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 27 May 2019 18:15:14 +0200 Subject: [PATCH 257/271] add a javadoc --- tests/testGeneraux.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/testGeneraux.java b/tests/testGeneraux.java index 08bc56f..021e546 100644 --- a/tests/testGeneraux.java +++ b/tests/testGeneraux.java @@ -7,6 +7,20 @@ import org.junit.jupiter.api.Test; import joueurs.Joueur; import piecesEchiquier.*; +/* + * @AfterEach is used to signal that the annotated method should beexecuted after each @Test, @RepeatedTest, @ParameterizedTest, @TestFactory,and @TestTemplate method in the current test class. + * org.junit.jupiter.api.AfterEach; + * + * @BeforeEach is used to signal that the annotated method should beexecuted before each @Test, @RepeatedTest, @ParameterizedTest, @TestFactory,and @TestTemplate method in the current test class. + * org.junit.jupiter.api.BeforeEach; + * + * @Test is used to signal that the annotated method is a test method. + * @Test methods must not be private or staticand must not return a value. + * @Test methods may optionally declare parameters to beresolved by ParameterResolvers. + * @Test may also be used as a meta-annotation in order to createa custom composed annotation that inherits the semantics of @Test. + * org.junit.jupiter.api.Test; + * */ + class testGeneraux { private Echiquier e; private Joueur jb; From abea788fa540da34df1b9dbf85064a0aa4058218 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 27 May 2019 18:16:34 +0200 Subject: [PATCH 258/271] add a javadoc --- tests/testPiece.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/testPiece.java b/tests/testPiece.java index c0c48cc..22e470d 100644 --- a/tests/testPiece.java +++ b/tests/testPiece.java @@ -6,6 +6,21 @@ import org.junit.jupiter.api.Test; import joueurs.Joueur; import piecesEchiquier.*; +/* + * @AfterEach is used to signal that the annotated method should beexecuted after each @Test, @RepeatedTest, @ParameterizedTest, @TestFactory,and @TestTemplate method in the current test class. + * org.junit.jupiter.api.AfterEach; + * + * @BeforeEach is used to signal that the annotated method should beexecuted before each @Test, @RepeatedTest, @ParameterizedTest, @TestFactory,and @TestTemplate method in the current test class. + * org.junit.jupiter.api.BeforeEach; + * + * @Test is used to signal that the annotated method is a test method. + * @Test methods must not be private or staticand must not return a value. + * @Test methods may optionally declare parameters to beresolved by ParameterResolvers. + * @Test may also be used as a meta-annotation in order to createa custom composed annotation that inherits the semantics of @Test. + * org.junit.jupiter.api.Test; + * */ + + class testPiece { private Echiquier e; private Joueur jb; From f28aee00c6cd86e279f3405f01097aa2819a467a Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 27 May 2019 18:17:49 +0200 Subject: [PATCH 259/271] fix table align --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 910231d..ac21808 100755 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.cl Vous trouverez ici un tableau résumant les pièces : -| Pièce | Lettre | +| Pièce | Lettre | |:---------:|:--------:| |Cavalier | C | |Fou | F | From 46be27bc9a64d33993242237be333d5a98230902 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 27 May 2019 18:19:03 +0200 Subject: [PATCH 260/271] fix other table align --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ac21808..7c9afee 100755 --- a/README.md +++ b/README.md @@ -86,7 +86,7 @@ La lettre ``B`` signifie qu'une pièce est de couleur blanche et la lettre ``N`` ## Crédits [[revenir au sommaire]](https://git-iutinfo.unice.fr/good3nought/echesstria#sommaire) -| Peronne ou Source | Role | +| Peronne ou Source | Role | | :-------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------:| | [ALEXOVITZ Anthony](https://git-iutinfo.unice.fr/aa700867) | Conception et Développement | | [NOWICKI Johann](https://git-iutinfo.unice.fr/nj715143) | Conception et Développement | From ce6479aaaecaa20540b874ded390870ee9bc8496 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 27 May 2019 18:43:20 +0200 Subject: [PATCH 261/271] ajout javadoc --- src/visuel/main.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/visuel/main.java b/src/visuel/main.java index 88e0173..fa2a2ed 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -83,7 +83,9 @@ public class main { j1.setCouleur("Noir"); System.out.println("Le joueur " + j2.getNom() + " jouera les blancs et le joueur " + j1.getNom() + " jouera les noirs."); - + /* + * Alors ici on utilise un joueur temporaire pour faire passe le deuxième joueur en joueur numéro 1 + */ jTemp.setNom(j1.getNom()); jTemp.setCouleur(j1.getCouleur()); From 8a6a546a956fedf233379da3db05cc1178f31888 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 27 May 2019 18:56:48 +0200 Subject: [PATCH 262/271] add javadoc equalsignorecase --- src/piecesEchiquier/Echiquier.java | 47 +++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index a2ec3a0..63f90bc 100644 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -1,5 +1,43 @@ package piecesEchiquier; -//voir equalsIgnoreCase + + /* + * Dans cette classes et bien d'autres, nous utilsons la méthode equalsIgnoreCase, voici sa documentation + * + * Compares this {@code String} to another {@code String}, ignoring case + * considerations. Two strings are considered equal ignoring case if they + * are of the same length and corresponding characters in the two strings + * are equal ignoring case. + * + *

Two characters {@code c1} and {@code c2} are considered the same + * ignoring case if at least one of the following is true: + *

+ * + * @param anotherString + * The {@code String} to compare this {@code String} against + * + * @return {@code true} if the argument is not {@code null} and it + * represents an equivalent {@code String} ignoring case; {@code + * false} otherwise + * + * @see #equals(Object) + * + * public boolean equalsIgnoreCase(String anotherString) { + * return (this == anotherString) ? true + * : (anotherString != null) + * && (anotherString.value.length == value.length) + * && regionMatches(true, 0, anotherString, 0, value.length); + * } + */ + import joueurs.Joueur; public class Echiquier { @@ -100,6 +138,13 @@ public class Echiquier { public boolean verificationMouvement(Joueur J, String A, String B) // FONCTION TRADUCTION, VERIF + DEPLACEMENTS SI POSSIBLE {// String A = coordonées de A; String B = coordonées de B + + /** + * Converts all of the characters in this String to lowercase using the rules of the default locale. This is equivalent to calling toLowerCase(Locale.getDefault()). + * Note: This method is locale sensitive, and may produce unexpectedresults if used for strings that are intended to be interpreted localeindependently.Examples are programming language identifiers, protocol keys, and HTMLtags.For instance, "TITLE".toLowerCase() in a Turkish localereturns "t\u0131tle", where '\u0131' is theLATIN SMALL LETTER DOTLESS I character.To obtain correct results for locale insensitive strings, use toLowerCase(Locale.ROOT). + * + * Ceci est pour forcer le passage en minuscule au cas ou la méthode dans le main ne fonctionne pas + */ A.toLowerCase(); B.toLowerCase(); From c759e45dd0dbe2db6a4c6597f2226aefddf37e43 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 27 May 2019 18:56:58 +0200 Subject: [PATCH 263/271] ajout commentaires explications --- src/visuel/main.java | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/src/visuel/main.java b/src/visuel/main.java index fa2a2ed..fb3d832 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -143,18 +143,18 @@ public class main { } else { do { - System.out.println( - "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); - A = sc.nextLine(); - - cA = A.charAt(0); - pA = A.charAt(1); - char cAl = Character.toLowerCase(cA); - sA = "" + cAl + pA; - - System.out.println( - "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); - B = sc.nextLine(); + System.out.println( + "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); + A = sc.nextLine(); + + cA = A.charAt(0);//ici on récupère le premier caractère du String + pA = A.charAt(1);//ici on récupère le second caratère + char cAl = Character.toLowerCase(cA); //ici on convertis un 'A' en 'a' + sA = "" + cAl + pA; //ici on concatène dans un nouveau string le a transformé avec le chiffre récupéré. + + System.out.println( + "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); + B = sc.nextLine(); }while(e.verificationMouvement(j1, sA, B) != true ); @@ -213,10 +213,10 @@ public class main { "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); A = sc.nextLine(); - cA = A.charAt(0); - pA = A.charAt(1); - char cAl = Character.toLowerCase(cA); - sA = "" + cAl + pA; + cA = A.charAt(0);//ici on récupère le premier caractère du String + pA = A.charAt(1);//ici on récupère le second caratère + char cAl = Character.toLowerCase(cA); //ici on convertis un 'A' en 'a' + sA = "" + cAl + pA; //ici on concatène dans un nouveau string le a transformé avec le chiffre récupéré. System.out.println( "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); @@ -224,9 +224,7 @@ public class main { }while(e.verificationMouvement(j2, sA, B) != true ); - } - - //} while (e.verificationMouvement(j2, A, B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées + } // Tant que le mouvement n'est pas faisable on demande 2 coordonnées // VERIF ECHECMAT From 78d3cc2c774c9e2f9377a3b2c31a64ee69626d92 Mon Sep 17 00:00:00 2001 From: sj801446 Date: Mon, 27 May 2019 19:04:55 +0200 Subject: [PATCH 264/271] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7c9afee..dc880fd 100755 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ S’il n’y parvient pas, son roi est alors « échec et mat ». Vous remportez Pour plus d'informations sur les règles, visitez [ce site](http://www.echecs.club/regles/) ou visitez les [crédits](https://git-iutinfo.unice.fr/good3nought/echesstria#cr%C3%A9dits-revenir-au-sommaire). -Vous trouverez ici un tableau résumant les pièces : +### Vous trouverez ici un tableau résumant les pièces : | Pièce | Lettre | |:---------:|:--------:| From beff814bafbdc0033bae3c9225177209d959a168 Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 27 May 2019 19:09:30 +0200 Subject: [PATCH 265/271] fix error OOB when null string for joueur or posistions --- src/visuel/main.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/visuel/main.java b/src/visuel/main.java index fb3d832..a411151 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -27,9 +27,15 @@ public class main { // déclaration des joueurs System.out.println("Entrez le nom du joueur 1 : "); Joueur j1 = new Joueur(sc.nextLine(), null); + if(j1.getNom().isEmpty()) { + j1.setNom("Joueur Par défaut 1"); + } System.out.println("Entrez le nom du joueur 2 : "); Joueur j2 = new Joueur(sc.nextLine(), null); + if(j2.getNom().isEmpty()) { + j2.setNom("Joueur Par défaut 2"); + } Joueur jTemp = new Joueur(null, null); // ce joueur sert de mémoire pour le choix de l'odre de jeu @@ -146,6 +152,9 @@ public class main { System.out.println( "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); A = sc.nextLine(); + if(A.isEmpty()) { + A = "Z99"; + } cA = A.charAt(0);//ici on récupère le premier caractère du String pA = A.charAt(1);//ici on récupère le second caratère @@ -155,6 +164,9 @@ public class main { System.out.println( "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); B = sc.nextLine(); + if(B.isEmpty()) { + B = "Z99"; + } }while(e.verificationMouvement(j1, sA, B) != true ); From 6a2712948b98003c694f5cbd231c8604c473ab2c Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 27 May 2019 19:36:01 +0200 Subject: [PATCH 266/271] launch bat file --- launch.bat | 1 + 1 file changed, 1 insertion(+) create mode 100644 launch.bat diff --git a/launch.bat b/launch.bat new file mode 100644 index 0000000..56c22e6 --- /dev/null +++ b/launch.bat @@ -0,0 +1 @@ +java -jar echesstria.jar \ No newline at end of file From 79c49557f6aa76395a8fe1b84f6adecae60dfae9 Mon Sep 17 00:00:00 2001 From: Johann Date: Mon, 27 May 2019 19:59:40 +0200 Subject: [PATCH 267/271] =?UTF-8?q?Changement=20appel=20echecetmat=20dans?= =?UTF-8?q?=20main=20avec=20echec=20+=20probl=C3=A8me=20d'echec=20r=C3=A9s?= =?UTF-8?q?olu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/piecesEchiquier/Roi.java | 47 ++++++++++++++++++++---------- src/visuel/main.java | 56 +++++++++++++++++------------------- 2 files changed, 58 insertions(+), 45 deletions(-) diff --git a/src/piecesEchiquier/Roi.java b/src/piecesEchiquier/Roi.java index 2e29b89..c3ecded 100755 --- a/src/piecesEchiquier/Roi.java +++ b/src/piecesEchiquier/Roi.java @@ -36,23 +36,19 @@ public class Roi extends Piece { { for (int j=0; j<8;j++) { - - - if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur()) && (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse { e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Roi(this.getCouleur(),this.getNom(),new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]= new Piece(new Position(this.getPosition().getX(),this.getPosition().getY()));//transforme temporairement le roi en piece vide if(e.getEchiquier()[i][j].metEnEchec(e,e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1]) == true) //si la piece est en echec sur la 2eme coor { - e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY()));//remplace le fantome du roi par une piece vide + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]=this;//rajoute le roi à sa position return false; } e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]=this;//rajoute le roi à sa position } - - - - } } return true; @@ -70,12 +66,15 @@ public class Roi extends Piece { if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur()) && (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse { e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Roi(this.getCouleur(),this.getNom(),new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]= new Piece(new Position(this.getPosition().getX(),this.getPosition().getY()));//transforme temporairement le roi en piece vide if(e.getEchiquier()[i][j].metEnEchec(e,e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1]) == true) //si la piece est en echec sur la 2eme coor { - e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY()));//remplace le fantome du roi par une piece vide + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]=this;//rajoute le roi à sa position return false; } e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]=this;//rajoute le roi à sa position } } } @@ -94,12 +93,15 @@ public class Roi extends Piece { if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur()) && (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse { e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Roi(this.getCouleur(),this.getNom(),new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]= new Piece(new Position(this.getPosition().getX(),this.getPosition().getY()));//transforme temporairement le roi en piece vide if(e.getEchiquier()[i][j].metEnEchec(e,e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1]) == true) //si la piece est en echec sur la 2eme coor { - e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY()));//remplace le fantome du roi par une piece vide + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]=this;//rajoute le roi à sa position return false; } e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]=this;//rajoute le roi à sa position } } } @@ -118,12 +120,15 @@ public class Roi extends Piece { if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur()) && (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse { e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Roi(this.getCouleur(),this.getNom(),new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]= new Piece(new Position(this.getPosition().getX(),this.getPosition().getY()));//transforme temporairement le roi en piece vide if(e.getEchiquier()[i][j].metEnEchec(e,e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1]) == true) //si la piece est en echec sur la 2eme coor { - e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY()));//remplace le fantome du roi par une piece vide + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]=this;//rajoute le roi à sa position return false; } e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]=this;//rajoute le roi à sa position } } } @@ -142,12 +147,15 @@ public class Roi extends Piece { if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur()) && (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse { e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Roi(this.getCouleur(),this.getNom(),new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]= new Piece(new Position(this.getPosition().getX(),this.getPosition().getY()));//transforme temporairement le roi en piece vide if(e.getEchiquier()[i][j].metEnEchec(e,e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1]) == true) //si la piece est en echec sur la 2eme coor { - e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY()));//remplace le fantome du roi par une piece vide + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]=this;//rajoute le roi à sa position return false; } e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]=this;//rajoute le roi à sa position } } } @@ -166,12 +174,15 @@ public class Roi extends Piece { if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur()) && (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse { e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Roi(this.getCouleur(),this.getNom(),new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]= new Piece(new Position(this.getPosition().getX(),this.getPosition().getY()));//transforme temporairement le roi en piece vide if(e.getEchiquier()[i][j].metEnEchec(e,e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1]) == true) //si la piece est en echec sur la 2eme coor { - e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY()));//remplace le fantome du roi par une piece vide + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]=this;//rajoute le roi à sa position return false; } e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]=this;//rajoute le roi à sa position } } } @@ -190,12 +201,15 @@ public class Roi extends Piece { if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur()) && (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse { e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Roi(this.getCouleur(),this.getNom(),new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]= new Piece(new Position(this.getPosition().getX(),this.getPosition().getY()));//transforme temporairement le roi en piece vide if(e.getEchiquier()[i][j].metEnEchec(e,e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1]) == true) //si la piece est en echec sur la 2eme coor { - e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY()));//remplace le fantome du roi par une piece vide + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]=this;//rajoute le roi à sa position return false; } e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]=this;//rajoute le roi à sa position } } } @@ -214,12 +228,15 @@ public class Roi extends Piece { if((e.getEchiquier()[i][j].getCouleur() != this.getCouleur()) && (e.getEchiquier()[i][j].getCouleur() != "") ) //si la piece est de couleur adverse { e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Roi(this.getCouleur(),this.getNom(),new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]= new Piece(new Position(this.getPosition().getX(),this.getPosition().getY()));//transforme temporairement le roi en piece vide if(e.getEchiquier()[i][j].metEnEchec(e,e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1]) == true) //si la piece est en echec sur la 2eme coor { - e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY()));//remplace le fantome du roi par une piece vide + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]=this;//rajoute le roi à sa position return false; } e.getEchiquier()[8-p.getPosition().getY()][p.getPosition().getX()-1] = new Piece(new Position(p.getPosition().getX(),p.getPosition().getY())); + e.getEchiquier()[8-(this.getPosition().getY())][this.getPosition().getX()-1]=this;//rajoute le roi à sa position } } } diff --git a/src/visuel/main.java b/src/visuel/main.java index 88e0173..2d49ab7 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -113,19 +113,7 @@ public class main { System.out.println("\n" + "Tour de " + j1.getNom() + "(" + j1.getCouleur() + ")\n"); //do { - if (e.getRoiB1().isRoiEchec() == true) - { - do - { - System.out.println( - "Comme votre roi est en echec la piece a bouger est forcement cette derniere. Ou voulez vous la poser ?\n"); - A = e.getCodes()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]; - B = sc.nextLine(); - - }while(e.verificationMouvement(j1, A, B) != true ); - - } - else if (e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true) + if (e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true) { do { @@ -137,6 +125,19 @@ public class main { System.out.println( "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); B = sc.nextLine(); + + }while(e.verificationMouvement(j1, A, B) != true ); + + } + + else if (e.getRoiB1().isRoiEchec() == true) + { + do + { + System.out.println( + "Comme votre roi est en echec la piece a bouger est forcement cette derniere. Ou voulez vous la poser ?\n"); + A = e.getCodes()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]; + B = sc.nextLine(); }while(e.verificationMouvement(j1, A, B) != true && e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true); } else { @@ -157,10 +158,6 @@ public class main { }while(e.verificationMouvement(j1, sA, B) != true ); } - - - - //} while (e.verificationMouvement(j1, A, B) != true ); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées if (e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true) // si roi blanc en echec etmat @@ -181,20 +178,9 @@ public class main { System.out.println("Tour de " + j2.getNom() + "(" + j2.getCouleur() + ")\n"); //do { - if (e.getRoiN1().isRoiEchec()) + if (e.getRoiN1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiN1().getPosition().getY()][e.getRoiN1().getPosition().getX()-1]) == true) { do { - System.out.println( - "Comme votre roi est en echec la piece a bouger est forcement cette derniere. Ou voulez vous la poser ?\n"); - A = e.getCodes()[8-e.getRoiN1().getPosition().getY()][e.getRoiN1().getPosition().getX()-1]; - B = sc.nextLine(); - }while(e.verificationMouvement(j2, A, B) != true ); - } - - else if (e.getRoiN1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiN1().getPosition().getY()][e.getRoiN1().getPosition().getX()-1]) == true) - { - do - { System.out.println( "Votre roi est en echec et mat temporaire. Bougez une piece pour le sauver si vous pouvez. Sinon bougez une piece au hasard.\n"); System.out.println( @@ -203,6 +189,17 @@ public class main { System.out.println( "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); B = sc.nextLine(); + }while(e.verificationMouvement(j2, A, B) != true ); + } + + else if (e.getRoiN1().isRoiEchec()) + { + do + { + System.out.println( + "Comme votre roi est en echec la piece a bouger est forcement cette derniere. Ou voulez vous la poser ?\n"); + A = e.getCodes()[8-e.getRoiN1().getPosition().getY()][e.getRoiN1().getPosition().getX()-1]; + B = sc.nextLine(); }while(e.verificationMouvement(j2, A, B) != true && e.getRoiN1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiN1().getPosition().getY()][e.getRoiN1().getPosition().getX()-1]) == true); } else { @@ -224,7 +221,6 @@ public class main { }while(e.verificationMouvement(j2, sA, B) != true ); } - //} while (e.verificationMouvement(j2, A, B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées // VERIF ECHECMAT From 0b5ef80740e6be1555fe604532ec4bfa981f72fb Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Mon, 27 May 2019 20:49:01 +0200 Subject: [PATCH 268/271] add conditions to avoid error --- src/visuel/main.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/visuel/main.java b/src/visuel/main.java index a411151..a4af475 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -64,6 +64,9 @@ public class main { System.out.println("3 = Aléatoire"); String choixP = sc.nextLine(); + if(choixP.isEmpty()) { + choixP = "3"; + } if (choixP.equalsIgnoreCase("3")) { int random = (int) (Math.random() * 2 + 1); @@ -152,11 +155,12 @@ public class main { System.out.println( "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); A = sc.nextLine(); - if(A.isEmpty()) { + if(A.isEmpty() || A.length() == 1) { A = "Z99"; } cA = A.charAt(0);//ici on récupère le premier caractère du String + pA = A.charAt(1);//ici on récupère le second caratère char cAl = Character.toLowerCase(cA); //ici on convertis un 'A' en 'a' sA = "" + cAl + pA; //ici on concatène dans un nouveau string le a transformé avec le chiffre récupéré. From 3a5dac98574b4d09e3dbe9621373ff124c8501dd Mon Sep 17 00:00:00 2001 From: Johann Date: Mon, 27 May 2019 22:03:07 +0200 Subject: [PATCH 269/271] Changement main --- src/piecesEchiquier/Echiquier.java | 16 ++--- src/visuel/main.java | 103 ++++++++--------------------- 2 files changed, 34 insertions(+), 85 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index 63f90bc..d792ec3 100644 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -45,14 +45,14 @@ public class Echiquier { //ATTRIBUTS private String[][] codes = //pour définir quel code correspond a quel case { - {"a8","b8","c8","d8","e8","f8","g8","h8"}, - {"a7","b7","c7","d7","e7","f7","g7","h7"}, - {"a6","b6","c6","d6","e6","f6","g6","h6"}, - {"a5","b5","c5","d5","e5","f5","g5","h5"}, - {"a4","b4","c4","d4","e4","f4","g4","h4"}, - {"a3","b3","c3","d3","e3","f3","g3","h3"}, - {"a2","b2","c2","d2","e2","f2","g2","h2"}, - {"a1","b1","c1","d1","e1","f1","g1","h1"} + {"A8","B8","C8","D8","E8","F8","G8","H8"}, + {"A7","B7","C7","D7","E7","F7","G7","H7"}, + {"A6","B6","C6","D6","E6","F6","G6","H6"}, + {"A5","B5","C5","D5","E5","F5","G5","H5"}, + {"A4","B4","C4","D4","E4","F4","G4","H4"}, + {"A3","B3","C3","D3","E3","F3","G3","H3"}, + {"A2","B2","C2","D2","E2","F2","G2","H2"}, + {"A1","B1","C1","D1","E1","F1","G1","H1"} }; //declaration de toutes les pieces de l'echiquier diff --git a/src/visuel/main.java b/src/visuel/main.java index 4df1393..4371179 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -27,18 +27,10 @@ public class main { // déclaration des joueurs System.out.println("Entrez le nom du joueur 1 : "); Joueur j1 = new Joueur(sc.nextLine(), null); - if(j1.getNom().isEmpty()) { - j1.setNom("Joueur Par défaut 1"); - } System.out.println("Entrez le nom du joueur 2 : "); Joueur j2 = new Joueur(sc.nextLine(), null); - if(j2.getNom().isEmpty()) { - j2.setNom("Joueur Par défaut 2"); - } - Joueur jTemp = new Joueur(null, null); // ce joueur sert de mémoire pour le choix de l'odre de jeu - if(j1.getNom().equalsIgnoreCase("") || j2.getNom().equalsIgnoreCase("") || j1.getNom().equalsIgnoreCase(null) || j2.getNom().equalsIgnoreCase(null)) { choixPartie = -1; } @@ -47,12 +39,9 @@ public class main { String A; //coordonées de départ String B; //coordonées d'arrivée - char cA = 'y';//pour recup le premier char - char pA = '8';//pour recup le 2e char - String sA;//pour concatener - - //déclaration de l'échiquier + + while (choixPartie >= 1) { Echiquier e = new Echiquier(); while (choixPartie == 1) { @@ -64,9 +53,6 @@ public class main { System.out.println("3 = Aléatoire"); String choixP = sc.nextLine(); - if(choixP.isEmpty()) { - choixP = "3"; - } if (choixP.equalsIgnoreCase("3")) { int random = (int) (Math.random() * 2 + 1); @@ -92,18 +78,6 @@ public class main { j1.setCouleur("Noir"); System.out.println("Le joueur " + j2.getNom() + " jouera les blancs et le joueur " + j1.getNom() + " jouera les noirs."); - /* - * Alors ici on utilise un joueur temporaire pour faire passe le deuxième joueur en joueur numéro 1 - */ - jTemp.setNom(j1.getNom()); - jTemp.setCouleur(j1.getCouleur()); - - j1.setCouleur(j2.getCouleur()); - j1.setNom(j2.getNom()); - - j2.setNom(jTemp.getNom()); - j2.setCouleur(jTemp.getCouleur()); - choixPartie = 2; } else { @@ -112,7 +86,7 @@ public class main { } System.out.println("Bienvenue " + j1.getNom() + " et " + j2.getNom() - + " dans e-Chesstria ! Le jeu d'echec sur console fait entièrement en java !\n"); + + " dans e-Chesstria ! Le jeu d'echec équestrien sur console fait entièrement en java !\n"); do { @@ -121,10 +95,10 @@ public class main { /*JOUEUR1*/ - System.out.println("\n" + "Tour de " + j1.getNom() + "(" + j1.getCouleur() + ")\n"); + System.out.println("\n" + "Tour de " + j1.getNom() + " (Blanc)\n"); //do { - if (e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true) + if (e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true) { do { @@ -136,45 +110,28 @@ public class main { System.out.println( "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); B = sc.nextLine(); - }while(e.verificationMouvement(j1, A, B) != true ); } - else if (e.getRoiB1().isRoiEchec() == true) { do { - System.out.println( - "Comme votre roi est en echec la piece a bouger est forcement cette derniere. Ou voulez vous la poser ?\n"); - A = e.getCodes()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]; - B = sc.nextLine(); + System.out.println( + "Comme votre roi est en echec la piece a bouger est forcement cette derniere. Ou voulez vous la poser ?\n"); + A = e.getCodes()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]; + B = sc.nextLine(); }while(e.verificationMouvement(j1, A, B) != true && e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true); } else { do { - System.out.println( - "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); - A = sc.nextLine(); - if(A.isEmpty() || A.length() == 1) { - A = "Z99"; - } - - cA = A.charAt(0);//ici on récupère le premier caractère du String - - pA = A.charAt(1);//ici on récupère le second caratère - char cAl = Character.toLowerCase(cA); //ici on convertis un 'A' en 'a' - sA = "" + cAl + pA; //ici on concatène dans un nouveau string le a transformé avec le chiffre récupéré. - - System.out.println( - "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); - B = sc.nextLine(); - if(B.isEmpty()) { - B = "Z99"; - } - - - }while(e.verificationMouvement(j1, sA, B) != true ); + System.out.println( + "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); + A = sc.nextLine(); + System.out.println( + "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); + B = sc.nextLine(); + }while(e.verificationMouvement(j1, A, B) != true ); } @@ -193,7 +150,7 @@ public class main { // JOUEUR2 - System.out.println("Tour de " + j2.getNom() + "(" + j2.getCouleur() + ")\n"); + System.out.println("Tour de " + j2.getNom() + " (Noir)\n"); //do { if (e.getRoiN1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiN1().getPosition().getY()][e.getRoiN1().getPosition().getX()-1]) == true) @@ -209,7 +166,7 @@ public class main { B = sc.nextLine(); }while(e.verificationMouvement(j2, A, B) != true ); } - + else if (e.getRoiN1().isRoiEchec()) { do @@ -222,22 +179,14 @@ public class main { } else { do { - System.out.println( - "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); - A = sc.nextLine(); - - cA = A.charAt(0);//ici on récupère le premier caractère du String - pA = A.charAt(1);//ici on récupère le second caratère - char cAl = Character.toLowerCase(cA); //ici on convertis un 'A' en 'a' - sA = "" + cAl + pA; //ici on concatène dans un nouveau string le a transformé avec le chiffre récupéré. - - System.out.println( - "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); - B = sc.nextLine(); - - - }while(e.verificationMouvement(j2, sA, B) != true ); - } // Tant que le mouvement n'est pas faisable on demande 2 coordonnées + System.out.println( + "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); + A = sc.nextLine(); + System.out.println( + "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); + B = sc.nextLine(); + }while(e.verificationMouvement(j2, A, B) != true ); + } // VERIF ECHECMAT From 4a06d56bfd9e60aa328372a1874b368f890418f4 Mon Sep 17 00:00:00 2001 From: Johann Date: Mon, 27 May 2019 22:41:39 +0200 Subject: [PATCH 270/271] Retour ancien main --- src/piecesEchiquier/Echiquier.java | 16 ++--- src/visuel/main.java | 103 +++++++++++++++++++++-------- 2 files changed, 85 insertions(+), 34 deletions(-) diff --git a/src/piecesEchiquier/Echiquier.java b/src/piecesEchiquier/Echiquier.java index d792ec3..63f90bc 100644 --- a/src/piecesEchiquier/Echiquier.java +++ b/src/piecesEchiquier/Echiquier.java @@ -45,14 +45,14 @@ public class Echiquier { //ATTRIBUTS private String[][] codes = //pour définir quel code correspond a quel case { - {"A8","B8","C8","D8","E8","F8","G8","H8"}, - {"A7","B7","C7","D7","E7","F7","G7","H7"}, - {"A6","B6","C6","D6","E6","F6","G6","H6"}, - {"A5","B5","C5","D5","E5","F5","G5","H5"}, - {"A4","B4","C4","D4","E4","F4","G4","H4"}, - {"A3","B3","C3","D3","E3","F3","G3","H3"}, - {"A2","B2","C2","D2","E2","F2","G2","H2"}, - {"A1","B1","C1","D1","E1","F1","G1","H1"} + {"a8","b8","c8","d8","e8","f8","g8","h8"}, + {"a7","b7","c7","d7","e7","f7","g7","h7"}, + {"a6","b6","c6","d6","e6","f6","g6","h6"}, + {"a5","b5","c5","d5","e5","f5","g5","h5"}, + {"a4","b4","c4","d4","e4","f4","g4","h4"}, + {"a3","b3","c3","d3","e3","f3","g3","h3"}, + {"a2","b2","c2","d2","e2","f2","g2","h2"}, + {"a1","b1","c1","d1","e1","f1","g1","h1"} }; //declaration de toutes les pieces de l'echiquier diff --git a/src/visuel/main.java b/src/visuel/main.java index 4371179..4df1393 100755 --- a/src/visuel/main.java +++ b/src/visuel/main.java @@ -27,10 +27,18 @@ public class main { // déclaration des joueurs System.out.println("Entrez le nom du joueur 1 : "); Joueur j1 = new Joueur(sc.nextLine(), null); + if(j1.getNom().isEmpty()) { + j1.setNom("Joueur Par défaut 1"); + } System.out.println("Entrez le nom du joueur 2 : "); Joueur j2 = new Joueur(sc.nextLine(), null); + if(j2.getNom().isEmpty()) { + j2.setNom("Joueur Par défaut 2"); + } + Joueur jTemp = new Joueur(null, null); // ce joueur sert de mémoire pour le choix de l'odre de jeu + if(j1.getNom().equalsIgnoreCase("") || j2.getNom().equalsIgnoreCase("") || j1.getNom().equalsIgnoreCase(null) || j2.getNom().equalsIgnoreCase(null)) { choixPartie = -1; } @@ -39,9 +47,12 @@ public class main { String A; //coordonées de départ String B; //coordonées d'arrivée + char cA = 'y';//pour recup le premier char + char pA = '8';//pour recup le 2e char + String sA;//pour concatener + + //déclaration de l'échiquier - - while (choixPartie >= 1) { Echiquier e = new Echiquier(); while (choixPartie == 1) { @@ -53,6 +64,9 @@ public class main { System.out.println("3 = Aléatoire"); String choixP = sc.nextLine(); + if(choixP.isEmpty()) { + choixP = "3"; + } if (choixP.equalsIgnoreCase("3")) { int random = (int) (Math.random() * 2 + 1); @@ -78,6 +92,18 @@ public class main { j1.setCouleur("Noir"); System.out.println("Le joueur " + j2.getNom() + " jouera les blancs et le joueur " + j1.getNom() + " jouera les noirs."); + /* + * Alors ici on utilise un joueur temporaire pour faire passe le deuxième joueur en joueur numéro 1 + */ + jTemp.setNom(j1.getNom()); + jTemp.setCouleur(j1.getCouleur()); + + j1.setCouleur(j2.getCouleur()); + j1.setNom(j2.getNom()); + + j2.setNom(jTemp.getNom()); + j2.setCouleur(jTemp.getCouleur()); + choixPartie = 2; } else { @@ -86,7 +112,7 @@ public class main { } System.out.println("Bienvenue " + j1.getNom() + " et " + j2.getNom() - + " dans e-Chesstria ! Le jeu d'echec équestrien sur console fait entièrement en java !\n"); + + " dans e-Chesstria ! Le jeu d'echec sur console fait entièrement en java !\n"); do { @@ -95,10 +121,10 @@ public class main { /*JOUEUR1*/ - System.out.println("\n" + "Tour de " + j1.getNom() + " (Blanc)\n"); + System.out.println("\n" + "Tour de " + j1.getNom() + "(" + j1.getCouleur() + ")\n"); //do { - if (e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true) + if (e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true) { do { @@ -110,28 +136,45 @@ public class main { System.out.println( "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); B = sc.nextLine(); + }while(e.verificationMouvement(j1, A, B) != true ); } + else if (e.getRoiB1().isRoiEchec() == true) { do { - System.out.println( - "Comme votre roi est en echec la piece a bouger est forcement cette derniere. Ou voulez vous la poser ?\n"); - A = e.getCodes()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]; - B = sc.nextLine(); + System.out.println( + "Comme votre roi est en echec la piece a bouger est forcement cette derniere. Ou voulez vous la poser ?\n"); + A = e.getCodes()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]; + B = sc.nextLine(); }while(e.verificationMouvement(j1, A, B) != true && e.getRoiB1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiB1().getPosition().getY()][e.getRoiB1().getPosition().getX()-1]) == true); } else { do { - System.out.println( - "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); - A = sc.nextLine(); - System.out.println( - "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); - B = sc.nextLine(); - }while(e.verificationMouvement(j1, A, B) != true ); + System.out.println( + "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); + A = sc.nextLine(); + if(A.isEmpty() || A.length() == 1) { + A = "Z99"; + } + + cA = A.charAt(0);//ici on récupère le premier caractère du String + + pA = A.charAt(1);//ici on récupère le second caratère + char cAl = Character.toLowerCase(cA); //ici on convertis un 'A' en 'a' + sA = "" + cAl + pA; //ici on concatène dans un nouveau string le a transformé avec le chiffre récupéré. + + System.out.println( + "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); + B = sc.nextLine(); + if(B.isEmpty()) { + B = "Z99"; + } + + + }while(e.verificationMouvement(j1, sA, B) != true ); } @@ -150,7 +193,7 @@ public class main { // JOUEUR2 - System.out.println("Tour de " + j2.getNom() + " (Noir)\n"); + System.out.println("Tour de " + j2.getNom() + "(" + j2.getCouleur() + ")\n"); //do { if (e.getRoiN1().enEchecEtMat(e,e.getEchiquier()[8-e.getRoiN1().getPosition().getY()][e.getRoiN1().getPosition().getX()-1]) == true) @@ -166,7 +209,7 @@ public class main { B = sc.nextLine(); }while(e.verificationMouvement(j2, A, B) != true ); } - + else if (e.getRoiN1().isRoiEchec()) { do @@ -179,14 +222,22 @@ public class main { } else { do { - System.out.println( - "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); - A = sc.nextLine(); - System.out.println( - "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); - B = sc.nextLine(); - }while(e.verificationMouvement(j2, A, B) != true ); - } + System.out.println( + "Quelle pièce voulez-vous déplacer ? Donnez le code correspondant de la pièce à déplacer(ex : A1).\n"); + A = sc.nextLine(); + + cA = A.charAt(0);//ici on récupère le premier caractère du String + pA = A.charAt(1);//ici on récupère le second caratère + char cAl = Character.toLowerCase(cA); //ici on convertis un 'A' en 'a' + sA = "" + cAl + pA; //ici on concatène dans un nouveau string le a transformé avec le chiffre récupéré. + + System.out.println( + "À quel endroit la poser ? Donnez le code correspondant à l'endroit où poser la pièce.\n"); + B = sc.nextLine(); + + + }while(e.verificationMouvement(j2, sA, B) != true ); + } // Tant que le mouvement n'est pas faisable on demande 2 coordonnées // VERIF ECHECMAT From dd6f13eb131e4ba48591d24c6d0d487986ff5e2c Mon Sep 17 00:00:00 2001 From: JunkJumper Date: Fri, 7 Jun 2019 23:59:15 +0200 Subject: [PATCH 271/271] fix push --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index dc880fd..1d01629 100755 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # e-Chesstria - Projet Tutoré Equipe [G00D3N0UGHT](https://git-iutinfo.unice.fr/good3nought) Semestre 2 - + s ![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/logo.png "e-Chesstria logo") ## Sommaire @@ -102,4 +102,4 @@ La lettre ``B`` signifie qu'une pièce est de couleur blanche et la lettre ``N`` [![logo](https://licensebuttons.net/l/by/4.0/88x31.png)](https://creativecommons.org/licenses/by/4.0/) This project is available under the terms of the [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/) (or check [LICENSE.md](https://git-iutinfo.unice.fr/good3nought/echesstria/blob/master/LICENSE.md)). -[![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/gitalab.PNG)](https://gitlab.com/gitlab-org) [![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/git.PNG)](https://git-scm.com/) [![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/java.PNG)](https://www.java.com/fr/download/) \ No newline at end of file +[![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/gitalab.PNG)](https://gitlab.com/gitlab-org) [![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/git.PNG)](https://git-scm.com/) [![logo](https://git-iutinfo.unice.fr/good3nought/echesstria/raw/master/imgs/java.PNG)](https://www.java.com/fr/download/)