Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //instalar las ncurses antes sudo apt-get install libncurses-dev
- //compilacion g++ -std=c++11 -o juego juego.cpp -lncurses
- //Antonio Villanueva Segura
- #include <iostream>
- #include <stdio.h>
- #include <ncurses.h>
- #include <string>
- #include <unistd.h> //usleep
- using namespace std;
- /***********************************************************************/
- struct maximo{int max_x;int max_y;} maximos;//Para guardar los limites del terminal
- /***********************************************************************/
- void inicializaGraficos (){//inicializa ncurses un sistema grafico basico
- WINDOW * win = initscr();
- clear(); /* Borra la pantalla entera bajo ncurses */
- refresh(); /* Actualiza la ventana con los cambios */
- curs_set(FALSE); // Don't display a cursor
- noecho();
- cbreak();
- timeout(1);
- keypad(win, TRUE);
- getmaxyx(win,maximos.max_y,maximos.max_x); /* obtiene el numero de colummnas y lineas */
- //Correccion para el interior del terminal
- maximos.max_x-=1;
- maximos.max_y-=1;
- }
- /***********************************************************************/
- void dentroLimites(int &x,int &y){//Controla que el objeto este en los limites ,cuadro del juego
- if (x<1){ x=maximos.max_x-1;}
- if (x>maximos.max_x){ x=1;}
- if (y<1){ y=maximos.max_y-1;}
- if (y>maximos.max_y-1){ y=1;}
- }
- /***********************************************************************/
- void gotoxy(int x,int y,string objeto ="*",bool limpia=false){//Mueve un objeto por defecto "*" a una coordenada x,y y puede borrar lo anterior
- if (limpia) {erase();}//Si se necesita limpiar el fondo ...true
- //move(x,y);
- mvprintw(y,x,objeto.c_str()); //Imprime objeto en coordenada y,x
- refresh();
- }
- /***********************************************************************/
- void dibujaLados(){//Marco del juego .Se dibuja cada vez
- for(int x=1; x<=maximos.max_x; x++){// desplazo En X
- gotoxy(x,1);//Linea superior de * en y=1
- gotoxy(x,maximos.max_y);//Linea inferior
- }
- for(int y=1; y<=maximos.max_y; y++){//desplazo En Y
- gotoxy(1,y);//Lateral Izq. *
- gotoxy(maximos.max_x,y);//Lateral Derch. *
- }
- }
- /***********************************************************************/
- int main(){
- string objeto("X");//Objeto figura que se desplaza
- int juego(0);//lectura de tecla
- inicializaGraficos();//Inicializar el sistema grafico ncurses
- int x( maximos.max_x/2),y( maximos.max_y/2);
- while(juego!='z'){//Bucle principal del juego
- gotoxy(x,y,objeto,true);//Mueve el "objeto" en este caso la letra o , borrando el trazado anterior
- dibujaLados();//Dibuja la pantalla general , fondo del juego
- juego=getch();//Lee una tecla para desplazar nuestro objeto , la letra o aunque podemos cambiar
- switch(juego) {//Mueve el objeto en x e y en funcion de las flechas y cambia la forma del obj. en funcion de la direccion
- case KEY_LEFT: x--;objeto="<"; break;
- case KEY_RIGHT: x++;objeto=">"; break;
- case KEY_UP: y--;objeto="^"; break;
- case KEY_DOWN: y++;objeto="v" ; break;
- }
- dentroLimites(x,y);//Controla que el objeto este en los limites ,cuadro del juego
- usleep(10000);
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment