Ir al contenido

publicidad

Foto

Ayuda con un RPG de Texto en C++


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
31 respuestas en este tema

  • gotenx

  • Boomer

  • vida restante: 100%
  • Registrado: 13 ene 2008
  • Mensajes: 4.257
#1

Escrito 23 agosto 2011 - 19:05

Buenas.
Veréis, estoy haciendo un RPG de texto en C++, por ahora llevo unas 120 lineas, no es mucho, pero he empezado esta tarde, y no soy un experto en C++.

El caso es que quiero que el usuario ponga comandos al estilo "ataca", "adelante", "coger" y tal, pero no tengo ni idea de como hacerlo.

Alguna ayuda ?
PD: El codigo tiene que ser 100% compatible con Windows y Linux.
Imagen Enviada

  • The_Hans

  • Saitama

  • vida restante: 100%
  • Registrado: 27 ene 2004
  • Mensajes: 7.490
#2

Escrito 23 agosto 2011 - 19:16

¿No es mejor hacer aunque sea una interfaz básica con imágenes? Lo digo porque usando Ogre3D no creo que tuvieras demasiados problemas en conseguirlo y es compatible con Windows y Linux.

A parte de eso no me acuerdo muy bien pero creo que había funciones estilo getchar() para leer texto de la entrada. Luego sólo tienes que analizar el texto y actuar en consecuencia :P

http://www.cplusplus...cstdio/getchar/

  • gotenx

  • Boomer

  • vida restante: 100%
  • Registrado: 13 ene 2008
  • Mensajes: 4.257
#3

Escrito 23 agosto 2011 - 19:18

El problema de la interfaz es que nunca (jamas) he hecho una, ni en C++ ni en Java ni nada, solo en C#: pero eso es otra cosa.

Tampoco nada de graficos, ni 3D ni 2D.
Lo de getchar() lo tengo hecho, el problema es que el codigo queda ilegible entre tantos switch y Ifs.

Voy a ver que tal Ogre3D, aunque me da pereza portar el juego :-(
Imagen Enviada

  • The_Hans

  • Saitama

  • vida restante: 100%
  • Registrado: 27 ene 2004
  • Mensajes: 7.490
#4

Escrito 23 agosto 2011 - 19:20

El problema de la interfaz es que nunca (jamas) he hecho una, ni en C++ ni en Java ni nada, solo en C#: pero eso es otra cosa.

Tampoco nada de graficos, ni 3D ni 2D.
Lo de getchar() lo tengo hecho, el problema es que el codigo queda ilegible entre tantos switch y Ifs.

Voy a ver que tal Ogre3D, aunque me da pereza portar el juego :-(



Mírate los ejemplos básicos y ve poco a poco, porque no es difícil pero puede desesperanzar mucho al principio al ver tantas cosas juntas.

Para hacer más legible el código divídelo en funciones y crea clases, así no tendrás tanta cosa junta y mezclada. Si yo no lo hiciera moriría, tengo librerías propias con más de 60.000 líneas xDDD

#5

Escrito 24 agosto 2011 - 18:34

Para hacer un juego como ese usa python o ruby, tio, que le dan 1000 vueltas al c++ y te la pela el rendimiento.

    Tholagar

  • CANCELADO
  • Registrado: 26 sep 2004
  • Mensajes: 8.202
#6

Escrito 24 agosto 2011 - 18:49

120 lineas de c++ no es nada, eso lo portas en una hora. Lo que quieres hacer pues con un cin >> a una variable de tipo char* y luego comprobando que esa variable sea igual a "Atacar" o la acción que quieres realizar y con lo que quieres que ocurra. Pero si hay algo menos coñazo que hacerlo con C++ inténtalo, porque te puedes llegar a desesperar mucho.

Imagen Enviada


  • The_Hans

  • Saitama

  • vida restante: 100%
  • Registrado: 27 ene 2004
  • Mensajes: 7.490
#7

Escrito 24 agosto 2011 - 19:17

Para hacer un juego como ese usa python o ruby, tio, que le dan 1000 vueltas al c++ y te la pela el rendimiento.


Para hacer juegos C++ es el maestro, ¿eso de que otros lenguajes le dan mil vueltas de dónde lo has sacado? ¿Vueltas en qué?

  • gotenx

  • Boomer

  • vida restante: 100%
  • Registrado: 13 ene 2008
  • Mensajes: 4.257
#8

Escrito 24 agosto 2011 - 21:12

Para hacer un juego como ese usa python o ruby, tio, que le dan 1000 vueltas al c++ y te la pela el rendimiento.


Para hacer juegos C++ es el maestro, ¿eso de que otros lenguajes le dan mil vueltas de dónde lo has sacado? ¿Vueltas en qué?

Creo que se refiere a que para hacer un juego de texto que use uno de esos lenguajes, ya que no necesito tanto rendimiento, y ademas es mas facil de hacer.

El caso es que me gusta C++ y quiero aprenderlo, y que mejor manera ? :]
Imagen Enviada

#9

Escrito 25 agosto 2011 - 12:18

Para hacer un juego como ese usa python o ruby, tio, que le dan 1000 vueltas al c++ y te la pela el rendimiento.


Para hacer juegos C++ es el maestro, ¿eso de que otros lenguajes le dan mil vueltas de dónde lo has sacado? ¿Vueltas en qué?

Creo que se refiere a que para hacer un juego de texto que use uno de esos lenguajes, ya que no necesito tanto rendimiento, y ademas es mas facil de hacer.

El caso es que me gusta C++ y quiero aprenderlo, y que mejor manera ? :]


C++ no es el 'absoluto' maestro en nada. Lo es cuando por engine, recursos, rendimiento necesitado, portabilidad o lo que sea, lo vayas a necesitar, pero si no es por eso, otros lenguajes son mucho mas rapidos y simples de desarrollar.

Para la muchos proyectos indie un lenguaje como Python o Ruby basta.

¿Has provado otros lenguajes? C++ es lo mas condenadamente dificil que hay por ahi, aunque si solo haces el juego por aprender...

  • The_Hans

  • Saitama

  • vida restante: 100%
  • Registrado: 27 ene 2004
  • Mensajes: 7.490
#10

Escrito 25 agosto 2011 - 12:40

Para hacer un juego como ese usa python o ruby, tio, que le dan 1000 vueltas al c++ y te la pela el rendimiento.


Para hacer juegos C++ es el maestro, ¿eso de que otros lenguajes le dan mil vueltas de dónde lo has sacado? ¿Vueltas en qué?

Creo que se refiere a que para hacer un juego de texto que use uno de esos lenguajes, ya que no necesito tanto rendimiento, y ademas es mas facil de hacer.

El caso es que me gusta C++ y quiero aprenderlo, y que mejor manera ? :]


C++ no es el 'absoluto' maestro en nada. Lo es cuando por engine, recursos, rendimiento necesitado, portabilidad o lo que sea, lo vayas a necesitar, pero si no es por eso, otros lenguajes son mucho mas rapidos y simples de desarrollar.

Para la muchos proyectos indie un lenguaje como Python o Ruby basta.

¿Has provado otros lenguajes? C++ es lo mas condenadamente dificil que hay por ahi, aunque si solo haces el juego por aprender...



Cuando digo que C++ es el maestro lo digo en el sentido de que una vez dominado los demás parecen sencillos en comparación. Por eso y porque es el más usado con diferencia, con mucha diferencia, y no porque las multinacionales sean masocas.

Además C++ es lo más usado con diferencia, es absurdo ponerse a aprender Python o Ruby si te quieres dedicar a esto. C++ es el maestro de todos los lenguajes actuales, es el más usado y tb es el más complicado. Si dominas C++ el resto parece pan comido. Así que como es lógico mejor tirar hacia lo que se usa en la industria y aprender de verdad antes que tirar hacia lenguajes que nadie usa para hacer juegos y que sólo te facilitan las cosas para que luego a la hora de la verdad te lluevan palos por todos los lados.

Y encima Pyhon o Ruby son lenguaje interpretados, con lo cual su rendimiento deja que desear frente a un compilado como es C++.

#11

Escrito 25 agosto 2011 - 13:03

¿Y de que sirve el rendimiento para un juego de texto por consola? ¿o para hacer ejercicios y aprender a programar? Y asi con 1001 casos.

En muchos casos el rendimiento de C++ es irrelevante.

El tio no ha dicho que quiera entrar a programar en la industria, ¿eh? ha dicho que quiere programar un pequeño juego. Nunca entiendo porque se recomienda C++ para todo, si el tio solo quiere hacer eso ruby o python me parecen mejores.

Yo llevo 3 años y medio programando como indie y hobbie y aun no he encontrado un solo caso donde haya necesitado el C/C++ para nada. Adapto el problema a lo que necesita mi proyecto y no necesitan nunca ese extra de rendimiento, ni tampoco el de Java o C# por cierto, q tb los conozco(junto a perl, bash, vb i php).

Que si un dia me da por hacer un juego de buenos graficos y tal y quiero portarlo, o necesito cierto rendimiento o libreria, o lo que sea, vale, pero por regla no. E incluso asi la mayoria de cosas 'duras' de hacer estan hechas por librerias que ya existen compiladas en C o C++, por lo que para hacer la logica del juego me parecera mejor usar uno de esos lenguajes(pyogre? boo? ya veremos en su momento xq si tengo alguno en mente)

  • The_Hans

  • Saitama

  • vida restante: 100%
  • Registrado: 27 ene 2004
  • Mensajes: 7.490
#12

Escrito 25 agosto 2011 - 13:29

gotenx lleva tiempo aprendiendo, no es lógico recomendarle un lenguaje interpretado a estas alturas y menos si quiere aprender de verdad. Sería un paso atrás descarado.

Si en 3 años no te has encontrado nada que requiera de C++ es que poco has trasteado o has hecho cosas realmente simples. Profesionalmente no verás otra cosa (como mucho y sólo quizás igual C# o Java, y Objective C, claro). Y no es por menospreciar, simplemente me lo parece.

Dices que conoces bash. Pero si bash es sólo un intérprete xDD Me parece que no tienes las cosas muy claras. Tampoco entiendo a qué viene decir que sabes php cuando es poco más que C orientado a desarrollo web.

#13

Escrito 25 agosto 2011 - 13:44

gotenx lleva tiempo aprendiendo, no es lógico recomendarle un lenguaje interpretado a estas alturas y menos si quiere aprender de verdad. Sería un paso atrás descarado.

Si en 3 años no te has encontrado nada que requiera de C++ es que poco has trasteado o has hecho cosas realmente simples. Profesionalmente no verás otra cosa (como mucho y sólo quizás igual C# o Java, y Objective C, claro). Y no es por menospreciar, simplemente me lo parece.

Dices que conoces bash. Pero si bash es sólo un intérprete xDD Me parece que no tienes las cosas muy claras. Tampoco entiendo a qué viene decir que sabes php cuando es poco más que C orientado a desarrollo web.


No he trasteado poco, de hecho tengo muchos proyectos variados. En cuanto a bash, me confundi, hace años que no lo toco.

No va de simplcidad o complejidad, todo lo que se pueda hacer en C++ se puede hacer en python siempre y cuando exista la libreria o lo que sea tambien, y el otro tope seria el rendimiento.

Aqui el problema es que para necesitar C/C++ necesitas estar haciendo un problema hipercomplejo o de hiperendimiento, como escribir drivers, kernels, SO's, aplicaciones criticas o de alto rendimiento.... juegos nuevos(eso si no usas una buena libreria que te ahorre el trabajo). O por X imposiciones variadas(trabajo, ports, engine, el codigo ya esta en el...)

Pero esque para lo que yo puedo hacer por lo menos no hay ningun handicap en usar ruby por ejemplo que es el mas lento de todos. ¿y que puedo hacer? Yo o un pequeño equipo de amateurs colaborando solo haran pequeños proyectos que no competirian en cuestiones tecnicas con los profesionales, por lo que no es necesario que el lenguaje logico sea C/C++, sea para juegos o para pequeñas aplicaciones o lo que sea, sobretodo sabiendo que vas a poder usar qualquier libreria.

Los lenguajes deben adaptarse a lo que tu haces. No va de dar un paso atras. La gente no usa python porque no sepa C++. Usar C++ para un juego de texto por consola es cagarla bastante, a menos que hay otras razones claro(gustos, aprender, lo que sea...)

En cuanto a aprender, me parece mas interesante aprender un lenguaje como ruby, pero eso va a gustos, claro.

    Lamont

  • CANCELADO
  • Registrado: 05 abr 2007
  • Mensajes: 9.894
#14

Escrito 25 agosto 2011 - 13:58

¿Quieres un menú con las opciones o que el usuario escriba lo que desea?

  • Sante05

  • Methuselah

  • vida restante: 100%
  • Registrado: 21 jul 2001
  • Mensajes: 182
#15

Escrito 27 agosto 2011 - 22:26

Profesionalmente no verás otra cosa (como mucho y sólo quizás igual C# o Java, y Objective C, claro)


A nivel profesional, C/C++ sigue siendo el lenguaje más usado, pero los lenguajes de script como Lua o Python le están arrebatando terreno a marchas forzadas, especialmente en lo relativo a la programación de la parte de lógica de juego de alto nivel (IA, comportamiento de los elementos del juego, etc...)

Ese tipo de tareas no suelen necesitar un rendimiento al nivel del motor gráfico, y son muy susceptibles a cambios de diseño, por lo que escoger un lenguaje de este tipo ofrece un tiempo de desarrollo más corto, y la posibilidad de iterar más rápido y prototipar ideas.

C/C++ se seguirá usando en el futuro inmediato para montar los cimientos del juego (el motor gráfico, físicas, etc...) pero conocer estos lenguajes es cada vez más recomendable para entrar en la industria como profesional.

En el caso de gotenx, y dejando razones externas (como aprendizaje) al margen, yo recomiendo Python. Su manejo de las cadenas es muy cómodo (uno de los puntos flacos de C/C++), e incluye también una librería para usar expresiones regulares, lo que lo hace una mejor herramienta para esa tarea en cuestión.

Incluso para aprender, es buena idea conocer lenguajes distintos que te abran la mente a otros modelos y paradigmas, para poder examinar los problemas desde nuevos ángulos. Python incorpora conceptos de programación funcional, una forma distinta de entender las variables (duck typing), y patrones como los decoradores o los mixins forman parte del lenguaje, lo que hará que te familiarices con esos conceptos de forma más natural.


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
publicidad