Compare commits
	
		
			3 Commits
		
	
	
		
			Affichage
			...
			Regle_coup
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 32217b8e39 | |||
| dedc20f54a | |||
| ad350002f2 | 
							
								
								
									
										34
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								README.md
									
									
									
									
									
								
							| @@ -0,0 +1,34 @@ | ||||
| # BUT3 Projet Jeu Groupe | ||||
|  | ||||
| *Auteurs : AMARY Aurelien, DICK Adrien, FELIX-VIMALARATNAM Patrick, RABN Hugo* | ||||
|  | ||||
| Date de création : 16/10/25 | ||||
|  | ||||
| Le but est de mettre en oeuvre des jeux plus intéressants que le jeu de Nim, toujours en suivant l'API. | ||||
|  | ||||
| Dans un second temps, on fera des bots le plus efficace possible (probablement un alpha beta avec cut-off plus fonction d'évaluation qui peut être faite à la main ou par MonteCarlo). | ||||
|  | ||||
| Le jeu de notre groupe est **Avalam**. | ||||
|  | ||||
| ## Présentation Avalam | ||||
| Sur un plateau de jeu, les joueurs dispose de 24 pions chacun. Le but est de créer des petites tours avec son pions de couleur au dessus. Pour ce faire chaque joueur déplace son pion sur une tour ou déplace une tour sur un autre pion. La personne avec le plus de pions sur le dessus de chaque tour gagne. | ||||
|  | ||||
| ### Régles officiel : | ||||
| **Regle de base** \ | ||||
| Chaque joueur choisit sa couleur. | ||||
| Le but du jeu est de constituer un maximum de tours de 1 à 5 pions, jamais plus, surmontées par un pion de sa couleur. | ||||
| Un joueur est le propriétaire d'une tour lorsqu'un pion de sa couleur en occupe le sommet. Un pion isolé constitue également une tour.  | ||||
|  | ||||
| **Deplacements** \ | ||||
| Chaque joueur en effectue un seul, dans n'importe quel sens (horizontal, vertical, diagonal) avec n'importe quel pion (ou pile de pions), quelle qu'en soit la couleur. Ce mouvement consiste à empiler le ou les pions déplacés sur un trou directement voisin déjà occupé par un ou plusieurs pions. | ||||
|  | ||||
| **Mouvement interdit (1)** \ | ||||
| On déplace obligatoirement toute la pile se trouvant sur un troue (elle peut évidemment n'être constituée que d'un seul pion). Autrement dit, une pile de pions ne peut qu'augmenter, jamais diminuer. | ||||
|  | ||||
| **Mouvement interdit (2)** \ | ||||
| On ne peut jamais poser de pions sur un trou inoccupé: il le reste donc définitivement. Un pion (ou une tour) isolé de tous les cotés ne pourra donc plus changer de propriétaire. | ||||
|  | ||||
| **Fin de partie** \ | ||||
| Tans qu'un joueur peut effectuer un mouvement il a l'obligation de jouer, la partie ne s'achevant que lorque plus aucun déplacement n'est possible. | ||||
| On compte alors combien de pions de chaque couleur occupent le sommet des tours restantes, le vainqueur étant évidemment celui qui en totalise le plus. | ||||
| Attention! Qu'une tour comporte 1,2,... ou 5 pions, elle vaut toujours UN point. | ||||
							
								
								
									
										83
									
								
								fr/iut_fbleau/Avalam/AvalamBoard.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								fr/iut_fbleau/Avalam/AvalamBoard.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,83 @@ | ||||
| package fr.iut_fbleau.Avalam; | ||||
|  | ||||
| import fr.iut_fbleau.GameAPI.AbstractBoard; | ||||
| import fr.iut_fbleau.GameAPI.AbstractPly; | ||||
| import fr.iut_fbleau.GameAPI.Player; | ||||
| import fr.iut_fbleau.GameAPI.Result; | ||||
| import fr.iut_fbleau.GameAPI.IBoard; | ||||
|  | ||||
| import java.util.Iterator; | ||||
| import java.util.ArrayList; | ||||
| import java.util.Deque; | ||||
| import java.util.ArrayDeque; | ||||
|  | ||||
| public class AvalamBoard extends AbstractBoard { | ||||
|  | ||||
|     private int max_height = 5; | ||||
|     private Result result; | ||||
|     private boolean gameOver; | ||||
|     private int array_length = 9; | ||||
|     private ArrayList<Integer>[][] grid = new ArrayList[this.array_length][this.array_length]; | ||||
|  | ||||
|     public AvalamBoard(){ | ||||
|         super(Player.PLAYER1, new ArrayDeque<>()); | ||||
|  | ||||
|         //création du tableau | ||||
|  | ||||
|         this.gameOver = false; | ||||
|         this.result = null; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public boolean isGameOver() { | ||||
|         return this.gameOver; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public Result getResult() { | ||||
|         return this.result; | ||||
|     } | ||||
|  | ||||
|     public boolean In_range(int x_tower_play, int y_tower_play, int x_tower_destination, int x_tower_destination){ | ||||
|         boolean in_table = true; | ||||
|         if (x_tower_play >= 0 && x_tower_play < 9){ | ||||
|             in_table = false; | ||||
|         } | ||||
|         else if (y_tower_play >= 0 && y_tower_play < 9){ | ||||
|             in_table = false; | ||||
|         } | ||||
|         else if (x_tower_destination >= 0 && x_tower_destination < 9){ | ||||
|             in_table = false; | ||||
|         } | ||||
|         else if (x_tower_destination >= 0 && x_tower_destination < 9){ | ||||
|             in_table = false; | ||||
|         } | ||||
|         return in_table; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public boolean isLegal(AbstractPly c, int x_tower_play, int y_tower_play, int x_tower_destination, int x_tower_destination) { | ||||
|         if (this.gameOver) { | ||||
|             throw new NullPointerException("Le jeu est terminé"); | ||||
|         } | ||||
|          | ||||
|         if (!(c instanceof NimPly)) { | ||||
|             return false; | ||||
|         } | ||||
|          | ||||
|         NimPly coup = (NimPly) c; | ||||
|          | ||||
|         if (coup.getPlayer() != getCurrentPlayer()) { | ||||
|             return false; | ||||
|         } | ||||
|  | ||||
|         if (In_range(x_tower_play, y_tower_play, x_tower_destination, x_tower_destination)){ | ||||
|             return false; | ||||
|         } | ||||
|          | ||||
|         // Vérifier que le nombre d'allumettes est valide | ||||
|         int nbAllumettes = coup.getNombreAllumettesPrises(); | ||||
|         return // modifier IsgameOver | ||||
|     } | ||||
|  | ||||
| } | ||||
							
								
								
									
										0
									
								
								fr/iut_fbleau/Avalam/temp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								fr/iut_fbleau/Avalam/temp
									
									
									
									
									
										Normal file
									
								
							
		Reference in New Issue
	
	Block a user