Aggiungere tot caratteri ad un valore numerico

Scripts e snippets scritti in GameMaker Language (gml)
Rispondi
Avatar utente
pacmino
GMI Guru
Messaggi: 2569
Iscritto il: 03/06/2009, 16:38
Specialità: Scazzato cronico
Uso: GM:Studio 2
Località: Seconda stella a destra questo è il cammino e poi dritto, fino al mattino...
Contatta:

Aggiungere tot caratteri ad un valore numerico

Messaggio da pacmino »

Immaginiamo di volere rappresentare un punteggio o un altro valore con una stringa di lunghezza prefissata (ad esempio 10 caratteri) in questa maniera:

0000000150
0000012690
0000089780

per farlo possiamo usare uno script che aggiunge automaticamente un certo numero di 0 al valore numerico iniziale

Codice: Seleziona tutto

/* 
nome script  addstring

argomenti da passare allo script
argument 0 = valore numerico iniziale
argument 1 = lunghezza totale della stringa finale
argument 2 = stringa carattere da aggiungere  
esempio draw_text(x,y,addstring(punteggio,10,"0"))
disegna la variabile punteggio aggiungendo un certo numero di 0 davanti
*/

var stringain;
var stringaout;

stringain = string(argument0);
if argument1 > string_length(stringain)
{
stringaout = string_repeat(argument2, argument1 - string_length(stringain));
}
else
{
stringaout= "";
}
stringaout+= stringain;
return stringaout;
versione più semplice

Codice: Seleziona tutto

var lung;
var out;
lung=string(argument0)
out=string_repeat(argument2,argument1-string_length(lung)) + string(argument0)
return  out
versione infinitamente più semplice

Codice: Seleziona tutto

return string_replace_all(string_format(argument0,argument1,0)," ",argument2)
Ultima modifica di pacmino il 23/08/2014, 9:35, modificato 1 volta in totale.
Immagine

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: Aggiungere tot caratteri ad un valore numerico

Messaggio da Jak »

Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
pacmino
GMI Guru
Messaggi: 2569
Iscritto il: 03/06/2009, 16:38
Specialità: Scazzato cronico
Uso: GM:Studio 2
Località: Seconda stella a destra questo è il cammino e poi dritto, fino al mattino...
Contatta:

Re: Aggiungere tot caratteri ad un valore numerico

Messaggio da pacmino »

Jak ha scritto:***coff string_format(val,tot,dec) coff***
a jakkke spiegati meglio, intendi che si può fare in altra maniera? certo che si può fare in altra maniera
Immagine

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: Aggiungere tot caratteri ad un valore numerico

Messaggio da Tizzio »

string_format(val,tot,dec) Converte val in una stringa usando il tuo formato: tot indica il numero totale delle cifre e dec indica il numero di cifre decimali.

Avatar utente
pacmino
GMI Guru
Messaggi: 2569
Iscritto il: 03/06/2009, 16:38
Specialità: Scazzato cronico
Uso: GM:Studio 2
Località: Seconda stella a destra questo è il cammino e poi dritto, fino al mattino...
Contatta:

Re: Aggiungere tot caratteri ad un valore numerico

Messaggio da pacmino »

non parlavo di decimali, lo script serve per aggiungere un tot di caratteri davanti ad un'altra stringa numerica in modo da ottenere sempre una lunghezza prefissata

potrebbe essere anche così

____150
___1250

eccetera

una versione semplificata dello script senza if

Codice: Seleziona tutto

var lung;
var out;
lung=string(argument0)
out=string_repeat(argument2,argument1-string_length(lung)) + string(argument0)
return  out
Immagine

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: Aggiungere tot caratteri ad un valore numerico

Messaggio da Jak »

pacmino ha scritto:non parlavo di decimali, lo script serve per aggiungere un tot di caratteri davanti ad un'altra stringa numerica in modo da ottenere sempre una lunghezza prefissata
Tizzio ha scritto:tot indica il numero totale delle cifre e dec indica il numero di cifre decimali.
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
gameplay_extreme
GMI VIP
Messaggi: 3824
Iscritto il: 13/11/2010, 16:23
Uso: GM:Studio 2
Contatta:

Re: Aggiungere tot caratteri ad un valore numerico

Messaggio da gameplay_extreme »

Capitan Ovvio ha scritto:In programmazione capita che ci siano molteplici soluzioni per lo stesso problema
esempio:

Codice: Seleziona tutto

if ciao == true
  { ciao = false }
else
  { ciao = true }
stessa cosa di:

Codice: Seleziona tutto

ciao = !ciao
Immagine
clicca sul logo qui sopra per info e download riguardo ai miei software o per sapere come si crea un videogioco!

iscriviti qui gratuitamente a GMI !
Spoiler
- Una curiosità: come mai quell' ordine ?
- Perché formava una scaletta molto carina da vedere.


"ah ah...grazie alla annotazione scientifica ti ho fregato!"
(come disse la calcolatrice al display)

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: Aggiungere tot caratteri ad un valore numerico

Messaggio da Tizzio »

*In programmazione capita che ci siano soluzioni migliori di altre allo stesso problema

Fixed that for you

Avatar utente
pacmino
GMI Guru
Messaggi: 2569
Iscritto il: 03/06/2009, 16:38
Specialità: Scazzato cronico
Uso: GM:Studio 2
Località: Seconda stella a destra questo è il cammino e poi dritto, fino al mattino...
Contatta:

Re: Aggiungere tot caratteri ad un valore numerico

Messaggio da pacmino »

il comando string_format(val,tot,dec) aggiunge solo spazi bianchi e non è quello che volevo presentare io, lo stesso titolo dice aggiungere tot caratteri non tot spazi

con il mio codice è possibile inserire qualunque carattere dallo zero ad una linea eccetera, ovviamente bisogna usare dei font in cui ogni carattere occupa sempre il medesimo spazio (tipo font monospace) se si vuole avere un allineamento preciso

esempio utilizzando courier come font

Immagine
Immagine

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: Aggiungere tot caratteri ad un valore numerico

Messaggio da Jak »

E anche per questo compito esiste apposta string_replace_all(str,substr,newstr)
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
pacmino
GMI Guru
Messaggi: 2569
Iscritto il: 03/06/2009, 16:38
Specialità: Scazzato cronico
Uso: GM:Studio 2
Località: Seconda stella a destra questo è il cammino e poi dritto, fino al mattino...
Contatta:

Re: Aggiungere tot caratteri ad un valore numerico

Messaggio da pacmino »

Jak ha scritto:E anche per questo compito esiste apposta string_replace_all(str,substr,newstr)
e allora semplifichiamo ulteriormente lo script :asd:

Codice: Seleziona tutto

var out;
out = string_replace_all(string_format(argument0,argument1,0)," ",argument2)
return out
Immagine

Avatar utente
mac12
Membro d'elite
Messaggi: 1124
Iscritto il: 18/09/2012, 17:32
Specialità: programmazione
Uso: GameMaker 8.1
Contatta:

Re: Aggiungere tot caratteri ad un valore numerico

Messaggio da mac12 »

pacmino ha scritto: e allora semplifichiamo ulteriormente lo script :asd:

Codice: Seleziona tutto

var out;
out = string_replace_all(string_format(argument0,argument1,0)," ",argument2)
return out
veramente si potrebbe semplificare ancora:

Codice: Seleziona tutto

return string_replace_all(string_format(argument0,argument1,0)," ",argument2)

Avatar utente
Xxshark888xX
Membro d'elite
Messaggi: 1497
Iscritto il: 30/05/2012, 19:17
Specialità: Un poco di tutto
Uso: GM:Studio 1.4 Pro
Località: Earth
Contatta:

Re: Aggiungere tot caratteri ad un valore numerico

Messaggio da Xxshark888xX »

mac12 ha scritto:
pacmino ha scritto: e allora semplifichiamo ulteriormente lo script :asd:

Codice: Seleziona tutto

var out;
out = string_replace_all(string_format(argument0,argument1,0)," ",argument2)
return out
veramente si potrebbe semplificare ancora:

Codice: Seleziona tutto

return string_replace_all(string_format(argument0,argument1,0)," ",argument2)
Questo mi ha fatto morire dal ridere! Povero Pac. Alla fine lo script è diventata una cosa "obsoleta", diciamo :asd:
Contatti
Steam
Facebook

Gif
Spoiler
Immagine
Immagine
Immagine
Immagine

Avatar utente
aironenero
GMI Guru
Messaggi: 2612
Iscritto il: 02/05/2012, 14:56
Specialità: Unity 3D
Uso: GM:Studio 1.4 Pro
Località: Ispica
Contatta:

Re: Aggiungere tot caratteri ad un valore numerico

Messaggio da aironenero »

mac12 ha scritto:veramente si potrebbe semplificare ancora:
immagino la faccia di pacmino:
Immagine
Unity Developer
Immagine
Immagine

Avatar utente
pacmino
GMI Guru
Messaggi: 2569
Iscritto il: 03/06/2009, 16:38
Specialità: Scazzato cronico
Uso: GM:Studio 2
Località: Seconda stella a destra questo è il cammino e poi dritto, fino al mattino...
Contatta:

Re: Aggiungere tot caratteri ad un valore numerico

Messaggio da pacmino »

cattivi :mrgreen:

in realtà l'ho fatto apposta per vedere se eravate attenti nella programmazione :asd:
Immagine

Avatar utente
Xxshark888xX
Membro d'elite
Messaggi: 1497
Iscritto il: 30/05/2012, 19:17
Specialità: Un poco di tutto
Uso: GM:Studio 1.4 Pro
Località: Earth
Contatta:

Re: Aggiungere tot caratteri ad un valore numerico

Messaggio da Xxshark888xX »

pacmino ha scritto:cattivi :mrgreen:

in realtà l'ho fatto apposta per vedere se eravate attenti nella programmazione :asd:
Ccccccerto :sisisi:
Contatti
Steam
Facebook

Gif
Spoiler
Immagine
Immagine
Immagine
Immagine

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti