Newsgroup: it.comp.giochi.avventure.testuali
Titolo: pause in mac

sul manuale di mac c' è scritto che pause 0 crea una pausa infinita 
interrompibile premendo un tasto: invece a me succede che la pausa si 
interrompa solo battendo invio, e che ogni tanto premuto precedentemente 
all'invio venga bufferizzato e faccia scattare successive pause. Ad 
esempio message 1 pause 0 message 2 pause 0 message 3 pause 0 message 4: 
se io premo invio ogni volta che c'è una pausa va tutto bene, ma se io 
alla prima pausa batto CIAO e poi invio mi attiva tutte le pause 
successive; Sono io che sbaglio qualcosa o c'è un errore nel manuale?
grazie.
f.

 interrompa solo battendo invio, e che ogni tanto premuto 
tasto, non tanto.
f.


Dovrebbe essere un problema irrisolvibile di macstd.exe (che si basa sui
canali standard di input e output). Le altre versioni dovrebbero
funzionare bene.
bye
-- 
Paolo Lucchesi
email: 
pluc...@tin.it
homepage: 
http://www.paololucchesi.it
ICQ# 731067
"Non viviamo in un mondo perfetto (per fortuna)"

Il codice di MacStd contiene questa parte che dovrebbe chiarirti le idee:
-----------
int getcmd(char* cmd, int mx) {
/*  Accetta una stringa s lunga al massimo mx */
    printf(prompt); fgets(cmd,mx,stdin);
    return(0);
}
int make_pause(int t) {
/*  Aspetta la pressione di INVIO, indipendentemente da t */
    fgetc(stdin);
    return(0);
}
-----------
Il primo problema (INVIO) non può essere risolto in quanto è una prerogativa
dell'stdin.
Il secondo invece ("bufferizzazione") deriva da una mancanza: dopo le
funzioni fgetc() e fgets() bisogna ripulire il buffer con "fflush(stdin)".
Anche fgets() dà problemi di bufferizzazione, infatti se 'mx' è 20 e
l'utente inserisce 30 caratteri, gli ultimi 10 (circa) resteranno nel
buffer.
Kiuhnm

 funzionare bene.
Peccato, dovrò inserire qualcosa del tipo 'batti invio'. Pazienza.
f.
piesse: ricevesti la mia immeil? Il problema degli spazi l'hai mica 
visto? Un saluto.

 caratteri, gli ultimi 10 (circa) resteranno nel buffer.
ho capito: purtroppo io, come utilizzatore di mac ci posso fare poco. Ma 
i sorgenti di mac sono da qualche parte che provo a compilarlo sotto 
macosx?
f.

Sì, puoi scaricarli da 
http://space.tin.it/giochi/ipsll/mac/download.htm
Il file da modificare si chiama "stdiofe.c".
Ti basta aggiungere un "fflush(stdin);" dopo ogni funzione che legge
dall'stdin (fgetc, fgets, ecc...sempre che ce ne siano altre nel file).
Per compilarlo ti serve DJGPP2.
Se hai problemi con quest'ultimo, scrivimi pure :-)
Kiuhnm

 Se hai problemi con quest'ultimo, scrivimi pure :-)
Ops...dimenticavo. Forse per mac non è disponibile :-(
Dovrai usare qualcos'altro...
Kiuhnm

 Kiuhnm
ho provato a fare il makefile dello stdio, e -dopo aver modificato tutti 
i gcc in cc- mi viene fuori questo errore:
[localhost:~/mac] fabrizio% make stdio
cc -c main.c
cc -c load.c
load.c:8: header file 'values.h' not found
cpp-precomp: warning: errors during smart preprocessing, retrying in 
basic mode
make: *** [load.o] Error 1
Credo cerchi un values.h che perň nel mio mac non c'č.
f.

> Credo cerchi un values.h che perň nel mio mac non c'č.
values.h fa parte di DJGPP2 (non č un file molto standard...)
Eccotelo qui:
------ da qui.... -------
/* Copyright (C) 1995 DJ Delorie, see 
COPYING.DJ
 for details */
#ifndef __dj_include_values_h_
#define __dj_include_values_h_
#ifdef __cplusplus
extern "C" {
#endif
#ifndef __dj_ENFORCE_ANSI_FREESTANDING
#ifndef __STRICT_ANSI__
#ifndef _POSIX_SOURCE
#define BITSPERBYTE 8
#define CHARBITS    8
#define SHORTBITS   16
#define INTBITS     32
#define LONGBITS    32
#define PTRBITS     32
#define DOUBLEBITS  64
#define FLOATBITS   32
#define MINSHORT    ((short)0x8000)
#define MININT      ((int)0x80000000L)
#define MINLONG     ((long)0x80000000L)
#define MAXSHORT    ((short)0x7fff)
#define MAXINT      ((int)0x7fffffff)
#define MAXLONG     ((long)0x7fffffff)
#define MAXDOUBLE   1.79769313486231570e+308
#define MAXFLOAT    ((float)3.40282346638528860e+38)
#define MINDOUBLE   2.22507385850720140e-308
#define MINFLOAT    ((float)1.17549435082228750e-38)
#define _IEEE       0
#define _DEXPLEN    11
#define _FEXPLEN    8
#define _HIDDENBIT  1
#define DMAXEXP     ((1 << _DEXPLEN - 1) - 1 + _IEEE)
#define FMAXEXP     ((1 << _FEXPLEN - 1) - 1 + _IEEE)
#define DMINEXP     (-DMAXEXP)
#define FMINEXP     (-FMAXEXP)
#endif /* !_POSIX_SOURCE */
#endif /* !__STRICT_ANSI__ */
#endif /* !__dj_ENFORCE_ANSI_FREESTANDING */
#ifndef __dj_ENFORCE_FUNCTION_CALLS
#endif /* !__dj_ENFORCE_FUNCTION_CALLS */
#ifdef __cplusplus
}
#endif
#endif /* !__dj_include_values_h_ */
------ ....a qui -------

MacStd usa anche una libreria chiamata zlib.
E' lunga 240 KB (zip) quindi te l'ho mandata per posta...
Kiuhnm

 Eccotelo qui:
andiamo avanti:
[localhost:~/mac] fabrizio% make stdio
cc -c load.c
values.h:47: #endif outside an #if
values.h:48: #endif outside an #if
values.h:57: #endif outside an #if
cpp-precomp: warning: errors during smart preprocessing, retrying in 
basic mode
make: *** [load.o] Error 1
Suggerimenti?
f. 

 Kiuhnm
ti ringrazio: pensavo: se ti creo un utente kiuhnm sul mio imac, hai 
mica voglia di provarci direttamente tu?
f.

 Suggerimenti?
Probabilmente il tuo compilatore (preprocessore) non supporta le forme
annidate:
#if
#if
#endif
#endif
Usa questo:
* Copyright (C) 1995 DJ Delorie, see 
COPYING.DJ
 for details */
#ifndef __dj_include_values_h_
#define __dj_include_values_h_
#ifdef __cplusplus
extern "C" {
#endif
#define BITSPERBYTE 8




#ifdef __cplusplus
}
#endif

 mica voglia di provarci direttamente tu?
Ti darei volentieri una mano, ma non ho tutto questo tempo...hai notato che
in questi ultimi tempi i miei messaggi sono sempre più rari (tranne oggi che
ho avuto un po' di respiro)?
E poi non saprei come muovermi su un mac.
Toglimi una curiosità. Da dove hai preso il file eseguibile per la tua
piattaforma?
La distribuisce Paolo Lucchesi?
Ti ho dato tutto il necessario però devi lavorarci un po' e io purtroppo non
ho tempo.
Mi spiace :-(
Kiuhnm

 Mi spiace :-(
figurati, grazie ancora.
f.

Quando incontri problemi puoi comunque scrivermi al mio indirizzo di posta.
Kiuhnm
P.S. Se ho tempo farò una versione ultra-portabile di MacStd risolvendo sia
i problemi del tasto invio che quelli della pausa :-)

 risolvendo sia i problemi del tasto invio che quelli della pausa :-)
bravo! se lo fai guarda anche il bug degli spazi aggiunti e ricordati di 
distruggere cartagine.
f.

 distruggere cartagine.
Di cosa si tratta?
Comunque ho cambiato idea: porterò la versione grafica in OpenGL/GLUT
(disponibili anche per MacOS).
Kiuhnm

 Comunque ho cambiato idea: porterò la versione grafica in OpenGL/GLUT
certo, dopo avermi fatto la stdio con il pause a carattere, vero?
f.

 certo, dopo avermi fatto la stdio con il pause a carattere, vero?
No, mi sono informato!
Le GLUT sono disponibili e perfettamente funzionanti anche per MacOS (tu hai
questo vero?)
Non è più bello poter avere la versione grafica?
Kiuhnm


all'inizio della riga?
se si: è perchè nello script hai lasciato uno spazio in fondo alla riga di
testo e sei andato a capo, rimuovi lo spazio alla fine della riga.
ciao

 riga di testo e sei andato a capo, rimuovi lo spazio alla fine della 
ahimé no, nel mezzo di una parola.
f.
-- 
http://www.venerandi.org
telnet://
neon.ods.org:8010
http://www.editricezona.it/trionfo%20impiegato.htm