He encontrado un código de hace varios años, estaba aburrido en clase y en las 3 horas que tenía, no andaba nada concentrado, me descargué una librería de gráficos para C ya que era muy costoso hacerlo totalmente desde 0 y en esas horas pues me propuse hacer un pong, realmente es muy básico pero funcional...
paso a poner el código que si bien no tiene comentarios tampoco es tan extenso como para no entenderlo, usé la librería gráfica allegro, espero que ayude a quien quiera hacer su propio videojuego en C o incluso a quien quiera jugar unas partidas, lo hice de un solo jugador contra una inteligencia artificial bastante básica aunque quien sabe, puede que algún día lo mejore...
Aquí hay un ejemplo de juego sencillo que como bien he dicho tardé tres horas en crear, ya que este es un código bastante corto, mas adelante haré tutoriales de verdad cuando tenga bastante tiempo.#include <allegro.h> int jugador(int y); int ia(int ia_y,int bola_y); int mover_bola_x(int bola_x,int mov_x,int vel_bola[2]); int mover_bola_y(int bola_y,int mov_y,int vel_bola[2]); int colision_x(int bola_x,int bola_y,int jug_y,int ia_y,int vel_bola[2],int colision); int colision_y(int bola_y,int vel_bola[2],int colision); void aumentar_vel(int vel_bola[2]); void mostrar(int jug_y,int ia_y,int bola_x,int bola_y); int main() { int jug_y=240; int ia_y=240; int bola_x=390; int bola_y=240; int mov_x=0; int mov_y=0; int vel_bola[2]; //0 = velocidad bola, 1 = contador bola vel_bola[0]=1; vel_bola[1]=0; allegro_init(); install_keyboard(); set_color_depth(32); set_gfx_mode(GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0); while(!key[KEY_ESC]) { rest(1);//esperar mostrar(jug_y,ia_y,bola_x,bola_y);//mostrar en pantalla jug_y=jugador(jug_y);//mover jugador ia_y=ia(ia_y,bola_y);//mover IA mov_x=colision_x(bola_x,bola_y,jug_y,ia_y,vel_bola,mov_x);//colison x mov_y=colision_y(bola_y,vel_bola,mov_y);//colision y bola_x=mover_bola_x(bola_x,mov_x,vel_bola);//mover pelota(eje y) bola_y=mover_bola_y(bola_y,mov_y,vel_bola);//mover pelota(eje x) aumentar_vel(vel_bola); } } END_OF_MAIN(); int jugador(int y) { if(key[KEY_UP]) { if(y>-0) { y--; } } if(key[KEY_DOWN]) { if(y<520) { y++; } } return(y); } int ia(int ia_y, int bola_y) { if(ia_y>0 && bola_y < ia_y) { ia_y--; } else { if(ia_y<520 && bola_y > ia_y) { ia_y++; } } return(ia_y); } int mover_bola_x(int bola_x,int mov_x, int vel_bola[2]) { switch(mov_x) { case -2: //reiniciar y sumar 1 al jugador break; case -1: //reiniciar y sumar 1 al enemigo break; case 0://se mueve hacia el jugador bola_x=bola_x-vel_bola[0]; break; case 1://se mueve hacia la ia bola_x=bola_x+vel_bola[0]; break; } return(bola_x); } int mover_bola_y(int bola_y,int mov_y, int vel_bola[2]) { switch(mov_y) { case 0://se mueve hacia arriba bola_y=bola_y-vel_bola[0]; break; case 1://se mueve hacia abajo bola_y=bola_y+vel_bola[0]; break; } return(bola_y); } int colision_x(int bola_x,int bola_y,int jug_y,int ia_y,int vel_bola[2],int colision) { if(bola_x<=vel_bola[0])//si la bola llega a la puerta de jugador { colision=-1; } else { if(bola_x>=799)//si la bola llega a la puerta de ia { colision=-2; } else { if(bola_x<90&&bola_x>70&&bola_y>=jug_y&&bola_y<=(jug_y+80))//si la bola choca con el jugador { colision=1; vel_bola[1]++; } else { if(bola_x<740&&bola_x>720&&bola_y>=ia_y&&bola_y<=(ia_y+80))//si la bola choca con la ia { colision=0; vel_bola[1]++; } } } } return(colision); } int colision_y(int bola_y,int vel_bola[2],int colision) { if(bola_y<=vel_bola[0]&&colision==0) { colision=1; } else { if(bola_y>=(600-vel_bola[0])&&colision==1) { colision=0; } } return(colision); } void aumentar_vel(int vel_bola[2]) { if(vel_bola[1]>=15) { vel_bola[0]++; vel_bola[1]=0; } } void mostrar(int jug_y,int ia_y,int bola_x,int bola_y) { clear_to_color( screen, makecol( 0, 0, 0));//borrar rect( screen, 70, 0+jug_y, 90, 80+jug_y, makecol( 0, 0, 255));//jugador rect( screen, 720, 0+ia_y, 740, 80+ia_y, makecol( 0, 0, 255));//ia rect( screen, 0+bola_x, 0+bola_y, 20+bola_x, 20+bola_y, makecol( 0, 0, 255));//pelota }
Por último añadir que si alguien parte de este código para hacer un videojuego pues no estaría de más hacérmelo saber al menos.
No hay comentarios:
Publicar un comentario