fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

empezar en c

143 Respuestas
16 Usuarios
0 Reactions
120.3 K Visitas
lacabra25
Respuestas: 84
Topic starter
(@lacabra25)
Trusted Member
Registrado: hace 18 años

Hola, quisiera que me recomendarais algun programa, gratuito si es posible, para compilar y programar en c, y saber si se puede hacer programas en c, que ademas de escribir texto en pantalla pueda manejar graficos, crear entorno grafico propio y similares (como los entornos graficos de un videojuego) y como se puede programar que se muestren imagenes en pantalla con c. Igualmente agradeceria cualquier referencia a manuales lo mas completos posibles sobre programacion en c, preferiblemente en castellano.

Gracias por cualquier ayuda que me podais ofrecer.

Responder
142 respuestas
lacabra25
Respuestas: 84
Topic starter
(@lacabra25)
Trusted Member
Registrado: hace 18 años

Es porque no has linkado con SDL. De todas formas no te voy ayudar con programación gráfica mientras no nos hagas caso y hagas las cosas como tiene que ser: primero aprende a programar y luego ponte con gráficos.

No se si los otros te querrán ayudar, pero te hemos dicho varias veces que primero aprendas a programar y luego pases a "hacerlo bonito".

Si quieres ayuda para aprender a programar aquí estoy, si quieres te doy mi correo, pero para que hagas caso omiso de lo que te dice la gente del foro, no.

creo que caso omiso no he echo, lei el manual recomendado (hasta el final), manejo tanto las constantes, como las structuras asi como arrays, cadenas, tipos numericos, lectura del teclado, impresion de texto (en blanco y negro sin un solo color), no uso el GOTO, uso while do while y si lo necesito for. He echo varias pruebas, no son programas con una finalidad pero son programas, y he conseguido hacer un programa completo de 443 lineas, usando 4 estructuras, 3 arrays de structuras, variables numericas que ni las he contado, una funcion aparte de la de main, y cadenas, comparacion de cadenas, lectura por scafn de dos palabras y las asigno a dos variables, escritura en pantalla de cadenas y variables. Creo que un programa completo, que funciona y del que no me ha dado error el compilador, es un programa programado, si falta algo para saber programar ¿pues que es porque no caigo?, lo unico que he preguntado es para igual que he echo un programa usando solo texto y sin graficos (sin hacerlo binito) hacerlo con algun grafico y continuando programando en C y lellendo otro manual mas.

Mi programa, que no se si lo verias antes, o mas que leistes graficos dejastes de leer:

#include <stdio>
#include <string>
#include <stdlib>
#define T_OBJM 5
#define T_DES 250
#define T_NOM 50
#define T_EST 100
#define BOMBONES 1
#define ESPADA 2
#define LLAVE 3
int asignalugar(int min, int max){
int al = rand() ;
while(al <min> max){
if(al > max){
al -= rand() ;
}
if(al <min> 0){
printf(" norte ");
}
if(lugares[personajes[1].estancia].sur > 0){
printf(" sur ");
}
if(lugares[personajes[1].estancia].este > 0){
printf(" este ");
}
if(lugares[personajes[1].estancia].oeste > 0){
printf(" oeste ");
}
ej = 3 ;
while(ej == 3){
printf("nn> ");
scanf("%s %s", verbo, nombre);
cv = strcmp(verbo, "salir");
cn = strcmp(nombre, "juego");
if(0 == cv && 0 == cn){
ej = 0 ;
}
cv = strcmp(verbo, "cerrar");
cn = strcmp(nombre, "juego");
if(0 == cv && 0 == cn){
ej = 0 ;
}
cv = strcmp(verbo, "mostrar");
cn = strcmp(nombre, "ayuda");
if(0 == cv && 0 == cn){
printf("nnLas ordenes en el juego se dan usando un verbo en infinitivo y un sustantivo, como por ejemplo "ir norte" que aria que el personaje, Felix, se dirija al norte, consiguiendo moverte, o "cojer bombones" que aria que el personaje cojiese los bombones.nLa finalidad del juego es conseguir una cita con la vecina, Ana, y superar los contratiempos que surjan.");
ej = 2 ;
}
cn = strcmp(nombre, "version");
if(0 == cv && 0 == cn){
printf("nnVersion del juego: 0.0nAutor: Jesús Herández Gormazn www.elrinconjhg.ya.st");
ej = 2 ;
}
cn = strcmp(nombre, "mochila");
if(0 == cv && 0 == cn){
printf("nn");
if(personajes[1].mochila.obj[BOMBONES] != BOMBONES && personajes[1].mochila.obj[ESPADA] != ESPADA && personajes[1].mochila.obj[LLAVE] != LLAVE){
printf("No tienes ningun objeto.");
}
else{
printf("Tienes los siguientes objetos:");
if(personajes[1].mochila.obj[BOMBONES] == BOMBONES){
printf("n - Bombones con forma de corazon.");
}
if(personajes[1].mochila.obj[LLAVE] == LLAVE){
printf("n - Llave dorada vieja.");
}
if(personajes[1].mochila.obj[ESPADA] == ESPADA){
printf("n - Espada afilada de combate.");
}
}
ej = 2 ;
}
cn = strcmp(nombre, "inventario");
if(0 == cv && 0 == cn){
printf("nn");
if(personajes[1].mochila.obj[BOMBONES] != BOMBONES && personajes[1].mochila.obj[ESPADA] != ESPADA && personajes[1].mochila.obj[LLAVE] != LLAVE){
printf("No tienes ningun objeto.");
}
else{
printf("Tienes los siguientes objetos:");
if(personajes[1].mochila.obj[BOMBONES] == BOMBONES){
printf("n - Bombones con forma de corazon.");
}
if(personajes[1].mochila.obj[LLAVE] == LLAVE){
printf("n - Llave dorada vieja.");
}
if(personajes[1].mochila.obj[ESPADA] == ESPADA){
printf("n - Espada afilada de combate.");
}
}
ej = 2 ;
}
cn = strcmp(nombre, "objetos");
if(0 == cv && 0 == cn){
printf("nn");
if(personajes[1].mochila.obj[BOMBONES] != BOMBONES && personajes[1].mochila.obj[ESPADA] != ESPADA && personajes[1].mochila.obj[LLAVE] != LLAVE){
printf("No tienes ningun objeto.");
}
else{
printf("Tienes los siguientes objetos:");
if(personajes[1].mochila.obj[BOMBONES] == BOMBONES){
printf("n - Bombones con forma de corazon.");
}
if(personajes[1].mochila.obj[LLAVE] == LLAVE){
printf("n - Llave dorada vieja.");
}
if(personajes[1].mochila.obj[ESPADA] == ESPADA){
printf("n - Espada afilada de combate.");
}
}
ej = 2 ;
}
cv = strcmp(verbo, "cojer");
cn = strcmp(nombre, "bombones");
if(0 == cv && 0 == cn && personajes[1].estancia == objetos[BOMBONES].lugar){
personajes[1].mochila.obj[BOMBONES] = BOMBONES ;
objetos[BOMBONES].lugar = 0 ;
printf("nHas cojido los bombones.");
ej = 2 ;
}
cn = strcmp(nombre, "espada");
if(0 == cv && 0 == cn && personajes[1].estancia == objetos[ESPADA].lugar){
personajes[1].mochila.obj[ESPADA] = ESPADA ;
objetos[ESPADA].lugar = 0 ;
printf("nHas cojido una espada.");
ej = 2 ;
}
cn = strcmp(nombre, "llave");
if(0 == cv && 0 == cn && personajes[1].estancia == objetos[LLAVE].lugar){
personajes[1].mochila.obj[LLAVE] = LLAVE ;
objetos[LLAVE].lugar = 0 ;
printf("nHas cojido una llave dorada.");
ej = 2 ;
}
cv = strcmp(verbo, "dejar");
cn = strcmp(nombre, "bombones");
if(0 == cv && 0 == cn && personajes[1].mochila.obj[BOMBONES] == BOMBONES){
personajes[1].mochila.obj[BOMBONES] = 0 ;
objetos[BOMBONES].lugar = personajes[1].estancia ;
printf("nHas dejado los bombones.");
ej = 2 ;
}
cn = strcmp(nombre, "espada");
if(0 == cv && 0 == cn && personajes[1].mochila.obj[ESPADA] == ESPADA){
personajes[1].mochila.obj[ESPADA] = 0 ;
objetos[ESPADA].lugar = personajes[1].estancia ;
printf("nHas dejado una espada.");
ej = 2 ;
}
cn = strcmp(nombre, "llave");
if(0 == cv && 0 == cn && personajes[1].mochila.obj[LLAVE] == LLAVE){
personajes[1].mochila.obj[LLAVE] = 0 ;
objetos[LLAVE].lugar = personajes[1].estancia ;
printf("nHas dejado una llave dorada.");
ej = 2 ;
}
cv = strcmp(verbo, "ir");
cn = strcmp(nombre, "norte");
if(0 == cv && 0 == cn && lugares[personajes[1].estancia].norte > 0){
personajes[1].estancia = lugares[personajes[1].estancia].norte ;
ej = 2 ;
}
cn = strcmp(nombre, "sur");
if(0 == cv && 0 == cn && lugares[personajes[1].estancia].sur > 0){
personajes[1].estancia = lugares[personajes[1].estancia].sur ;
ej = 2 ;
}
cn = strcmp(nombre, "este");
if(0 == cv && 0 == cn && lugares[personajes[1].estancia].este > 0){
personajes[1].estancia = lugares[personajes[1].estancia].este ;
ej = 2 ;
}
cn = strcmp(nombre, "oeste");
if(0 == cv && 0 == cn && lugares[personajes[1].estancia].oeste > 0){
personajes[1].estancia = lugares[personajes[1].estancia].oeste ;
ej = 2 ;
}
cv = strcmp(verbo, "dar");
cn = strcmp(nombre, "bombones");
if(0 == cv && 0 == cn && personajes[1].estancia == personajes[2].estancia && personajes[1].mochila.obj[BOMBONES] == BOMBONES){
personajes[1].mochila.obj[BOMBONES] = 0 ;
personajes[2].mochila.obj[BOMBONES] = BOMBONES ;
personajes[2].estado = 2 ;
printf("nAna acepta tus bombones y se sonroja mirandote dulcemente.");
ej = 2 ;
}
cv = strcmp(verbo, "pedir");
cn = strcmp(nombre, "cita");
if(0 == cv && 0 == cn && personajes[1].estancia == personajes[2].estancia){
if(personajes[2].mochila.obj[BOMBONES] == BOMBONES){
printf("Ana acepta tener una cita contigo sonrojandose; te dice que no llegues tarde, que te espera en los jardines.");
personajes[2].estancia = 8 ;
}
else{
printf("Ana no acepta tu propuesta para una cita, dice que tiene que pensarlo primero.");
}
ej = 2 ;
}
cv = strcmp(verbo, "usar");
cn = strcmp(nombre, "espada");
if(0 == cv && 0 == cn && personajes[1].estancia == personajes[2].estancia && personajes[1].mochila.obj[ESPADA] == ESPADA){
printf("nHaciendo uso de la espada, consigues liberar a Ana de su secuestrador, la cual se ella a tus brazos y te abraza.");
ej = 1 ;
}
cn = strcmp(nombre, "llave");
if(0 == cv && 0 == cn && personajes[1].estancia == 10){
personajes[1].estancia = 13 ;
ej = 2 ;
}
cn = strcmp(nombre, "bombones");
if(0 == cv && 0 == cn && personajes[1].estancia == personajes[2].estancia && personajes[1].mochila.obj[BOMBONES] == BOMBONES){
personajes[1].mochila.obj[BOMBONES] = 0 ;
personajes[2].mochila.obj[BOMBONES] = BOMBONES ;
personajes[2].estado = 2 ;
printf("nAna acepta tus bombones y se sonrojamirandote dulcemente.");
ej = 2 ;
}
if(ej == 3){
printf("nLa orden no es valida.");
}
}
if(personajes[1].estancia == 13 && personajes[1].mochila.obj[LLAVE] != LLAVE){
printf("nLa puerta de esta habitacion esta cerrada y no se puede abrir.");
personajes[1].estancia = 10 ;
}
if(personajes[1].estancia == 8 && personajes[2].estancia == 8 && personajes[3].estancia == 8){
printf("nUn tranquilo y agradable jardin, Ana y tu; has conseguido tu primera cita y en estos");
printf(" momentos el tiempo parece que se hubiera detenido.nDerrepente un hombre vestido de");
printf(" negro de pies a cabeza se avalancha sobre vosotros, intenta llevarse a Ana y aunque");
printf(" oponeis Ana y tu resistencia, de un tiron te arrebata a Ana de tus manos.nSale corr");
printf("iendo en la direccion de la vieja mansion practicamente en ruinas, corres tras el pe");
printf("ro no llegas a alcanzarlo, la ira y la rabia se apoderan de ti en ese momento en el ");
printf("que no puedes dejar de pensar y sufrir.nEstas decidido de recuperar a Ana aunque te");
printf(" valla la vida en ello, estas dispuesto a encontrar a Ana y su secuestrador en la ru");
printf("inosa mansion y rescatarla.n");
personajes[3].estancia = 14 ;
personajes[2].estancia = 14 ;
personajes[2].estado = 3 ;
}
}
while(ej > 1);
if(ej == 1){
printf("nn FIN");
}
else{
printf("nnnHas elegido cerrar el juego.");
}
getch();
return 0 ;
}

Puede que sea un juego sencillo de pasarselo, y no es tan grande como los juegos, no supera los kb, no tendra un dialogo salido de un esperto escritor, no tendra ni muchos personajes ni muchos objetos, pero es un programa, que aunque en dos dias lo alla echo no le quita su merito como primer programa.

Por esto no entiendo a que te refieres con que aprenda primero a programar y que he echo caso omiso. Si hay algo que se deba saber para programar que no este en aprende ansi c como si estuvieras en primero, pues di el que, porque dicho manual lo tengo ya leido, ya he probado distintas pruebas sin finalidad concreta como programa y ya e propuse hacer un programa completo y lo he acabado, por eso me descargue el manual de "programacion de videojuegos con SDL", para segir ampliando mis conocimientos.

Responder
lacabra25
Respuestas: 84
Topic starter
(@lacabra25)
Trusted Member
Registrado: hace 18 años

disculpa por la parte del codigo donde pone:

if(al > max){
al -= rand() ;
}
if(al <min> 0){
printf(" norte ");
}

no se porque se ha cambiado al enviar el mensaje, adjunto el archivo .c para el que quiera ver el codigo tal y como es, sin que al añadirlo al foro se cambie.

Responder
luisj
Respuestas: 235
(@luisj)
Estimable Member
Registrado: hace 18 años

Oki

El verbo se escribe "vaya", el objeto "valla".

La última pregunta que has hecho era sobre SDL, por lo que me da a mi que no ibas muy orientado a texto, jeje. De todas formas, dado que dices que nos harás caso te intento ayudar:

Si ya has aprendido la sintaxis de C, que es lo que puedes haber aprendido, ahora debes aprender a usarla bien. Para ello lo mejor es que leas sobre estructuras de datos. No tengo tiempo para mirar mucho, así que te dejo el primer enlace que tiene más o menos buena pinta:

http://www.ulpgc.es/otros/tutoriales/mtutor/indice.html

Si los primeros temas los tienes bien puedes empezar por lo que te decía, que corresponde a estos enlaces:

http://www.ulpgc.es/otros/tutoriales/mtutor/mt1f.html
http://www.ulpgc.es/otros/tutoriales/mtutor/mt2d.html

Y cuando hayas leido eso puedes intentar implementando esto:

http://www.josemariabea.com/ListasEnlazadas.php

Espero que te ayude.

Responder
lacabra25
Respuestas: 84
Topic starter
(@lacabra25)
Trusted Member
Registrado: hace 18 años

no pude adjuntar dos archivos en un mismo mensaje, por lo que adjunto en este el ejecutable ya compilado (compilado en sistema operativo windows XP)

Responder
lacabra25
Respuestas: 84
Topic starter
(@lacabra25)
Trusted Member
Registrado: hace 18 años

Gracias luisj, , y no queria decir que no fuese a hacer caso, sino que lo que yo decia es que con el manual que me recomendasteis, el de aprende como en primero, ya habia echo pruebas y un programa, y si lo que ponia en ese manual era todo el C (sin librerias) pues que eso ya lo tenia aprendido, no queria en ningun momento dar a entender que no fuera a hacer caso, sino que al ya haber aprendido todo lo del manual pues pense en pasar a otro manual, pensando que ya ese manual era todo el C.

Gracias por estos nuevos enlaces para proseguir programando.

Responder
Página 15 / 29
Compartir: