Juego mario para la universidad !Ayuda! porfavor.

W

Hola :smile:
Programo en lenguaje C y necesito ayuda para realizar mi trabajo final para la universidad. El juego que tengo que hacer consiste de hacer un Mario bros simple donde un personaje estatico haga la ilusion de que avanza recorriendo el piso y las tuberias. El personaje debe poder saltar las tuberias y hacer contacto con las tuberias.

La base del proyecto es usar vectores y solo puedo utilizar las siguientes herramientas :

Estructuras(herramientas) .- coordenadas en ejes x,y
if, else, while, do while y for.

Con variables, entradas y salidas de tipo : int , char (cadenas) y vectores como ya mencione antes.
Solo con funciones int y procedimientos void.

Especificamente:

  • Hacer un personaje
  • Hacer que el piso y tuberias se acerquen al personaje (para crear una ilusion de que avanza). El piso esta compuesto de guiones ' _ ' y las tuberias 'T' y se tiene que guardar estos caracteres char utilizando vectores.
    -Hacer que el personaje tenga contacto con las tuberias ya sea que pulse el boton para avanzar y una tuberia 'T' se lo impida o que salte ensima de la tuberia.

El PROBLEMA para mi es que la tuberias tienen que generarse al azar, supongo que con un randomize.

tendria que quedar asi :
la P seria mi personaje
"P"
_ _ _ _ _ _ _ _ _ _ _ _ _ _ T _ _ _ _ _ _ _ _ _ T _ _ _ _ _ _ _ _ _ _ _ T_ _ _ _ _ _ _T

porfavor ayudita.

gracias de antemano. :grin:

tirutu

Cuál es exactamente la pregunta porque el código no te lo vamos a pasar. Es todo gestionar la matriz, leer comandos y tras cada movimiento borras la consola y muestras el siguiente paso.

W

Perdon si hice parecer que queria el codigo hecho

bueno queria empezar haciendo que mis tberias se muevan como exprese arriba y mi problema es que no se como hacer para que la T(tuberia) se mueva y mientras se mueva eta primera T, en la posicion[TAM] salga una T y esta tambien se mueva sin perjudicar el movimiento de la primera T y asi susecivamente vayan apareciendo T(tuberias)

para que se entienda mejor mi codigo es :

W

Perdon si hice parecer que queria el codigo hecho

bueno queria empezar haciendo que mis tberias se muevan como exprese arriba y mi problema es que no se como hacer para que la T(tuberia) se mueva y mientras se mueva eta primera T, en la posicion[TAM] salga una T y esta tambien se mueva sin perjudicar el movimiento de la primera T y asi susecivamente vayan apareciendo T(tuberias)

para que se entienda mejor mi codigo es :
(si no se entiende me avisan porfavor para aclarar si es que mi codigo esta muy confuso)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define TAM 40
//HACER QUE SEE MUEVAN MAS TUBERIAS.
void gotoxy(short x, short y)
{
COORD pos = { x, y };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}

void llenar_vector_de_lineas(char lista[TAM]) //para generar el piso entero
{
int pos;
// Llenar valores
for(pos=0; pos<TAM; pos++) //pos=2;pos<TAM;pos=pos-1
{
lista[pos]='_';
}

}

void mostrar(char lista[TAM])
{
int pos;
// Mostrar valores
for(pos=0; pos<TAM; pos++)
{
printf("%c ",lista[pos]);
}
}

void avanzar (char lista[TAM], int pos)
{
pos=TAM;
while (1==1)
{
lista[pos]='';
lista[pos-1]='T';
pos=pos-1;
mostrar(lista);
Sleep (150);
system ("cls");
//Sleep (200);
if (lista[0]=='T')
{
lista[pos]='
';
pos=pos+TAM;
}
}

}
int main()
{
char lista[TAM];
int pos;
// int pos=0;
// while (pos<TAM)
//{
//gotoxy(5,20);

  llenar_vector_de_lineas(lista);

avanzar(lista,pos);

// system ("cls");
// Sleep (1000);
// pos=pos+1;
// }

return 0;

}

Shaktal3

Es un trabajo fin de grado?

Estamos bien si no sabes hacer eso a estas alturas...

W

Es un trabajo de fin de semestre (mi primer semestre).

se manejar todas las herramientas que mencione al principio es solo que estoy bloqueado y no se me ocurre una idea para lo de las tuberias:sweat_smile:

1 respuesta
Shaktal3

#6 aaah bueno, entonces comprensible, me había asustado xD

W

jajajaja me olvide aclarar ese detalle

que ideas tienen ? pls:grin:

GlatoR

Trabajo final de universidad o de primer año? Un amigo en su primer año hizo un comecocos muy decente.

W

se podria decir que es de primer año pero en realidad es solo mi primer semestre

1
W

#4 ayudita con eso porfavor:smile:
no se que camino tomar para que se vayan generando tuberias al azar y continuen el movimiento

ArC1

Que co** lo siento no poder ayudarte, mi trabajo final consiste en logarithmos (quicksort), siento como si tu proyecto fuera 100 veces mas dificil buena suerte!

NickNack

Se me ocurren muchas maneras pero no se cuales son las limitaciones por parte del que requiere el ejercicio. Para representar tu tablero tendrás un máximo de casillas o suelo. La linea sobre la que se mueve el personaje puede ser un array de datos, donde cada "cuadrado" este representado por un valor, por ejemplo: ['aire','aire','tuberia','aire','aire','aire',tuberia'] y simplemente vas sacando valores de delante y generando nuevos y mostrándolo por pantalla, actualizando 1 vez por segundo el bucle completo.

tirutu

Yo lo que haría sería con un bucle desplazar las columnas hacia la izquierda mediante copias y la última columna la tratas aparte poniendo el random en la casilla que te interese. Pones tantas opciones como probabilidad de que salga tubería quieras.

B

El terreno no necesitas moverlo. Solo las tuberias. Asi que creas una clase tuberia que contenga altura y el vector de inicio. Si todas las tuberias van a tener el mismo grosor pues creas un la variable constante si no. Pues un random entre valores.
Le añades a la clase tuberia un metodo que haga mover el vector 1 pixel hacia la derecha o los que sean para dar fluidez al juego. Este metodo será el que se llame cada vez que el jugador se mueva a la derecha.

Luego en el constructor inicializas el terreno y un metodo que añada cada cierto tiempo una tuberia que llamará al constructor de la clase tuberia pasando los valores y los metes en un array de estos objetos.

Ahora creas un metodo que se active cada cez que el jugador pulse abajo el botón de desplazarse a la derecha. Este metodo hará activar recorriendo el array de tuberias el metodo que mueva los vectores y sea lo que de señal de movimiento. Dependiendo de la velocidad requerida se moverá los pixeles que se quieran.

Ya añades el metodo que incluya el salto y el tropiezo.

Ahora falta el jugo. Es crear un metodo que compruebe si la distancia entre tuberia y otra se ha cumplido para añadir la siguiente a la ultima. Se reordena el array o un list y si una de las tuberias alcanza el final por la izquierda se elimina.

W

gracias a todos me estuve dando vueltas a la cabeza y lo logre haciendo que todo mi vector se mueva y en la penultima posicion aparecen tuberias de forma aleatoria que continuan con el movimiento del vector

W

mi duda ahora es como haria que mi personaje salte de una forma no muy tosca

mis limitaciones para hacer el personaje se reducen a usar variables char y/o cadenas y hacer printeados jugando con las posiciones en los ejes x,y

Usuarios habituales