Advertisement
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 pelota pelota.cpp -lncurses
- //Estudio de una pelota que rebota en la pantalla en ncurses
- //Antonio Villanueva Segura
- #include <ncurses.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h> //usleep
- #include <string>
- WINDOW *win; //ventana curses
- using namespace std ;
- class pelota{
- public:
- pelota(int x,int y,string obj);
- void run ();
- private:
- void initVideo();//inicializa video ncurses
- void move (int &x,int &y);//logica del movimiento
- void print (int &x,int &y);//imprime objeto
- int x,y,max_x,max_y;//coordenadas y maximos
- bool dir_x,dir_y;//direccion
- string objeto;//objeto a mover
- };
- /***********************************************************************/
- pelota ::pelota(int x=1,int y=1,string obj="°"):x(x),y(y),dir_x(true),dir_y(true),objeto(obj){
- initVideo();
- move(x,y);
- }
- /***********************************************************************/
- void pelota::initVideo(){//inicializa video ncurses
- win=initscr(); /* Crea la ventana curses mode*/
- clear(); /* Borra la pantalla entera bajo ncurses */
- refresh(); /* Actualiza la ventana con los cambios */
- curs_set(FALSE); // Don't display a cursor
- noecho();
- cbreak();
- keypad(win, TRUE);
- getmaxyx(win,max_y,max_x); /* get the number of rows and columns */
- }
- /***********************************************************************/
- void pelota::move (int &x,int &y){//logica del movimiento
- dir_x ? x++: x--;
- dir_y ? y++: y--;
- if (x>max_x-1){dir_x^=dir_x;}
- if (y>max_y-1){dir_y^=dir_y;}
- if (x<=1){dir_x^=1;}
- if (y<=1) {dir_y^=1;}
- }
- /***********************************************************************/
- void pelota::run (){
- while (true){
- move(x,y);
- print(x,y);
- }
- }
- /***********************************************************************/
- void pelota::print (int &x,int &y){//imprime objeto
- erase();
- mvprintw(y,x, objeto.c_str());
- refresh();
- usleep(100000);
- }
- /***********************************************************************/
- /***********************************************************************/
- int main (){
- pelota p;//construccion por defecto
- //pelota p(1,1,"0");//construccion con parametros
- p.run();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement