Dec2Bin convertitore in binario in bennu

Spazio dedicato al linguaggio BennuGD per programmare videogiochi sulle nostre openconsole
Avatar utente
Zip
Site Admin
Messaggi: 3090
Iscritto il: 3 mag 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Località: Sicilia
Contatta:

Dec2Bin convertitore in binario in bennu

Messaggioda Zip » 7 giu 2011, 16:00

non volevo sporcare l'altro topic
ecco il nuovo sorgente
-adesso riesce a leggere i numeri con la virgola
-riesce a dirci se dopo la virgola c'e 5 o no

problema,
se metto la condizione

if virgolo=5;
binario=1;
else
binario=0;
end

misteriosamente mi dice sempre che il risultato della divisione viene con ",5" :o
edit: anzi il risultato è giusto, la variabile "virgolo" è sbagliata

ecco il sorgente se qualche anima pia (un RZZ di turno :D ) mi dice che cavolo ha sto coso ne sarei grato 8-)

source:

Codice: Seleziona tutto

//CONVERTITORE v.0.2

global

float numero;
float risultato;
int virgolo;
int binario;

begin
     set_mode(320,240,16);
     write(0,10,5,0,"dec2bin v.1 push S o D");
     write(0,10,15,0,"S=9 D=8");
    write_var(0,210,5,0,numero);
     write_var(0,240,5,0,risultato);   
    write_int(0,210,30,0,&virgolo);
    write_int(0,210,40,0,&binario);
   loop
    if (key(_s));
     numero=9;
     converti();
     end

    if (key(_d));
     numero=8;
     converti();
     end
      
    frame;
   end
   let_me_alone();
end


process converti()
begin
   risultato=numero/2;
   virgolo=substr(risultato,2,2); //legge la parte di float di "risultato" dopo la ","
   //punto dove doveva essere messa la condizione
end

Avatar utente
gigios
Newser OC.it
Newser OC.it
Messaggi: 851
Iscritto il: 4 mag 2011, 9:08
Console open: Wiz; Caanoo
Località: Lombardia

Re: Dec2Bin convertitore in binario in bennu

Messaggioda gigios » 7 giu 2011, 16:29

Domanda rapida, vedo che usi

Codice: Seleziona tutto

virgolo=substr(risultato,2,2);

il quale penso serva per estrarre la 'sottostringa' partendo dal secondo carattere, quello che vorrei capire è se Bennu effettua i cast (conversioni) al volo.
Guardando il codice risultato è definito come float mentre substr agisce sulle stringa, quindi mi manca un passaggio di 'conversione', a meno che, ripeto, non venga fatto implicitamente.

edit: ma un help di Bennu 'decente' non esiste ? Magari anche offline?
Immagine

Avatar utente
Zip
Site Admin
Messaggi: 3090
Iscritto il: 3 mag 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Località: Sicilia
Contatta:

Re: Dec2Bin convertitore in binario in bennu

Messaggioda Zip » 7 giu 2011, 16:47

Guardando il codice risultato è definito come float mentre substr agisce sulle stringa, quindi mi manca un passaggio di 'conversione', a meno che, ripeto, non venga fatto implicitamente.

non ne ho la piu pallida idea, vuoi vedere che è per questo che se aggiungo quella condizione sballa?
edit: ma un help di Bennu 'decente' non esiste ? Magari anche offline?

offline c'e in spagnolo, e in inglese l'elenco delle cose che ci sono dentro i moduli e basta

mentre online c'e il wiki

Avatar utente
gigios
Newser OC.it
Newser OC.it
Messaggi: 851
Iscritto il: 4 mag 2011, 9:08
Console open: Wiz; Caanoo
Località: Lombardia

Re: Dec2Bin convertitore in binario in bennu

Messaggioda gigios » 8 giu 2011, 8:21

Eccomi qui, ho fatto una prova veloce ma nella mia completa ignoranza di Bennu non riesco a par partire il tuo esempio.
Mi da errore nelle costanti usate per i tasti.
Ho guardato un esempio che usa la tastiera (esempio Medium presente nel pack 2.1) e non noto nulla di strano salvo che nella cartella è presente un file imp con all'interno, penso, i moduli da importare.
Come devo fare x creare questo files con i moduli che servono?

edit: non ho visto menu specifici (a meno che il menu settings/import plugins sia riferito a questi moduli e non ai plugin dell'editor), ho copiato brutalmente l'imp dell'esempio e ora compila.
Immagine

Avatar utente
gigios
Newser OC.it
Newser OC.it
Messaggi: 851
Iscritto il: 4 mag 2011, 9:08
Console open: Wiz; Caanoo
Località: Lombardia

Re: Dec2Bin convertitore in binario in bennu

Messaggioda gigios » 8 giu 2011, 8:37

Scusa il doppio post!

Ho provato l'esempio, a parte la difficoltà di andare alla cieca con le istruzioni, ma mi sembra funzionare correttamente.
A video vedo il risultato della divisione corretta e nella linea sotto il primo valore che diventa 0 o 5 a seconda che si prema il tasto S o D come da prg.
Quello che non cambia è il valore binario in quanto non viene ancora calcolato, ma il tutto sembra funzionare... :?:
Immagine

Avatar utente
Zip
Site Admin
Messaggi: 3090
Iscritto il: 3 mag 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Località: Sicilia
Contatta:

Re: Dec2Bin convertitore in binario in bennu

Messaggioda Zip » 8 giu 2011, 10:29

edit: non ho visto menu specifici (a meno che il menu settings/import plugins sia riferito a questi moduli e non ai plugin dell'editor), ho copiato brutalmente l'imp dell'esempio e ora compila.

o fai un file generico bgdc.import come quello che hai copiato e sei sicuro, oppure crei un file .import con lo stesso nome del .prg e dovrebbe andare..

Quello che non cambia è il valore binario in quanto non viene ancora calcolato, ma il tutto sembra funzionare...


Prova ad aggiungere la parte quotata all inizio del primo post, e la metti alla fine del codice dove c'e il commento "dove doveva venire messa la condizione"
riprova il programma e vedi che fa sempre 5 e 1

Avatar utente
gigios
Newser OC.it
Newser OC.it
Messaggi: 851
Iscritto il: 4 mag 2011, 9:08
Console open: Wiz; Caanoo
Località: Lombardia

Re: Dec2Bin convertitore in binario in bennu

Messaggioda gigios » 8 giu 2011, 11:16

:oops: Mi era sfuggita la prima parte.

Ora, senza saper ne leggere ne scrivere in Bennu, ho cercato nel wiki come effettuare il modulo (ovvero avere il resto di una divisione) ed ho trovato l'operatore %.
Il problema è che ottengo un errore di compilazione, guardando nel forum ho trovato l'istruzione mod la quale effettua la stessa operazione, l'unico vincolo che le due variabili siano interi (o almeno questo è quello che ho interpretato io).

Riassunto, semplicemente per sapere se il bit deve essere 1 o 0 ho fatto così:

binario=(numeroInt mod 2);

dove numeroInt è semplicemente la tua variabile solo che l'ho definita come integer altrimenti ottengo un errore di compilazione (non ho ancora capito come cavolo convertire un tipo di dato in un altro, ovvero come fare il cast).

Così facendo sembrerebbe funzionare.
Immagine

Avatar utente
Zip
Site Admin
Messaggi: 3090
Iscritto il: 3 mag 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Località: Sicilia
Contatta:

Re: Dec2Bin convertitore in binario in bennu

Messaggioda Zip » 8 giu 2011, 11:42

mi posti tutto il codice?

Avatar utente
gigios
Newser OC.it
Newser OC.it
Messaggi: 851
Iscritto il: 4 mag 2011, 9:08
Console open: Wiz; Caanoo
Località: Lombardia

Re: Dec2Bin convertitore in binario in bennu

Messaggioda gigios » 8 giu 2011, 11:47

Questo è il tutto (considera che ci sono dentro anche parti tolte/commentate durante i test):

Codice: Seleziona tutto

//CONVERTITORE v.0.2

global

int numeroInt;
float numero;
float risultato;
int virgolo;
int binario;
begin
     set_mode(320,240,16);
     write(0,10,5,0,"dec2bin v.1 push S o D");
     write(0,10,15,0,"S=9 D=8");
    write_var(0,210,5,0,numero);
     write_var(0,240,5,0,risultato);   
   write(0,100,30,0,"Virgolo :=>:");
    write_int(0,210,30,0,&virgolo);
   write(0,100,40,0,"Binario :=>:");
    write_int(0,210,40,0,&binario);
   loop
    if (key(_s));
     numero=9;
     numeroInt=9;
     converti();
     end

    if (key(_d));
     numero=8;
     numeroInt=8;
     converti();
     end
     
    frame;
   end
   let_me_alone();
end


process converti()
local
string resto;
int res;
float res2;
end
begin
   risultato=numero/2;
   binario=(numeroInt mod 2);
   res2=frac(risultato);
   //res=res*2;
   /*if (res=numero);
   binario=0;
   else
   binario=1;
   end
   */
    write_int(0,210,50,0,&res);
    write_var(0,210,60,0,res2);
   
   //resto=substr(risultato,2,2);
   //virgolo=substr(risultato,2,2); //legge la parte di float di "risultato" dopo la ","
   
   //punto dove doveva essere messa la condizione
/*     if resto='5';
    binario=1;
   else
    binario=0;
   end
 */
 end
 
FUNCTION float frac ( float f )
PRIVATE
   int n;
BEGIN
   n = f;
   RETURN (f - n);
END


è sostanzialmente la tua versione su cui ho fatto due o tre prove veloci.... ;)
Immagine

Avatar utente
Zip
Site Admin
Messaggi: 3090
Iscritto il: 3 mag 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Località: Sicilia
Contatta:

Re: Dec2Bin convertitore in binario in bennu

Messaggioda Zip » 8 giu 2011, 11:56

scusa ma queo 105696 ecc
che chiami resto cosa sarebbe?


Torna a “BennuGD Italia”

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite