Avatar billede jha1 Nybegynder
09. februar 2004 - 12:58 Der er 17 kommentarer og
1 løsning

Flytte cursoren i et konsolprogram - Linux

Hejsa

Jeg vil høre hvordan man flytter cursoren i Linux, uden at gøre brug af windows.h. Se evt. spm. http://www.eksperten.dk/spm/462193
Avatar billede arne_v Ekspert
09. februar 2004 - 13:49 #1
Bruger du curses ?

I så fald mener jeg at der er kald hvor man angiver X,Y koordinater.

Hvis du selv vil gøre det direkte, så kan du positionere dig i et VT vindue med:

<ESC>[x;yH

Eller mere C'sk:

printf("%c[%d;%dH",0x1B,x,y);
Avatar billede jha1 Nybegynder
09. februar 2004 - 22:18 #2
Jeg tænker måske på, om der var en tilsvarende mulighed, som windows.h giver - COORD i Linux.
Avatar billede jha1 Nybegynder
09. februar 2004 - 22:20 #3
Det er faktisk denne funktion, der er vist her http://home20.inet.tele.dk/midgaard/snip/bille.html, jeg gerne vil lave med Linux.
Avatar billede arne_v Ekspert
09. februar 2004 - 22:24 #4
Jeg kender kun 2 oplagte muligheder:
1)  curses
2)  escape sekvenser
Avatar billede jha1 Nybegynder
09. februar 2004 - 22:26 #5
Jeg suppelere igen...

Opgaven er, at placere til et X,Y koordinat på skærmen. Dette skal skal med standard bilotekerne i Linux - C.
Avatar billede arne_v Ekspert
09. februar 2004 - 22:30 #6
Hvis standard bibliotekerne udelukker curses, så er det kun escape sekvenser tilbage.

Så prøv det.
Avatar billede bertelbrander Novice
09. februar 2004 - 23:14 #7
Jeg har lavet billen i en ncurses udgave. Jeg har ikke linux, men har testet den med cygwin (en gcc til windows), jeg vil tro at det vil virke på linux.

Jeg har kompileret med denne kommando linie:
gcc bille.c -W -Wall -lncurses -o bille.exe

På linux skal du ikke bruge "-o bille.exe".

#include <curses.h>
#include <stdio.h>
#include <sys\unistd.h>

const char *const ben[] =
{
  "  )))",
  "  |||",
  "  (((",
  "  |||"
};

int main(void)
{
  int i;
  initscr();
  cbreak();
  noecho();
  intrflush(stdscr, FALSE);

  for(i = 0; i < 3; i++)
  {
    move(i, 0);
    refresh();
    printw("                                                  ");
    fflush(stdout);
  }

  for(i = 0; i < 40; i++)
  {
    move(0, i);
    printw(ben[i%4]);
    refresh();
    move(1, i);
    printw(" -OOOO:");
    refresh();
    move(2, i);
    printw(ben[i%4]);
    refresh();
    usleep(300000);
  }

  return 0;
}
Avatar billede jha1 Nybegynder
09. februar 2004 - 23:18 #8
Hej Bertelbrander. curses.h, kan jeg ikke finde i C på Linux
Avatar billede arne_v Ekspert
09. februar 2004 - 23:21 #9
Jeg har både:

/usr/include/ncurses/curses.h
/usr/include/curses.h
Avatar billede bertelbrander Novice
09. februar 2004 - 23:29 #10
Du skal måske bruge ncurses.h (på cygwin er curses.h det samme som ncurses.h (en link)).
Avatar billede jha1 Nybegynder
10. februar 2004 - 00:00 #11
Hej Arne. jeg fik løst det med printf("%c[%d;%dH",0x1B,x,y);. Så jeg siger tak for hjælpen!
Avatar billede arne_v Ekspert
10. februar 2004 - 03:25 #12
Så vil jeg ligge et svar
Avatar billede arne_v Ekspert
06. marts 2004 - 15:47 #13
Lukke tid ?
Avatar billede arne_v Ekspert
09. august 2004 - 19:30 #14
Tør man spørge om hvorfor du afviser mit svar når du skriver at du har
brugt min løsning ?
Avatar billede jha1 Nybegynder
09. august 2004 - 20:37 #15
Hej Arne. Jeg er ikke så skarp til det med point...Beklager. Jeg kan dog se at spørgsmålet stadig er åbent her: http://www.eksperten.dk/spm/462193

Så hvis du svarer, kan jeg give point. Du skal have tak for hjælpen og tålmodigheden...mvh Jesper
Avatar billede arne_v Ekspert
09. august 2004 - 21:11 #16
Det spørgsmål er:
  - oprettet af en anden bruger
  - ser ud til at være på Windows platform
  - er på andet antal point
Avatar billede arne_v Ekspert
09. august 2004 - 21:14 #17
Hvis det er en fejl du selv tog point, så kan du oprette et nyt spørgsmål
i samme kategori (C/C++) med titel "Point til arne_v" 60 point og i
spørgsmålets tekst link til dette spørgsmål.

Jævnfør f.eks. http://expfaq.1go.dk/?id=30#giv_flere_point
Avatar billede jha1 Nybegynder
09. august 2004 - 21:21 #18
Hej Arne_v. Så skulle der være mulighed for point -> http://www.eksperten.dk/spm/527751
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





White paper
Tidsbegrænset kampagne: Overvejer du at udskifte eller tilføje printere i din forretning? Vi kan tilbyde én eller flere maskiner gratis