Forums Développement Multimédia

Aller au contenu

Ajouter une A.I.

cpu air array

6 réponses à ce sujet

#1 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 637 messages

Posté 13 May 2020 - 21:02 PM

Bonjour,

J'ai terminé un petit jeu de plateau pour deux joueurs physiques, cependant je voudrais tenter d'ajouter une A.I. pour jouer contre le CPU.

Sur un plateau de jeu est disposé 36 cartes retournées et chaque joueur, chacun leur tour tire une carte qui est retirée du plateau pour être stockée dans leur inventaire.

L'une des actions principales à réaliser par le cpu est de choisir une carte au hasard en fonction des cartes restantes sur le plateau de jeu:

J'ai une idée grossière sur comment procéder, mais je ne sais pas si je vais sur le bon chemin pour y arriver.

En place je dispose de:

- 36 cartes sont dans un conteneur que j'importe dans la scène.

- Un "Array" contenant mes 36 cartes.

- Une fonction "random" pour sélectionner une carte au hasard.

Alors, c'est un peu brouillon, mais je pense qu'il faudrait que je m'appuis essentiellement sur un tableau
en retirant à chaque tours la carte piochée puis lancer la fonction "random pour sélectionner aléatoirement une carte parmi celle encore présente dans le tableau.

Pouvez-vous me dire si cette approche est viable ou s'il est préférable de procéder différemment.

Merci.

#2 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 637 messages

Posté 14 May 2020 - 20:07 PM

Salut,
J'ai réalisé une première ébauche sur la base de 6 cartes, ça fonctionne plutôt bien mème si ce n'est absoluement pas optimisée et maladroitement codé, j'en convient.
J'ai tenté d'autre approche mais mon manque de connaissances ne me permettais pas de continuer ou de finaliser l'ensemble du script.
Je vais toutefois tenter d'optimiser d'avantage le script, n'hésitez pas à m'apporter vos conseils ou critiques. Merci


// VARIABLES


var random:int;
var index_Clip:int;
var c0:int, c1:int, c2:int, c3:int, c4:int, c5:int;



//  ACTION JOUEUR PHYSIQUE //////////////////////////////////////////////////////////


// CONTENEUR CARTE


clipT.addEventListener(MouseEvent.CLICK, act_tch);

function act_tch(e:MouseEvent):void

{
  e.target.alpha = 0.2;          

 trace("Name = " + e.target.name);

  index_Clip =(clipT.getChildIndex(e.target as DisplayObject));  

 trace("Index = " + index_Clip);

  switch (index_Clip)

  {
   case 0:  c0 = 1;  break;
   case 1:  c1 = 1;  break;
   case 2:  c2 = 1;  break;
   case 3:  c3 = 1;  break;
   case 4:  c4 = 1;  break;
   case 5:  c5 = 1;  break;
  }

  timer_random.start();
}


// TIMER RANDOM


var timer_random:Timer = new Timer(1000, 1);

timer_random.addEventListener(TimerEvent.TIMER, act_timer_random);

function act_timer_random(event:TimerEvent):void

{
  act_random();
}


// ACTION CPU //////////////////////////////////////////////////////////


// RANDOM CARTE


function act_random():void

{
  random =(Math.floor( Math.random()* 5));

  trace("Random = " +random);

  act_carte_cpu(null);
}


// VERIF CARTE


function act_carte_cpu(e:MouseEvent):void

{
  if (random == 0 && c0 == 0)
 
  {
   clipT.carte_0.alpha = 0.2;
   c0 = 1;
  }

  else if (random == 1 && c1 == 0)
 
  {
   clipT.carte_1.alpha = 0.2;
   c1 = 1;
  }

  else if (random == 2 && c2 == 0)
 
  {
   clipT.carte_2.alpha = 0.2;
   c2 = 1;
  }

  else if (random == 3 && c3 == 0)
 
  {
   clipT.carte_3.alpha = 0.2;
   c3 = 1;
  }

  else if (random == 4 && c4 == 0)
 
  {
   clipT.carte_4.alpha = 0.2;
   c4 = 1;
  }

  else if (random == 5 && c5 == 0)
 
  {
   clipT.carte_5.alpha = 0.2;
   c5 = 1;
  }

  else
 
  {
   act_random();
  }
}
 


#3 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 7015 messages

Posté 15 May 2020 - 10:12 AM

Hello,

Si ça peut t'aider j'avais créé ce petit tuto : http://forums.mediab..._le_tic_tac_toe
Il permet de voir comment créer des mini arbres de décision avec des combinaisons prédéfinies.

#4 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 637 messages

Posté 15 May 2020 - 20:39 PM

Bonjour Mr Spi,

Heureux de te lire, coïncidence j'ai regardé ce tuto il y a quelque semaine sur le site "Cmarzin jeux video" (juste excellent), j'y est passé un bon moment. C'est vraiment très bien expliqué mais je m'y noie assez rapidement car la façon d'on c'est écrit ne m'est pas familière, je ne veux pas me rabaisser, mais malgré tout le niveau reste vraiment assez relevé pour moi. Je sais pertinemment qu'une lecture prolongée et répétée me permettrai d'assimiler l'ensemble du script. L'as3 reste mon passe temps principal, donc j’espère tôt ou tard arriver à maîtriser ce niveau de script ... lentement mais sûrement ;-)

#5 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1918 messages

Posté 21 May 2020 - 09:23 AM

J'ai adapté Tic Tac Toe pour OpenFL

#6 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 637 messages

Posté 27 May 2020 - 18:18 PM

Salut pol2095,
Je ne connait pas OpenFL, est-ce un outil pour diffuser du Flash sur le Web vue que les swf ne seront plus accepté par les navigateur ?

#7 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1918 messages

Posté 28 May 2020 - 22:59 PM

OpenFl vaut dire "Open Flash Library", ce n'est pas Flash, mais le code est très proche, il est donc facile de porter un projet Flash vers HTML5.il ne prend pas en charge toutes les fonctionnalités de Flash, ni l'IDE Flash.
Pour porter Tic Tac Toe par exemple vers HTML5, ça m'a pris peu de temps avec l'outil as3hx.



3 utilisateur(s) li(sen)t ce sujet

0 membre(s), 3 invité(s), 0 utilisateur(s) anonyme(s)