Comme j'ai fini aujourd'hui de résoudre tous les bugs de mon Tetris, je me suis dit qu j'allais lui rajouter quelques options. Après quelques recherches, je suis tombé sur ce mode : le bastet (ou Bastard Tetris), qui envoie TOUJOURS le SEUL bloc que l'on ne veut PAS.
Seulement, je n'arrive pas du tout à coder l'algo qui choisit le bloc à envoyer (en fait il n'y a que ça à faire) !
D'où l'existence de ce sujet, car je n'en ai pas trouvé d'autre parlant de ceci (même en anglais).
Je précise simplement que je code en C, avec la bibli SDL2, sous Ubuntu 19.04.
Merci d'avance,
Durza42
La gentillesse est le langage qu'un sourd peut entendre et qu'un aveugle peut voir.
Il n'y a qu'un seul monde et il est faux, cruel, contradictoire, séduisant et dépourvu de sens. Un monde ainsi constitué est le monde réel. Nous avons besoin de mensonges pour conquérir cette réalité, cette "vérité".
long Evaluate(const Well *w, int extralines){
//computes the score for a final position reached in the well + "extralines" lines cleared
//high=good for the player
//lines
long score=100000000*extralines;
//adds a bonus for each "free" dot above the occupied blocks profile
std::bitset<WellWidth> occupied;
occupied.reset();
BOOST_FOREACH(WellLine l,w->_well){
occupied = occupied & l;
score+=10000*(WellWidth-occupied.count());
}
//adds a bonus for lower max height of the occupied blocks
int height=RealWellHeight;
BOOST_FOREACH(WellLine l, w->_well){
if(l.any()) break;
height--;
}
score+= 1000 * (RealWellHeight-height);
return score;
}
Il y a une fonction d'évaluation qui renvoie un score pour une pièce.
J'ai bien essayé (d'ailleurs j'ai dégoté un code en C), mais je ne comprend pas la fonction comment il fait pour associer une valeur plus ou moins élevée à un bloc
selon si le joueur le veut ou pas.
Or, je ne tiens surtout pas à faire de copier-coller !
La gentillesse est le langage qu'un sourd peut entendre et qu'un aveugle peut voir.
Il n'y a qu'un seul monde et il est faux, cruel, contradictoire, séduisant et dépourvu de sens. Un monde ainsi constitué est le monde réel. Nous avons besoin de mensonges pour conquérir cette réalité, cette "vérité".
J'ai bien essayé (d'ailleurs j'ai dégoté un code en C), mais je ne comprend pas la fonction comment il fait pour associer une valeur plus ou moins élevée à un bloc
selon si le joueur le veut ou pas.
Or, je ne tiens surtout pas à faire de copier-coller !
Justement c'est la qualité de cette fonction d'évaluation qui rendre ton moteur plus ou moins démoniaque.
Une idée simple pour commencer serait : pour toutes les pièces valides, choisir celle qui même la mieux placée augmente le plus la hauteur du tas ; raffiner en prenant en compte le nombre de trous non directement remplissables que cela crée, etc …
Merci beaucoup white crow, c'est principalement ça que je voulais savoir. Je te tiens au courrant le temps de coder ça !
La gentillesse est le langage qu'un sourd peut entendre et qu'un aveugle peut voir.
Il n'y a qu'un seul monde et il est faux, cruel, contradictoire, séduisant et dépourvu de sens. Un monde ainsi constitué est le monde réel. Nous avons besoin de mensonges pour conquérir cette réalité, cette "vérité".
Bon... après un moi() à faire autre chose, j'ai implémenté tout ça sans problèmes (en fait c'était tout simple, ça m'a pris 45 min et 150 lignes, en mode usine à gaz).
Le sujet est résolu...
La gentillesse est le langage qu'un sourd peut entendre et qu'un aveugle peut voir.
Il n'y a qu'un seul monde et il est faux, cruel, contradictoire, séduisant et dépourvu de sens. Un monde ainsi constitué est le monde réel. Nous avons besoin de mensonges pour conquérir cette réalité, cette "vérité".
faire un bastard tetris
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
La gentillesse est le langage qu'un sourd peut entendre et qu'un aveugle peut voir.
Il n'y a qu'un seul monde et il est faux, cruel, contradictoire, séduisant et dépourvu de sens. Un monde ainsi constitué est le monde réel. Nous avons besoin de mensonges pour conquérir cette réalité, cette "vérité".
La gentillesse est le langage qu'un sourd peut entendre et qu'un aveugle peut voir.
Il n'y a qu'un seul monde et il est faux, cruel, contradictoire, séduisant et dépourvu de sens. Un monde ainsi constitué est le monde réel. Nous avons besoin de mensonges pour conquérir cette réalité, cette "vérité".
La gentillesse est le langage qu'un sourd peut entendre et qu'un aveugle peut voir.
Il n'y a qu'un seul monde et il est faux, cruel, contradictoire, séduisant et dépourvu de sens. Un monde ainsi constitué est le monde réel. Nous avons besoin de mensonges pour conquérir cette réalité, cette "vérité".
La gentillesse est le langage qu'un sourd peut entendre et qu'un aveugle peut voir.
Il n'y a qu'un seul monde et il est faux, cruel, contradictoire, séduisant et dépourvu de sens. Un monde ainsi constitué est le monde réel. Nous avons besoin de mensonges pour conquérir cette réalité, cette "vérité".