Avatar billede spiritusanta Nybegynder
10. februar 2004 - 18:07 Der er 7 kommentarer og
1 løsning

Brug af gotoXY

Hvordan bruges commandoen gotoXY?, hvilke biblioteker skal includes?
Nogen der har et hurtigt lille eksempel?
Avatar billede arne_v Ekspert
10. februar 2004 - 19:12 #1
gotoxy er ikke standard, så om du har og hvilken .h fil du
skal inkludere afhænger af din compiler.

Du kan prøve med:

#include <conio.h>
Avatar billede spiritusanta Nybegynder
10. februar 2004 - 20:58 #2
Men hvordan bruger man så den kommando?
Avatar billede arne_v Ekspert
10. februar 2004 - 21:02 #3
gotoxy(x,y);

hvor x og y er 2 int's med henholdsvis x og y koordinar !
Avatar billede spiritusanta Nybegynder
10. februar 2004 - 21:10 #4
uha, det er den ikke glad for:

gotoxy(10,10);
cout << "Virker det?";

skriver følgende fejl
error C2065: 'gotoxy' : undeclared identifier
Avatar billede arne_v Ekspert
10. februar 2004 - 21:13 #5
Hvilken compiler ?

Har du:

#include <conio.h>

?
Avatar billede spiritusanta Nybegynder
10. februar 2004 - 21:22 #6
ahh har fået det til at virke nu :)
oprettede bare min egen lille funktion.

void gotoxy(int x, int y)
{
    COORD coord;
    coord.X = x;
    coord.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
Avatar billede arne_v Ekspert
10. februar 2004 - 21:37 #7
Det kan man også.

Det er vel nærmest anbefalelses værdigt da SetConsoleCursorPosition er
Win32 API og derfor findes til alle Windows compilere.
Avatar billede arne_v Ekspert
10. februar 2004 - 21:38 #8
Jeg lavede engang det her lille pussige stykke kode i.f.m. et spørgsmål:

#include <time.h>
#include <stdlib.h>
#include <string.h>

#include <windows.h>

CRITICAL_SECTION cs;
HANDLE console;

void gotoxy(int x,int y)
{
  COORD pos;
  pos.X = x;
  pos.Y = y;
  SetConsoleCursorPosition(console, pos);
}

void loop1()
{
  char c[] = { '|', '/', '-', '\\', '|', '/', '-', '\\' };
  int i = 0;
  while(true)
  {
      EnterCriticalSection(&cs); 
      gotoxy(40,10);
      DWORD dummy;
      WriteConsole(console, &c[i % 8], 1, &dummy, NULL);
      LeaveCriticalSection(&cs); 
      Sleep(1000);
      i++;
  }
}

void loop2()
{
  while(true)
  {
      EnterCriticalSection(&cs); 
      gotoxy(30,1);
      time_t t = time(NULL);
      DWORD dummy;
      char *s = ctime(&t);
      WriteConsole(console, s, strlen(s), &dummy, NULL);
      LeaveCriticalSection(&cs); 
      Sleep(1000);
  }
}

DWORD __stdcall loop1dispatch(void *p)
{
  loop1();
  return 0;
}

DWORD __stdcall loop2dispatch(void *p)
{
  loop2();
  return 0;
}

void threadloop1()
{
  DWORD id;
  CreateThread(NULL,0,loop1dispatch,NULL,0,&id);
}

void threadloop2()
{
  DWORD id;
  CreateThread(NULL,0,loop2dispatch,NULL,0,&id);
}

int main()
{
  system("CLS");
  console = GetStdHandle(STD_OUTPUT_HANDLE);
  InitializeCriticalSection(&cs); 
  threadloop2();
  loop1();
  return 0;
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester