Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Ayuda soy un novato.

Iniciado por IFRIT, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

Vicente

                                Vale vale, está claro que no harás nunca un Homeworld con div (soy de estrategia sorry ;) ), pero aqui se ha hablado para empezar a hacer un juego 2d... Y para empezar no los veo mal.

  El div2 da los conceptos básicos de programación que vas a aprender tanto con c como con pascal, y de una forma bastante más agradable. No veo al c o al pascal para hacer un juego sencillo (fuera de algo lleno de ascii por todos los lados). Y además viendo cosas por pantalla (que quieras que no siempre anima). Claro está que luego tendrás que moverte a otras cosas, pero para empezar, no lo veo mal.                                

NeLo

                                Pues yo no veo C ni complicado, ni desordenado, ni todos esos adjetivos negativos que le ponen O.o

¿Será que la peña tiene demasiados prejuicios?                                
Drowning deep in my sea of loathing

fiero

                                Desordenado puede serlo mucho  :jaja: , incluso 'ofuscado'. Lo de complicado, hombre.... a mi el ruso me parece muy complicado, solo es eso (si me caso con una rusa ya no me parecerá tan complicado)  :D                                
www.videopanoramas.com Videopanoramas 3D player

jpastor

                                Yo me quedo con lo que alguien dijo en algun lado de este foro, C es como tu lo quieras hacer: ordenado/desordenado, elegante/feo, claro/enrevesado, ...                                

Vicente

                                A ver, de desordenado, ofuscado o feo no he dicho nada (eso es cosa del que programa muchas veces). Pero si que creo que si estás aprendiendo puede enfrentarte de forma más sencilla (o atractiva si quieres) a ciertos problemas o conceptos. Poner un dibujo por pantalla y que se mueva es muy fácil con div2 y con c no tanto. Entender el conceto de id, pid, señales, etc puede ser más sencillo con una nave matando asteroides que con un quicksort en paralelo, etc, etc.

Y prejuicios contra el c ninguno que conste (si no me habría ya ahorcado en la uni... ;) ) Un saludo!

Vicente                                

sés

                               
CitarNo veo al c o al pascal para hacer un juego sencillo (fuera de algo lleno de ascii por todos los lados). Y además viendo cosas por pantalla (que quieras que no siempre anima).

Te aseguro que no soy el único que ha hecho jueguecitos tontos en C o Pascal con gráficos, sin tener ni puñetera idea del tema. Todos los compiladores traen una librería gráfica (unas más cutres que otras :P) con las que se pueden hacer cosillas para empezar, que es de lo que se trata.

Lo que pasa ahora, es que muchos quieren empezar la casa por el tejado, y quieren que su primer juego sea en 3D, con videos, sonido del copón... Claro, estas herramientas te dan muchas facilidades para eso, pero yo creo así se aprende mucho menos.

Resumiendo, que NO veo nada de malo en utilizar DIV & co., pero no creo que sea la forma de aprender a programar.


P.D.: Esto se sigue saliendo del tema, no tiene nada que ver con lo que dije en un principio.                                
Soy indeciso... ¿o no?

Ediol

                                Wenas, yo empecé con qbasic y ña verdad es que cuando conseguí hacer "animaciones" en ascii me parecio un gran logro. He visto de lejos Div y me parece que es para lo que es, para hacer cosas poco complicadas, debido a que su adaptación para que sea mas facil, también lo convierte en más limitados, pero se pueden hacer cositas curiosas con esos programas (basta con ver el Shangai de Loover, que a mi me vicia).

Lo que si que comparto con algunos de vosotros es que no somos ni más listos ni más tontos que las nuevas generaciones (ni q yo fuera muy viejo, jeje). Así como nosotros hemos aprendido un lenguaje "dificil" como es C, en comparación con los adaptados, creo que los nuevos pueden hacerlo. Pero por ello no van a tener que abrir el VC y ponerse con la programación gráfica. Recomiendo a todo el que empiece que lo haga cogiendo una buena base, si es necesario creando el clasico snake en ascii y modificando el codivo xmil veces para probar nuevas técnicas.                                

Mars Attacks

                               
Ni siquiera hacen falta gráficos para crear un juego. Tengo por aquí el típico juego de los palotes para jugar entre dos (si alguien lo hiciera en red molaría más, pero en fins):




#include <stdio.h>

#include <curses.h>



#define LEFT 111

#define RIGHT 112

#define ESPACIO 32

#define GUION 45





typedef struct {

   int destapado;

       int seleccionado;

       int linea;

} palo;



palo palote[9];



typedef struct {

       char nombre[8];

} jugador;



int lose = 0;

int n;



void dibujar ( palo *palote );

void inicializar ( palo *palote );



void inicializar ( palo *palote ) {

  int i;



  for ( i=0; i<10; i++ ) {

       palote[i].destapado = 0;

       palote[i].seleccionado = 0;

       palote[i].linea = 0;

  }



  palote[0].linea=1;



  for ( i=1; i<3; i++ ) { palote[i].linea = 2; }

  for ( i=3; i<6; i++ ) { palote[i].linea = 3; }

  for ( i=6; i<10; i++ ) { palote[i].linea = 4; }



  palote[0].seleccionado = 1;



}



void dibujar ( palo *palote ) {

  int i, x=10, y=7;    /* 80 x 25 */



  for ( i=0; i<10; i++ ) {

       if ( i==0 ) { x = 16; }

       if ( i==1 ) { x = 14; }

       if ( i==3 ) { x = 12; }

       if ( i==6 ) { x = 10; }



               if ( palote[i].destapado==0 ) {

                       if ( palote[i].seleccionado==1 ) {

                               mvaddstr ( y, x, "[I<98>]" );   /* aqui deberia ir algo */

                               x += 4;

                       }

                       else {

                               mvaddstr ( y, x, " I " );       /* aqui tambien */

                               x += 4;

                       }

               }

               else {

                       x += 4;

               }



               if ( (i==0) || (i==2) || (i==5) ) { y++; }

  }

}





main() {



       int lin, loser;

       int seleccion=0, i=0, k=10;

       char key;

       jugador jugador[1];



for ( n=0; n<2; n++ ) {

       printf ("nJugador%u : ",n+1 );

       scanf( "%8s", jugador[n].nombre );

}



n = 0;  /* Comienza jugador 1 */



inicializar ( palote );



       /* INICIALIZAR CURSES */



   initscr();                  /* initialize the curses library */

   keypad( stdscr, TRUE ); /* enable keyboard mapping */

   nonl();                     /* tell curses not to do NL->CR/NL on output */

   cbreak();                   /* take input chars one at a time, no wait for n */

   noecho();                   /* no echo input - in color */



while ( lose != 1 ) {



       clear();

       mvaddstr ( 1, 4, "Juega" );

       mvaddstr( 1, 10, jugador[n].nombre );

       mvaddstr ( 2, 4, "o para izquierda, p para derecha," );

       mvaddstr ( 3, 4, "espacio para seleccionar, - para pasar el turno" );

       mvaddstr ( 4, 4, "-----------------------------------------------" );

       dibujar ( palote );

       key = getch();

       switch ( key )

       {

               case LEFT:

                       palote[i].seleccionado=0;

                       while ( ( (i-1) >= 0 ) && ( palote[i-1].destapado==1 ) ) { i--; }

                       if ( (i-1) < 0 ) {

                               i = 9;

                               while ( palote[i].destapado == 1 ) { i--; }

                               palote[i].seleccionado = 1;

                       }

                       else {

                               palote[--i].seleccionado = 1;

                       }

                               break;



               case RIGHT:

                       palote[i].seleccionado = 0;

                       while ( ( (i+1) <= 9 ) && ( palote[i+1].destapado == 1 ) ) { i++; }

                       if ( (i+1) > 9 ) {

                             i = 0;

                             while ( palote[i].destapado == 1 ) { i++; }

                                palote[i].seleccionado = 1;

                       }

                       else {

                               palote[++i].seleccionado = 1;

                       }

                               break;



               case ESPACIO:

                       palote[i].destapado = 1;

                       palote[i].seleccionado = 0;

                       lin = palote[i].linea;

                       seleccion = 1;

                       k--;

                       if ( k == 1 ) {

                               lose = 1;

                               loser = (n == 0)? 1 : 0;

                       }

                       while ( ( (i+1) <= 9 ) && ( palote[i+1].destapado == 1 ) ) { i++; }

                       if ( (i+1) > 9 ) {

                             i = 0;

                             while ( palote[i].destapado == 1 ) { i++; }

                                palote[i].seleccionado = 1;

                       }

                       else {

                               palote[++i].seleccionado = 1;

                       }

                       break;



               case GUION:

                       if ( seleccion == 0 ) { fflush ( stdin ); }

                       else {

                               if ( n == 0 ) { n = 1; }

                               else { n = 0; }

                               seleccion = 0;

                       }

                       break;



               default:

                       fflush ( stdin );

                       break;



       } /* end switch */



       /* cambio de jugador si hay cambio de linea tras seleccion */



       if ( ( lin != palote[i].linea ) && ( seleccion == 1 ) ) {



                       if ( n == 0 ) { n = 1; }

                       else { n = 0; }

                       seleccion = 0;

       }



} /* lose=0 */

clear();

mvaddstr ( 1, 4, "Juega" );

mvaddstr( 1, 10, jugador[n].nombre );

mvaddstr ( 2, 4, "o para izquierda, p para derecha," );

mvaddstr ( 3, 4, "espacio para seleccionar, - para pasar el turno" );

mvaddstr ( 4, 4, "-----------------------------------------------" );

dibujar ( palote );

key = getch();

endwin();

printf ( "n`·.¸¸.·´¯`·.¸¸.·´¯`> Has perdido, %s <´¯`·.¸¸.·´¯`·.¸¸.·´nn", jugador[loser].nombre );

}




Supongo que todos sabéis como funciona. Está hecho para linux y se compilaba con las ncurses, algo así como gcc -lcurses -o nombreprograma lala.c

Me pregunto ahora mismo si esto no debería de haberlo puesto en forma de link y me he pasado con la extensión... si le molesta a alguien lo borro (o lo borre sync o el F.M. -Kiss?- si no me encuentro por aquí).
Pues eso, que el lenguaje que vayas a usar está en función de qué quieres conseguir.                                

dark dijkstra

                                Bueno bueno bueno... pero a ver, tanta rabia os da el DIV??
Si es q no lo entiendo...

Div (y estoy generalizando, donde ponga DIV puede poner Div2, DarkBasic...) son LENGUAJES de programacion, orientados a lo q sea, pero lo son.

Vale, estan orientados a videojuegos, pero se pueden hacer muchas cosas con ellos, no solo mover muñequitos por la pantalla.

Reconozco q hay cosas por ahi circulando q se venden como "lenguajes" y no son tales, pero personalmente no creo ni mucho menos q ese sea el caso del DIV2.

DIV2 tiene tipos de variable, punteros, memoria dinamica, multiproceso... vamos, q el 99% de las practicas de C de una carrera de informatica las puedes hacer en DIV2. Si es q xq sea muy facil mover sprites no quiere decir q no puedas hacer un quicksort en DIV, al igual q lenguajes especificos, como LISP valen para mas cosas q para hacer logica e inteligencia artificial...

Lo cual lleva a otra cosa. Si, un novato puede aprender C o DIV2. Si aprende C, pues genial, dominara uno de los lenguajes mas importantes q hay, pero obtendra resultados "bonitos" muuuuuucho mas tarde q si lo hace con DIV, y total, lo q aprenda con este ultimo no sera (ni por asomo) una perdida de tiempo.

Asi pues, al menos esta es mi opinion y me baso en mi propia experiencia (yo tambien soñaba hace unos años con hacer juegos y no sabia ni lo q era compilar) es q si alguien quiere adentrarse en el mundo de la programacion de videojuegos, empiece con algun lenguaje "orientado a juegos" como os encanta encasillarlos y coger algo de soltura programadora. A partir de ahi, pegas un saltito a C, C++ o lo q sea, pero seamos serios, si alguien no tiene ni idea, no le puedes sentar delante de un compilador de C++ a q te haga un motor 3d en Opengl... es un proceso q lleva tiempo... pero todo llegara.

Atentamente

Pd.- y si DIV decis q viene de C... C viene de ensamblador... y este de codigo maquina... y nadie hace juegos en codigo maquina !!   ; P                                

Tyrell

                                Veréis, yo lo veo así:

Si quieres dedicarte profesionalmente a la programación de videojuegos, ya puedes empezar con el C++.

Si no es el caso pero quieres un resultado semi-profesional, te recomiendo BlitzBasic/Blitz3D.

Si quieres pasar el rato o divertirte, mejor un generador de juegos al estilo Game Maker.

De todos modos, es sólo una opinión.                                

Sergio

                                yo creo q si lo q kiere hacer es un videojuego, lo basico lo puede aprender con uno de estos programas q dije (DIV, etc.), pq, en mi caso por lo menos, cto antes obtenga resultados mas me "animo". luego, lo basico ya lo sabes, asi q te metes a c/c++ y cdo lo domines te metes en programacion grafica. pero weno... el mismo...

saludos!!                                
here are only 10 types of people: those who understand binary and those who don't

Loover

                                Hay un parrafo en el manual oficial del Fenix 0.7 original de Cebrian que me impacto mucho al leerlo. Reza así:

"Si nunca has programado en ningún lenguaje y decides empezar con Fenix y leyendo este manual, sufrirás graves heridas mentales que te marcarán para el resto de tu vida. Lee antes el tutorial escrito para el caso (actualmente en preparación)."
Agosto del 2000

Sino me equivoco dicho tutorial no se escribió nunca (por lo menos yo no lo encontré).

Por esa fecha, mis conocimientos en programación eran muy muy elementales (ni que ahora fuera Carmack, pero bueno): algo de basic trasteando con el msx.
Fenix me llamo la atención desde el primer momento y por supuesto hice caso omiso de la advertencia (creo que la puso con un fin morboso; una regla a saltarse). Y no me arrepiento.
Con fenix hice mis primeros jueguecillos y aprendí conceptos como multiprogramación, proceso, hilo, variables (locales al proceso o globales a todos ellos), array, puntero, estructura, diferentes esquemas iterativos, etc.
A la misma vez aprendí pascal (muy similar en cuanto a los tokens de fenix) e iba progresivamente entendiendo más y más conceptos.
En realidad, el último lenguaje con el que me metí fue con C/C++ (después incluso que trastear con ensamblador; incluso pasé, este si que no se lo recomiendo a nadie, por Modula 2) y para cuando llegue a este lenguaje, gracias a la base que llevaba, me resulto muy sencillo.
Y sí, de todo lo que he probado me quedo con C++, pero eso no quita que Fenix fuera el lenguaje que me diera ese primer empujón, y se lo agradezco un montón a Cebrian y a las personas que se pegaron con el c, la multitarea, los threads y todo eso que para mí era un galimatías intragable por entonces para crear una herramienta cercana al programador novel: sencilla y eficaz para un jueguecillo 2d.

Un lenguaje como div, fenix, etc es una opción mas que aceptable. Pero no te quedes ahi, sigue probando todo lo que pase por tus manos ;)

Y si estais aburridos, probar mi juego, que me hareis feliz. Absteneos si no os gustan los juegos tipo puzzle, 2D,  o... hechos con Fenix ;)

http://www.lovernio.host.sk/shangai_final.zip
Nota: si no os funciona directamente el enlace probar a copiarlo y pegarlo en el explorer.                                
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

Antares

                                Mars Attack.

He intentado compilar el juego bajo borland c y bajo visual c y el unico impedimento de momento es que no tengo el archivo de cabecera curses.h

¿Lo podria compilar si lo tuviese?.                                

Mars Attacks

                                Emmm está hecho para linux, no creo que windows tenga esa librería. Si quieres, puedo pasarte el ejecutable ya compilado, pero repito que está compilado con el gcc desde linux. Poderse compilar, se puede, si es eso lo que preguntas.                                

RedHat

                               
CitarBueno bueno bueno... pero a ver, tanta rabia os da el DIV??
Si es q no lo entiendo...

Div (y estoy generalizando, donde ponga DIV puede poner Div2, DarkBasic...) son LENGUAJES de programacion, orientados a lo q sea, pero lo son.

Vale, estan orientados a videojuegos, pero se pueden hacer muchas cosas con ellos, no solo mover muñequitos por la pantalla.

Reconozco q hay cosas por ahi circulando q se venden como "lenguajes" y no son tales, pero personalmente no creo ni mucho menos q ese sea el caso del DIV2.

DIV2 tiene tipos de variable, punteros, memoria dinamica, multiproceso... vamos, q el 99% de las practicas de C de una carrera de informatica las puedes hacer en DIV2. Si es q xq sea muy facil mover sprites no quiere decir q no puedas hacer un quicksort en DIV, al igual q lenguajes especificos, como LISP valen para mas cosas q para hacer logica e inteligencia artificial...

Lo cual lleva a otra cosa. Si, un novato puede aprender C o DIV2. Si aprende C, pues genial, dominara uno de los lenguajes mas importantes q hay, pero obtendra resultados "bonitos" muuuuuucho mas tarde q si lo hace con DIV, y total, lo q aprenda con este ultimo no sera (ni por asomo) una perdida de tiempo.

Asi pues, al menos esta es mi opinion y me baso en mi propia experiencia (yo tambien soñaba hace unos años con hacer juegos y no sabia ni lo q era compilar) es q si alguien quiere adentrarse en el mundo de la programacion de videojuegos, empiece con algun lenguaje "orientado a juegos" como os encanta encasillarlos y coger algo de soltura programadora. A partir de ahi, pegas un saltito a C, C++ o lo q sea, pero seamos serios, si alguien no tiene ni idea, no le puedes sentar delante de un compilador de C++ a q te haga un motor 3d en Opengl... es un proceso q lleva tiempo... pero todo llegara.

Atentamente

Pd.- y si DIV decis q viene de C... C viene de ensamblador... y este de codigo maquina... y nadie hace juegos en codigo maquina !!   ; P

Joe tio, ke sabio ke eres, me descubro ante ti  :o  :P                                
/RedHat//






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.