Bonjour a tous,
Il y a peu de temps j'ai mis cette source utilisant gdi sur csharp.fr :
http://www.csharpfr.com/codes/JEU-FAUT-ALIGNER-COULEURS-CASSER-BLOCKS-EXEMPLE-ALGORITHME_48274.aspx
entre temps je l'ai améliorée et passer sous directx :
vous trouverez la source ici
http://sharprojet.fr.cr/Projets/Blocks.zip
dans la liste des amélioration j'y ai ajouté un autre joueur et les blocks qui vous tombent dessus quand l'adversaire fait des chaines
L'adversaire peu être un joueur ou l'ordinateur.
j'ai crée un type
enum CpuAct : byte { Left = 0, Right = 1, Down = 2, Rotate = 3, None = 4 };
qui permetra d'indiquer les touches a effectuer pour pouvoir voir en temps réel les déplacements de l'ordinateur.
L' IA maintenant, auparavent je n'ai jamais fait d ' ia et c'est pour moi l'occasion de me confronter a ce genre d'algorithme qui me retombera dessus j'en suis sure.
L'ordinateu a un plateau de 9 x 14 Block
les blocks sont comme suit :
struct Block
{
//Renvoie la couleur du block
public BlockColor Color;
//Renvoie les liens par rapport aux autres blocks
public BlockLink Liens;
//entier pour géré l'effet de clignotement
public int intBlink;
//indique si ce block a déjà été verifié
public bool Checked;
//indique si ce block va exploser
public bool WillExplode;
public sbyte Vie;
public bool LinkedTo(BlockLink aBlink)
{
if ((Liens & aBlink) == aBlink)
return true;
else return false;
}
public bool IsEmpty
{
get
{
if (Color == BlockColor.Aucun || Color == BlockColor.Incassable && Vie <= 0)
return true;
else return false;
}
}
public static Block NullBlock()
{
Block bl = new Block();
bl.Color = BlockColor.Aucun;
bl.Checked = false;
bl.WillExplode = false;
bl.intBlink = 0;
bl.Vie = 0;
bl.Liens = BlockLink.Aucun;
return bl;
}
public static Block BlockFromByte(byte intBlock)
{
Block bl = Block.NullBlock();
bl.Color = (BlockColor)(intBlock);
return bl;
}
public override string ToString()
{
return "Color : " + Color.ToString() + ", Liens :" + Liens.ToString() + ", WillExplode :" + WillExplode.ToString();
}
}
Le but :
L'ia devra prévoir les actions prochaines a effectuer liste de CpuAct en fonction de son plateau de jeu.
Elle doit etre capable de générer des chaines.
Pour être honnête je ne sais pas comment m'y prendre, j'ai seulement crée une petite ia toute bête qui essaie de mettre les mêmes couleur les une sur les autres.
Merci de vous être arrêté ici et pris le temps de lire. N'hésitez pas si vous voulez, plus d'information j'attends avec impatiente vos aides et vos suggestions
Cordialement