Met of zonder mayonaise?
dat is niet echt te doen
misschien als je het carriage return teken stuurt naar de console, maar meestal vertaalt dat gelijk naar een carriage return/line feed (waardoor de positie behalve terug naar het begin van de regel ook een regel naar onderen beweegt)
misschien als je het carriage return teken stuurt naar de console, maar meestal vertaalt dat gelijk naar een carriage return/line feed (waardoor de positie behalve terug naar het begin van de regel ook een regel naar onderen beweegt)
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
of je doet steeds een '\b' (Backspace) voor de nieuwe output
met gotoxy(x,y); hard de positie op het scherm kiezen...
Er zal vast ook wel een of andere loze 'curspos' functie zijn waarmee je de huidige coordinaten uit kan lezen, maar het mooist is natuurlijk om gewoon het scherm memory mapped te benaderen (vanaf B800:0000) , dan ben je zo klaar.
Er zal vast ook wel een of andere loze 'curspos' functie zijn waarmee je de huidige coordinaten uit kan lezen, maar het mooist is natuurlijk om gewoon het scherm memory mapped te benaderen (vanaf B800:0000) , dan ben je zo klaar.
Je zou misschien iets kunnen proberen met de functie gotoxy( x, y) .. dit is echter geen standaard C functie en je moet conio.h includen...
vondt ook nog in m'n boek over zelf maken van deze functie.. hiervoor heb je dos.h nodig..
- Edit -
'k zie dat ik weer te langzaam type....
vondt ook nog in m'n boek over zelf maken van deze functie.. hiervoor heb je dos.h nodig..
code:
1
2
3
4
5
6
7
8
9
| void gotoxy( int x, int y)
{
union REGS r;
r.h.ah = 2;
r.h.dh = y;
r.h.dl = x;
r.h.bh = 0;
int86( 0x10, &r, &r);
} |
- Edit -
'k zie dat ik weer te langzaam type....
"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs
ZO dus:Op dinsdag 23 april 2002 12:30 schreef Aidix het volgende:
met gotoxy(x,y); hard de positie op het scherm kiezen...
Er zal vast ook wel een of andere loze 'curspos' functie zijn waarmee je de huidige coordinaten uit kan lezen, maar het mooist is natuurlijk om gewoon het scherm memory mapped te benaderen (vanaf B800:0000) , dan ben je zo klaar.
void showScreen(void *where)
{
asm{ // Writez the screen at 'where' to VGA
mov ax, [where]
mov si,ax
mov dx, 0xb800
push dx
pop es
push 0
pop di
mov cx,4000
rep movsw
}
}
*where is 2000 words data, de msb is het ascii karakter, de lsb het attribute, die moet je 0Fh maken voor witte tekst op zwarte achtergrond. Veel plezier
werkt het niet met \r ?
dat werk in JAVA iig wel op de DOS prompt..
dat werk in JAVA iig wel op de DOS prompt..
Neem je whisky mee, is het te weinig... *zucht*
Verwijderd
Ik weet niet of je op UNIX programmeert, anders zou je eventueel Cygwin kunnen gebruiken. Maar waar jij naar zoekt is een library die ncurses heet.
Zoek maar eens op internet naar curses en c of c++. Dan vindt je vast wat je bedoeld...
Zoek maar eens op internet naar curses en c of c++. Dan vindt je vast wat je bedoeld...
Verwijderd
Zoals je aan de hoeveelheid verschillende gegeven mogelijke oplossingen kan zien hangt het er maar net vanaf wat je er mee wil bereiken.
Als je echt helemaal totale controle over het scherm wil, kom je waarschijnlijk uit bij ncurses of andere console-libs. Als je echter puur alleen maar zo'n progress-indicator'tje wil is (onder Windows iig) een paar backspaces (ASCII:8) outputten genoeg.
Als je echt helemaal totale controle over het scherm wil, kom je waarschijnlijk uit bij ncurses of andere console-libs. Als je echter puur alleen maar zo'n progress-indicator'tje wil is (onder Windows iig) een paar backspaces (ASCII:8) outputten genoeg.
Thnx all, ik had geen id hoe dit te doen, maar er zijn mogelijkheden zat... vooral dat backspace verhaal.. dat ik daar niet op ben gekomen 
ps over dat direct naar video-geheugen schrijven: heb je daar toevallig een link van liggen?? dat lijkt me wel cool
ps over dat direct naar video-geheugen schrijven: heb je daar toevallig een link van liggen?? dat lijkt me wel cool
Met of zonder mayonaise?
void teller( void )
{
int nCnt;
// Beginnen op een lege regel
printf( "\n" );
// Tel van 0 tot en met 100
for( nCnt = 0; nCnt <= 100; nCnt++ )
{
printf( "\rTeller: %03d", nCnt );
sleep( 1000 ); // Of iets anders time-consumings
}
}
als alternatief kun je ook het volgende doen, is minder belastend, alleen werkt het alleen als je %03d gebruikt zodat je altijd 3 cijfers te zien krijgt:
void teller( void )
{
int nCnt;
// Beginnen op een lege regel
printf( "\nTeller: 000" );
// Tel van 0 tot en met 100
for( nCnt = 0; nCnt <= 100; nCnt++ )
{
printf( "\b\b\b%03d", nCnt );
sleep( 1000 ); // Of iets anders time-consumings
}
}
{
int nCnt;
// Beginnen op een lege regel
printf( "\n" );
// Tel van 0 tot en met 100
for( nCnt = 0; nCnt <= 100; nCnt++ )
{
printf( "\rTeller: %03d", nCnt );
sleep( 1000 ); // Of iets anders time-consumings
}
}
als alternatief kun je ook het volgende doen, is minder belastend, alleen werkt het alleen als je %03d gebruikt zodat je altijd 3 cijfers te zien krijgt:
void teller( void )
{
int nCnt;
// Beginnen op een lege regel
printf( "\nTeller: 000" );
// Tel van 0 tot en met 100
for( nCnt = 0; nCnt <= 100; nCnt++ )
{
printf( "\b\b\b%03d", nCnt );
sleep( 1000 ); // Of iets anders time-consumings
}
}
Macbook Pro
Zie de post van Aidix.Op woensdag 24 april 2002 14:20 schreef Boudi het volgende:
Thnx all, ik had geen id hoe dit te doen, maar er zijn mogelijkheden zat... vooral dat backspace verhaal.. dat ik daar niet op ben gekomen
ps over dat direct naar video-geheugen schrijven: heb je daar toevallig een link van liggen?? dat lijkt me wel cool
Verwijderd
code:
1
2
3
| for (int i = 0; i < 1000000; i++) {
printf("%6i\r", i);
} |
Edit: oeps, post van RetepV niet goed gelezen.
Pagina: 1