codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#include <iostream> #include <conio2.h> #include <ctime> #include <time.h> using namespace std; void retraso(float segundos){ clock_t finretraso; finretraso=clock()+segundos*CLOCKS_PER_SEC; while(clock()<finretraso){} } int main(int argc, char *argv[]) { int ax=1, ay=1, bx=2, by=3, cx=1, cy=1, barrax=33; char tecla; //While dá inicio al ciclo de repetición. while (true) { gotoxy(ax,ay);//borra la posicion cout<<" "; //anterior de la pelota gotoxy(bx,by); cout<<"O"<<endl; retraso (0.05); /*NOTA: Habrán notado que utilizo los valores 79 (x) y 24 (y) en lugar de 80;25. Esto es porque al utilizar textbackground la pantalla se movía cuando la pelota tocaba los bordes. Creo que al usar el fondo, los carácteres ocupan 1 pixel más y por eso lo solucione usando un pixel menos, pero no estoy seguro.*/ if (bx<=1) { bx=1; cx=-cx; } if (bx>=79) { bx=79; cx=-cx; } if (by<=1) { by=1; cy=-cy; } if (by>=24) { by=24; cy=-cy; } //La linea de abajo indica qué hacer si hay colisión con la barra. La barra se encuentra en y=20, la función textbackground, visualmente, agrega un pixel de altura, por lo tanto, la colisión debe ocurrir en y=19. if (((bx>=barrax)&&(bx<=barrax+7))&&(by==19)){ cy=-cy; } ax=bx, ay=by; bx=bx+cx; by=by+cy; //Acá empieza la barra gotoxy (barrax, 20); textbackground (WHITE);//Color de fondo de la barra (seis espacios) cout<<" "<<endl; textbackground (BLACK);//Volvemos a Negro porque sino la 'O' queda coloreada y deja un rastro, prueben haciendo el cambio. if(kbhit()){ tecla=getch(); if(tecla==char(75)){ barrax--; gotoxy(barrax+7,20); cout<<" "; } else if (tecla==char(77)){ barrax++; gotoxy(barrax-1,20); cout<<" "; } } } return 0; }
Private
[
?
]
Run code
Submit