Miten saa cin:in ohjelman pysäyttämisen pois?
Tarkoitan että kun ohjelma lukee cinin, se pysähtyy odottamaan että merkit syötetään ja syöttö lopetetaan. Kuinka cinin saisi "ei pysäyttämään ohjelmaa" jotta sen voisi sijoittaa esim while silmukkaan ja samalla saisi tehtyä muita toimenpiteitä??
Ei tietääkseni onnistu. Joudut käyttämään jotakin muuta, esimerkiksi NCurses-kirjastoa (ks. opas).
cin.peek();
Tuolla voi tutkia streamin seuraavaa merkkiä ilman, että ohjelma pysähtyy.
Mutta jos streamissa ei ole mitään, niin tuokin pysäyttää ohjelman, eli esimerkiksi reaaliaikaisen pelin silmukkaan tuokaan ei sovi.
Hummhumm, reaaliaikaista softaa ncursesilla. En muista, pistinkö tuohon oppaaseen mitään, millä se onnistuisi. Muistaakseni tein esimerkin asiasta, mutta se jäi jostain syystä sitten pois. Eli ei kannata selata opasta "reaaliaikaisten" esimerkkien toivossa, siellä ei muistaakseni mainita mitään kyseessä olevasta asiasta.
Kuitenkin uskoisin, että pdcursesilla tai ncursesilla reaaliaikaisuus onnistuu. Jos lähdet tutustumaan ncursesiin/pdcursesiin, kannattaa tutustua ainakin seuraavaan tilaan: int halfbreak(int tenths);
Halfbreak-tilassa odotetaan sekunnin kymmenyksien verran syötetta; jos syötettä ei kuulu, getch(); palautta ERR:n. Jos syöte tulee, ohjelman suoritus jatkuu ja syöte on käytettävissä. Ja näitä tiloja tosiaan sitten on muitakin. Kannattaa turvautua unix-manuaaliin:
http://bama.ua.edu/cgi-bin/man-cgi?00 00
Hmm, olisikohan se pienen oppaan päivityksen paikka...
Aihe on jo aika vanha, joten et voi enää vastata siihen.