aqui les dejo el código de mi un juego conosido hecho en c para opinen sobre el codigo y como mejorarlo este solo sirve en window para linux hay que cambiar la librería conio.h por curse.h
// tateti por netdrag0n //
#include <stdio.h>
#include <conio.h>
int tic [3][3]={'1','2','3','4','5','6','7','8','9'},i,j,ta,ta1,ta2,ta3,ta4,ta5,ta6,ta7,a,b;
char op,tateti,valor,jugador,valor2;
int te();
int c();
main()
{
printf("\n");
do{
system("cls");
for(i=0;i<3;i++)
{
printf("\n");
for(j=0;j<3;j++)
{
if(tic[i][j]==1)
printf("X|");
else if(tic[i][j]==0)
printf("O|");
else
printf("%c|",tic[i][j]);
}
printf("\n------------");
printf("\n");
}
if(jugador==1)
{
printf("\n");
printf("\n jugador X>");
c(jugador);
te();
jugador=0;
}
else if (jugador==0)
{
printf("\n");
printf("\n jugador O>");
c(jugador);
jugador=1;
te();
}
}
while(tateti!=1);
printf(" gano %c \n",op);
char op2 = getch();
}
te()
{
ta=tic[0][0]+tic[0][1]+tic[0][2];
ta1=tic[1][0]+tic[1][1]+tic[1][2];
ta2=tic[2][0]+tic[2][1]+tic[2][2];
ta3=tic[0][0]+tic[1][0]+tic[2][0];
ta4=tic[0][0]+tic[1][1]+tic[2][1];
ta5=tic[0][2]+tic[1][2]+tic[2][2];
ta6=tic[0][0]+tic[1][1]+tic[2][2];
ta7=tic[2][0]+tic[1][1]+tic[0][2];
if(ta==0 || ta1==0 || ta2==0 || ta3==0 || ta4==0 || ta5==0 || ta6==0 ||ta7==0)
{
tateti=1;
op='O';
}
if(ta==3 || ta1==3 || ta2==3 || ta3==3 || ta4==3 || ta5==3 || ta6==3||ta7==3)
{
tateti=1;
op='O';
}
return;
main();
}
c()
{
valor = getch();
if(valor=='1')
tic[0][0]=jugador;
else if(valor=='2')
tic[0][1]=jugador;
else if(valor=='3')
tic[0][2]=jugador;
else if(valor=='4')
tic[1][0]=jugador;
else if(valor=='5')
tic[1][1]=jugador;
else if(valor=='6')
tic[1][2]=jugador;
else if(valor=='7')
tic[2][0]=jugador;
else if(valor=='8')
tic[2][1]=jugador;
else if(valor=='9')
tic[2][2]=jugador;
return;
}
Sobre conio.h, te recomiendo leer este hilo: http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html
Por lo demás, te recomiendo leer algún buen libro de C que siga el standard.
Por ejemplo, la declaración de la función main es:
int main (int argc, char* argv[])
Cuando programás en C, todo es una función. No existen procedimientos explícitos. Por ende, todo módulo aparte debe devolver algún valor (sea entero, caracter, etc... si devuelves un tipo void, sería algo análogo a un procedimiento).
Pero en fin, te recomendaría leer algún libro, como El Lenguaje de Programación C de Kernighan & Ritchie (que en paz descanse).
A que te refieres con que no existen procedimientos ¿EXPLÍCITOS?
Que todo en C es una función. No existen los procedimientos propiamente dichos. Puedes simular uno al programar una función que devuelva un void, pero no más que eso.
Ok. Ya te entendí. A nivel general los subprogramas se clasifican en Funciones y Procedimientos. En C solo existen funciones, y cuando se necesite un procedimiento, se hace uso de una función que devuelva el tipo void.
gracias por el consejo estoy leyendo sobre c y el libro que recomendate
Si recién te inicias en C, te recomiendo el libro Como programar en C/C++ de Deitel&Deitel (Lo estoy siguiendo actualmente y es muy bueno para comenzar).
Lo podés encontrar en el siguiente post:
http://foro.elhacker.net/programacion_cc/librospapers_cc-t296234.0.html
Un saludo.
Sí muy bueno el de Deithel. Tiene una teoría muy completa. También sirve mucho el "Introducción a la programación con C"
http://ubuntuone.com/p/kRe/ (http://ubuntuone.com/p/kRe/)