PDA

Visualizza versione completa : cpu 100%


SkAkKo
18-12-2004, 15.10.13
raga ho questa funzione
void Snake()
{
COORD p;
int *pp;
int lr,ud,ct=1;
char buf,c;
int x=5;
int y=10;
pp=&x;
while (1)
{
ud=0;
lr=0;
while (!kbhit())
{
Poscur(x,y);
printf("*");
if (ct)
++(*pp);
else --(*pp);
Mysleep(0.1);
}
buf=getch();
c=getch();
switch (c)
{
case UP:
ct=0;
ud=1;
case DOWN:
Key(&p);
pp=&y;
*pp=p.Y;
if(!ud)
ct=1;
break;
case LEFT:
ct=0;
lr=1;
case RIGHT:
Key(&p);
pp=&x;
*pp=p.X-1;
if (!lr)
ct=1;
break;
}
}
}
quando eseguo il programma .. e entra nella funzione.. la cpu si alza fino al 100% (non può andare oltre :D )
come posso fare per non far alzare di tanto la cpu??
ho provato ad ottimizzare il codice..+ di questo non so..help please :p

asso
24-12-2004, 20.34.18
non potevi identarlo ?

così non si capisce molto

SkAkKo
24-12-2004, 23.34.33
quando l' ho incollato lo era...non so xkè l' ha scritto cosi

SkAkKo
24-12-2004, 23.44.45
devo inserire il codice all' interno di ?

SkAkKo
24-12-2004, 23.45.32
void Snake()
{
COORD p;
int *pp;
int lr,ud,n=6,i=0,ct=1;
char buf,c;
int x=5;
int y=10;
pp=&x;
while (1)
{
ud=0;
lr=0;
while (!kbhit())
{
Poscur(x,y);
printf("*");
++i;
if (i==n)
{
Poscur(x-n-1,y);
printf(" ");
i=n-1;
}
if (ct)
++(*pp);
else --(*pp);
Mysleep(0.1);
}
buf=getch();
c=getch();
switch (c)
{
case UP:
ct=0;
ud=1;
case DOWN:
Key(&p);
pp=&y;
*pp=p.Y;
if(!ud)
ct=1;
break;
case LEFT:
ct=0;
lr=1;
case RIGHT:
Key(&p);
pp=&x;
*pp=p.X-1;
if (!lr)
ct=1;
break;
}
}
}


:p

asso
25-12-2004, 07.39.13
così a occhio senza capire cosa fa il programma è quel while(1) che anche quando non accade nulla, continua a ciclare a vuoto

dovresti usare codice che usa gli interrupt da tastiera nel senso che se solo se viene premuto un tasto si salta alla tua funzione altrimenti si resta nel main()

almeno, io farei così

ciao

SkAkKo
25-12-2004, 16.01.04
k grazie..