entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Haciendo un juego simple para practicar. Java. NetBeans

La pregunta es simple. En el juego, que es de carreras, puedes jugar, comprar vehiculos, ganar partidas dinero experiencia subir de nivel desbloquear vehiculos y funciones etc. Pero en medio de la carrera, todo es por turnos. Corres tu y luego corren los demás. Y luego quedas en una posicion y segun tu posicion ganas un dinero u otro.
Pero como puedo hacer para que el juego no sea por turnos? Que tu puedas actuar o no, acelerar o no, y aun asi el resto de los corredores sigan jugando independientemente de si pulsas o no las teclas?
No necesito que me hagais el codigo, solo que me digais cual deberia ser la mecanica y yo la implemento.
No mola un juego de carreras por turnos xD

1voto

steven comentado

porque no haces un juego de cartas eso te podria ir bien al estilo yu-gi-oh

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola @Demrottens,

para hacer un jugo multijugador hay varias estrategias y "motores de juego" que lo resuelven, pero en este caso, siendo un ejercicio práctica para aprender, será más útil mojarse y meter mano ;-)

En rigor, si querés que un software haga varias cosas a la vez, tenés que usar algún tipo de programación multihilo o multiproceso. En la práctica, los threads o los forks sirven para lo mismo, pero cuestiones del sistema operativo destino hacen que sea más eficiente crear un hilo o una tarea.

En Java, el enfoque es multithread, pero la implementación de la Máquina Virtual lo puede implementar como thread o fork según la plataforma.

De todas formas, si tu juego tiene interfaz de texto, podrías también usar una muy vieja aproximación, más simple, que es la que se usaba en los primeros juegos, como el Pong, en que todo era un único proceso: el juego corre en un bucle que va mirando si un jugador envió un comando (acelerar, frenar, doblar, etc) y con esos parámetros hace avanzar al auto solo un poco, para luego ver lo que hace el segundo jugador, y el tercero, etc.

De esta manera todos van avanzando un poco por turnos muy cortos, y en caso de que al momento del turno no haya cambios, se ejecuta la movida con los valores que tenía en el ciclo anterior.

Esto funciona de veras bien, y la limitación que tiene también la tiene el hacerlo multithread: el teclado no podrá enviar 2 teclas a la vez, con lo que la concurrencia pasa a estar limitada por el hardware de entrada, que es muchísimo más lento que la CPU.

Saludos cordiales!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta