Scénario : Vous développez un jeu de serpent dans lequel le serpent traverse un terrain de jeu. En consommant de la nourriture, la longueur du serpent augmente d'un élément. Les parties du corps doivent suivre la tête du serpent de manière enchaînée.
Le mécanisme de base s'articule autour de la gestion de deux structures de données :
Serpent basé sur une grille
Dans une grille -basé sur un serpent, les éléments du corps occupent des cellules de grille fixes. Au fur et à mesure que la tête bouge, la nouvelle position de la tête est insérée à l'avant de la liste du corps du serpent et la position de la queue est supprimée.
body = [(3, 3), (3, 4), (4, 4), (5, 4), (6, 4)] if snake_head_moves_up: body.insert(0, (snake_head_x, snake_head_y - 1)) del body[-1]
Serpent à mouvement libre
Pour un serpent à mouvement libre, les éléments du corps sont positionnés dynamiquement en fonction de leur distance à la tête. Une fonction create_body personnalisée calcule la distance euclidienne entre les éléments du corps consécutifs et ajoute de nouveaux éléments si nécessaire.
def create_body(track, no_pearls, distance): body = [(track[0])] # Head for _ in range(1, no_pearls): prev_pos = body[-1] next_pos = track[body.index(prev_pos) + 1] # Track position index is incremented dx, dy = next_pos[0] - prev_pos[0], next_pos[1] - prev_pos[1] if math.sqrt(dx**2 + dy**2) >= distance: body.append(next_pos) return body
Dans les deux scénarios, le corps du serpent suit le chemin de la tête en mettant à jour positions dans les structures de données respectives (cellules de grille ou positions dynamiques). La longueur du serpent augmente lorsque la tête consomme de la nourriture.
Feature | Grid-Based Snake | Free-Moving Snake |
---|---|---|
Snake Movement | Snapped to grid cells | Smooth, continuous movement |
Body Representation | List of tuples (column, row) | List of tuples (x-coordinate, y-coordinate) |
Distance Computation | Not applicable | Euclidean distance between body elements |
Run-time Complexity | O(1) | O(n), where n is the length of the snake |
En tirant parti d'une combinaison de structures de données et d'algorithmes de mouvement, vous pouvez créer efficacement un serpent qui interagit de manière réaliste avec son environnement. Le choix de l'approche dépend du style de jeu souhaité et du niveau de complexité que vous souhaitez introduire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!