Dec2Bin convertitore in binario in bennu

Spazio dedicato al linguaggio BennuGD per programmare videogiochi sulle nostre openconsole
User avatar
Zip
Site Admin
Posts: 3101
Joined: 3 May 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Location: Sicilia
Contact:

Dec2Bin convertitore in binario in bennu

Post by Zip »

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:

Code: Select all

//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
User avatar
gigios
Newser OC.it
Newser OC.it
Posts: 851
Joined: 4 May 2011, 9:08
Console open: Wiz; Caanoo
Location: Lombardia

Re: Dec2Bin convertitore in binario in bennu

Post by gigios »

Domanda rapida, vedo che usi

Code: Select all

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?
Image
User avatar
Zip
Site Admin
Posts: 3101
Joined: 3 May 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Location: Sicilia
Contact:

Re: Dec2Bin convertitore in binario in bennu

Post by Zip »

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
User avatar
gigios
Newser OC.it
Newser OC.it
Posts: 851
Joined: 4 May 2011, 9:08
Console open: Wiz; Caanoo
Location: Lombardia

Re: Dec2Bin convertitore in binario in bennu

Post by gigios »

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.
Image
User avatar
gigios
Newser OC.it
Newser OC.it
Posts: 851
Joined: 4 May 2011, 9:08
Console open: Wiz; Caanoo
Location: Lombardia

Re: Dec2Bin convertitore in binario in bennu

Post by gigios »

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... :?:
Image
User avatar
Zip
Site Admin
Posts: 3101
Joined: 3 May 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Location: Sicilia
Contact:

Re: Dec2Bin convertitore in binario in bennu

Post by Zip »

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
User avatar
gigios
Newser OC.it
Newser OC.it
Posts: 851
Joined: 4 May 2011, 9:08
Console open: Wiz; Caanoo
Location: Lombardia

Re: Dec2Bin convertitore in binario in bennu

Post by gigios »

: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.
Image
User avatar
Zip
Site Admin
Posts: 3101
Joined: 3 May 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Location: Sicilia
Contact:

Re: Dec2Bin convertitore in binario in bennu

Post by Zip »

mi posti tutto il codice?
User avatar
gigios
Newser OC.it
Newser OC.it
Posts: 851
Joined: 4 May 2011, 9:08
Console open: Wiz; Caanoo
Location: Lombardia

Re: Dec2Bin convertitore in binario in bennu

Post by gigios »

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

Code: Select all

//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.... ;)
Image
User avatar
Zip
Site Admin
Posts: 3101
Joined: 3 May 2011, 21:03
Console open: Attuali Caanoo , Wiz, dingoo a320 (possedute Wiz, s7100B, s5110, s7300B, OpenPandora)
Location: Sicilia
Contact:

Re: Dec2Bin convertitore in binario in bennu

Post by Zip »

scusa ma queo 105696 ecc
che chiami resto cosa sarebbe?
Post Reply