![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Por lo que recuerdo de clase (que a esta alturas es poco
) hay varias estrategias para resolverlo.Una de las más fáciles de implementar es "Prueba y error". Se trata de evaluar todas las posibilidades e ir descartando las que no son correctas. En tu caso recorrer todas las celdas del tablero, e ir descartando las que no son accesibles o no están a accesibles con tu tirada. Te queda generar una función que te devuelva la distancia entre 2 celdas del tablero.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#2
|
|||
|
|||
|
le he preguntado a ChatGPT:
Cita:
Código:
#include <vcl.h>
#include <queue>
#include <set>
#include <utility> // Para std::pair
#include <vector>
#pragma hdrstop
#pragma argsused
// Definir las dimensiones del tablero
const int FILAS = 11;
const int COLUMNAS = 12;
// Función para obtener las posiciones alcanzables
std::set<std::pair<int, int>> movimientos_posibles(std::pair<int, int> inicio, int puntos_movimiento) {
// Direcciones de movimiento: arriba, abajo, izquierda, derecha
std::vector<std::pair<int, int>> direcciones = { {-1, 0}, {1, 0}, {0, -1}, {0, 1} };
// Set para almacenar las posiciones alcanzables
std::set<std::pair<int, int>> visitadas;
// Cola para BFS (posición actual y puntos de movimiento restantes)
std::queue<std::pair<std::pair<int, int>, int>> cola;
// Agregar la posición inicial
cola.push({inicio, puntos_movimiento});
visitadas.insert(inicio);
while (!cola.empty()) {
// Obtener el frente de la cola
auto actual = cola.front();
cola.pop();
int fila_actual = actual.first.first;
int col_actual = actual.first.second;
int movimientos_restantes = actual.second;
if (movimientos_restantes > 0) {
// Explorar las 4 direcciones
for (auto direccion : direcciones) {
int nueva_fila = fila_actual + direccion.first;
int nueva_columna = col_actual + direccion.second;
// Verificar si la nueva posición está dentro del tablero
if (nueva_fila >= 0 && nueva_fila < FILAS && nueva_columna >= 0 && nueva_columna < COLUMNAS) {
std::pair<int, int> nueva_posicion = {nueva_fila, nueva_columna};
// Si la posición no ha sido visitada
if (visitadas.find(nueva_posicion) == visitadas.end()) {
// Agregar la nueva posición
visitadas.insert(nueva_posicion);
// Agregar la nueva posición a la cola con los movimientos restantes
cola.push({nueva_posicion, movimientos_restantes - 1});
}
}
}
}
}
return visitadas;
}
int main() {
// Posición inicial en la celda (5, 5)
std::pair<int, int> inicio = {5, 5};
int puntos_movimiento = 3; // Número de puntos de movimiento
// Obtener las celdas alcanzables
std::set<std::pair<int, int>> celdas_alcanzables = movimientos_posibles(inicio, puntos_movimiento);
// Imprimir las posiciones alcanzables
for (auto posicion : celdas_alcanzables) {
printf("(%d, %d)\n", posicion.first, posicion.second);
}
return 0;
}
creo que por ahi ya puedo ir desarrollandolo me he puesto este disco para animarme con el codigo jaja ![]() https://www.youtube.com/watch?v=0YG2...45yRnZ8mA1RE93 Última edición por navbuoy fecha: 15-09-2024 a las 07:05:21. |
|
#3
|
|||
|
|||
|
ya hemos hecho una pantalla de Login decente, menos mal
![]() |
|
#4
|
||||
|
||||
|
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#5
|
|||
|
|||
![]() ![]() Mira Neftali, joe estuvo ampliando cosas del interface de botones con mas cosas que tendra el juego Tambien he optimizado el juego (porque utilizando TTable que carga todo en memoria, cargaba 18.000 registros del tablero total de celdas (que cazurro llega a ser uno eh?), menos mal que me di cuenta que con un TQuery todo queda mucho mas optimizado a nivel de consultas de X registros y ya) como ves ahi, la policia nos atosiga igual que en la vida real, no es fantastico este juego?? Última edición por navbuoy fecha: 22-09-2024 a las 01:18:01. |
|
#6
|
|||
|
|||
|
Mirad Casimiro y Neftali
![]() |
|
#7
|
|||
|
|||
![]() ![]() Última edición por navbuoy fecha: 22-09-2024 a las 05:28:29. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Como seleccionar un rango de celdas con Ctrl+clic de un StringGrid | wanda | Varios | 3 | 28-04-2018 19:56:24 |
| StringGrid problemas al seleccionar celdas | danielmj | Varios | 3 | 29-10-2014 19:38:58 |
| Cambiar color por defecto al seleccionar varias celdas de un TStringGrid | JAI_ME | Varios | 1 | 05-08-2012 18:58:19 |
| como seleccionar las celdas de un dbgrid con el mouse | jjaen26 | OOP | 0 | 13-10-2011 17:48:45 |
| Tablero de Control | lucero_chivas | C++ Builder | 5 | 23-08-2006 16:59:31 |
|