Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

JAVA - Création IA petit jeu




  1. #1
    MidoXSan

    JAVA - Création IA petit jeu

    Bonsoir,

    Dans le cadre d'un projet informatique, je fait déplacer un player avec les flèches dans un plan 2D, le personnage étant un bloc et ayant une position (x,y). D'autre part, il y a des monstres (blocs) ayant aussi chacun sa position (x,y) et qui se déplacent pour l'instant de façon totalement aléatoire (sans s'entrechoquer) grâce à un thread qui gère ces déplacements. Mon but est de faire en sorte que ces monstres suivent le player. Mais je ne sais pas trop par ou commencer. Je saurai les faire déplacer en ligne droite mais de là à ce qu'ils aillent chez le player sachant qu'il y a des obstacles devant eux je ne vois pas trop. Voilà merci !

    -----


  2. #2
    pm42

    Re : JAVA - Création IA petit jeu

    Tu n'as pas besoin d'IA pour ça. Quelques règles suffisent.
    Par ex:
    - un monstre peut à chaque cran se déplacer dans une des 4 directions : N, S, E, O
    - à chaque étape, il essaie de se déplacer dans la direction qui le rapproche du joueur et où il est le plus loin
    - s'il y a un bloc, il se déplace aléatoirement dans 1 des 3 autres directions

    On peut raffiner en ajoutant des règles. Tout cela se calcule très vite et n'utilise que des entiers.
    C'est moins marrant que d'entrainer un réseau de deep learning à renforcement sur une GPU mais sans doute plus immédiatement efficace.

  3. #3
    MidoXSan

    Re : JAVA - Création IA petit jeu

    Merci beaucoup pour votre réponse, oui c'est ce que j'ai fait pour l'instant, le seul soucis c'est que les lorsque le player est suivi par deux blocs par exemple, un premier bloc va se coller au player mais le 2ème (selon sa position initiale) va se mettre derrière le premier au lieu d'aller se coller au player (car distance moindre), du coup j'aurai bien voulu au moins corriger ça mais je vois pas trop

    Voici le bout de code qui régit ce déplacement :

    Code:
    else {
      			i=0;
      			j=0;
      			for (int k=-1; k<=1; k++){
      				for (int l=-1; l<=1; l++){
      					if(Math.abs(k)+Math.abs(l) != 2 /*No deplacement diagonal*/
      					   && gameObject.futurCollage(gameObjects,k,l)==false /*No Superposition*/
      					   && Math.abs( gameObject.getPosX()+k-player.getPosX() ) + Math.abs( gameObject.getPosY()+l-player.getPosY() ) 
      					   <= Math.abs( gameObject.getPosX()-player.getPosX() ) + Math.abs( gameObject.getPosY()-player.getPosY() /*Distance minimale*/)){
      						i=k;
      						j=l;
      					}
      				}
      			}
      		}
      		gameObject.move(i,j);
      		}
    gameObject ce sont les blocs qui bougent
    Dernière modification par JPL ; 24/04/2018 à 14h27. Motif: Ajout de la balise Code (#) pour garder l'indentation


Discussions similaires

  1. un petit programme en java (débutant)
    Par Debutante0 dans le forum Programmation et langages, Algorithmique
    Réponses: 8
    Dernier message: 19/10/2015, 16h38
  2. Petit problème Java avec une application .jar
    Par JPL dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 06/01/2015, 13h16
  3. [Java - JDBC] Erreur lors de création de table
    Par Lechero dans le forum Programmation et langages, Algorithmique
    Réponses: 7
    Dernier message: 18/03/2014, 07h29
  4. creation uml à partir du code source java
    Par tom009 dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 13/07/2012, 19h14
  5. Creation d'un petit systéme d'alarme
    Par Sparco dans le forum Électronique
    Réponses: 2
    Dernier message: 18/06/2009, 00h07