Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++:n LOCATE-vastine

hunajavohveli [24.01.2004 12:50:15]

#

Aloittelen C++:saa ja minulla on miltei 1000-sivuinen C++-opas, eikä tahdo siitä löytyä edes yksinkertaista vastinetta Basicin LOCATE-käskylle. Eli siis millä funktiolla saan asetettua tekstikursorin tietylle riville ja sarakkeelle?

sqwiik [24.01.2004 22:00:40]

#

Katso kääntäjän helpistä, missä kirjastossa on määritelty gotoxy(rivi, sarake).

Yleensä conio.h

Antti Laaksonen [25.01.2004 01:01:01]

#

Jos ohjelmasi toimii konsolissa, niin kirjoituskohdan muuttaminen ei varmaan ole kannattavaa. Nimittäin konsoli on tarkoitettu vain tekstin syöttöön ja tulostukseen, ja edellisten rivien kuuluu olla näkyvissä.

hunajavohveli [25.01.2004 15:38:17]

#

Joo conio.h:sta löytyi ja jo toimii gotoxy.

lainaus:

Jos ohjelmasi toimii konsolissa, niin kirjoituskohdan muuttaminen ei varmaan ole kannattavaa. Nimittäin konsoli on tarkoitettu vain tekstin syöttöön ja tulostukseen, ja edellisten rivien kuuluu olla näkyvissä.

Tarkoituksena on tehdä tekstipohjainen matopeli ja näin ollen pitää määrillä kohta, johon madon pää pistetään. En oikein ymmärrä miksei kannaisi muuttaa kirjoituskohtaa, olenhan vasta aloittelija, mutta en nyt tähän muutakaan ratkaisua keskinyt.

hunajavohveli [25.01.2004 16:14:44]

#

No niin, heti löytyi uusi ongelma. :)
Nyt pitäisi saada vastine Basicin INPUT$(1)-Funktiolle. Eli pitäisi odottaa näppäimen painallusta, ja sitten tallentaa painettu näppäin muuttujaan. Ja jatkaa suoritusta heti painalluksen jälkeen, ettei tarvitsisi painaa mitään Enteriä, niin kuin tavallisessa INPUT:ssa.

sqwiik [25.01.2004 22:12:24]

#

Koska löytyi gotoxy, niin taatusti löytyy myös getch ja kbhit.

getch() palauttaa painetun näppäimen jos sellaista on puskurissa ja jos eiole, niin odottaa painallusta.

kbhit() tarkistaa, onko puskurissa näppäimiä.

Eli laita seuraava silmukkaan, niin se lukee näppäimiä vain jos niitä on painettu:

key = 0;
if(kbhit())key = getch();

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta