Ver Mensaje Individual
  #4 (permalink)  
Antiguo 24/08/2012, 07:51
harryarcoiris
 
Fecha de Ingreso: agosto-2012
Mensajes: 94
Antigüedad: 12 años, 3 meses
Puntos: 7
Respuesta: Mover un circulo con Winbgim (Problema)

ahhhhhhhh, ahi me anduvo, sere tonto, jeje.

Muchisimas gracias, estoy por empezar a hacer un juegito de plataformas, y esto es basico, ya saben, mover algo con las teclas, (mario brothers, Snake, algo por el estilo).

Lo que si, me gustaria saber porque es tan lento. En esta compu yo hago andar juegitos que tienen que hacer mucho mas que solo mover un circulo (Half Life, Counter Strike, etc), y para mover el circulo le toma unos milisegundos, son realmente poquitos, pero mis ojos lo notan, o sea, no es lo suficientemente rapido.

Porque?

Acaso C no es un lenguaje muy rapido?

Che, y porque no hay que usar FFLUSH(STDIN)? Como borro el buffer de teclado?

Saludos

EDITO: Despues de leer un rato sobre FFLUSH(STDIN), y despues de curarme de la patada psicologica, jeje, ya se que no debo usarlo, y mas o menos entiendo porque, jeje.

Pero ahora, tengo otro problema. He quitado todos los FFLUSH(STDIN), y los he reemplazado por

Cita:
while(getchar()!='\n');
Pero ahora directamente no anda.

Dejo el codigo completo, con las ediciones listas. He revisado la logica del codigo, al menos de forma visual, (aunque deberia diagramarlo completo, aunque ya lo hice antes del FFlush, ahora he cambiado un poquito la logica, no veo alguna razon por la cual no funciona.

Dejo el Code.

Cita:
#include <winbgim.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdint.h>
#include <string.h>
#include <conio.h>
#define KEY_UP 72
#define KEY_DOWN 80
#define KEY_LEFT 75
#define KEY_RIGHT 77


int main()
{
int x, y, radius;
char flecha;
initwindow(1024,768);
settextstyle(0,0,2);
setcolor(COLOR(200,240,45));
outtextxy(200,300,"Mover un circulo");
outtextxy(200,400,"Pulse una tecla para continuar...");
while(!kbhit());
setcolor(BLACK);
outtextxy(200,300,"Mover un circulo");
outtextxy(200,400,"Pulse una tecla para continuar...");

outtextxy(400,400,"Para mover el circulo, use las flechas. Para finalizar, presione la tecla Fin");
outtextxy(400,500,"Presione una tecla para continuar");
while(!kbhit());


x = 500;
y = 500;
radius = 200;
setcolor(WHITE);
circle(x,y,radius);

do{

while(getchar()!='\n');
flecha = getch();
getch();
if(flecha == KEY_UP)
{
setcolor(BLACK);
circle(x,y,radius);
y = y - 10;
setcolor(WHITE);
circle(x,y,radius);
}


if(flecha == KEY_DOWN)
{

setcolor(BLACK);
circle(x,y,radius);
y = y + 10;
setcolor(WHITE);
circle(x,y,radius);
}

if(flecha == KEY_LEFT)
{
setcolor(BLACK);
circle(x,y,radius);
x = x - 10;
setcolor(WHITE);
circle(x,y,radius);
}

if(flecha == KEY_RIGHT)
{
setcolor(BLACK);
circle(x,y,radius);
x = x + 10;
setcolor(WHITE);
circle(x,y,radius);
}



}while(getch()!=KEY_END);
while(!kbhit());
closegraph();
return 0;
}




Última edición por harryarcoiris; 24/08/2012 a las 12:47