2nd ottobre, 2008

Generatore di numeri casuali su iphone

by Stefano Lodu

Oggi ci occuperemo di sviluppare velocemente, per rinfrescare soprattutto i passi iniziali, un programmino per la generazione di numeri casuali.

Cominciamo con il caricamente del nostro Xcode, andiamo su File e come al solito selezioniamo New Project. Da qui sotto la categoria iphone selezioniamo View-Based Applications (ricordando che questa opzione permette la creazione in automatico di una view necessaria all’inserimento dei dati visivi per la nostra applicazione). Creiamo, o scegliamo, la nostra directory di lavoro e diamo il nome “random” al file che andreamo a creare.

A questo punto tra le risorse “resources” andiamo a caricare la nostra interfaccia grafica (la nostra “view”) che si trova sul fine generato: RandomViewControl.xib (clicchiamoci sopra 2 volte). Da questo punto si aprirà la nostra solita applicazione Interface Builder (del pacchetto SDK iphone) necessaria per rappresentare graficamente la nostra applicazione iphone.

Ora dobbiamo inserire gli oggetti che ci serviranno per l’applicazioni. Iniziamo con inserire un bottone che nomineremo “Genera numero Casuale” (round rect button) e una Label nominandola “risultato”. Ricordo che per fare queste operazione basta posizionarsi sulla finestra delle librerie e tenendo premuto l’oggetto desiderato portarlo all’interno della finestra “view”.

Ora salviamo il progetto, proviamo a compilarlo con “Build and go” e vediamo se nel Simulatore iphone appare la nostra applicazione correttamente.

Ritorniamo ora nel nostro XCode perchè dobbiamo ad andare a definire 1) la variabile che dovrà contenere la Label che abbiamo inserito necessaria per recuperare il risultato generato dal numero casuale; 2) dobbiamo aggiungere il metodo (procedura) necessaria alla generazione del numero casuale che verra’ legata al tasto (button) che abbiamo inserito.

Carichiamo (con un doppio click) il file contenitore delle definizioni : Randomviewcontroller.h ed inseriamoci all’interno il codice di seguito evidenziato in rosso:

#import <UIKit/UIKit.h>

@interface randomViewController : UIViewController {
IBOutlet UILabel *textField;
}

- (IBAction)generate:(id)sender;

@end

Abbiamo cosi definito la variabile textfield e la procedura Generate. Ora salviamo e chiudiamo e carichiamo il corpo del file dove andremo ad inserire la procedura vera e propria per la generazione dei numeri casuali. Carichiamo il file RandomViewController.m ed inseriamo il codice evidenziato in rosso con le didascalie in verde:

#import “randomViewController.h”

@implementation randomViewController

- (IBAction)generate:(id)sender
{

// crea variabile di tipo numerico
int generated;
// crea variabile temporanea stringa
NSString *sTemp;
// grazie alla funzione random viene generato e assegnato il valore casuale
generated = (random() % 100) +1;
// assegna alla variabile temporanea la scritta generato = e il numero …
sTemp= [[NSString alloc] initWithFormat:@”generato = %d”, generated];
// assegna alla variabile assegnata alla label il valore
textField.text = sTemp;
// rilascia la memoria
[sTemp release];
}

Ecco creata la nostra procedura. Ora salviamo ma ci manca una cosa prima che il sistema possa funzionare: dobbiamo andare ad indicare agli oggetti inseriti label e button la rispettiva varibile e procedura che devono eseguire. Riportiamoci allora sul nostro file grafico RandomViewController.xib e carichiamolo nell’interface Builder.

Ora posizioniamoci sopra il nostro “file’s owner” dentro la finestra generale “randomviewController.xib” e tenendo premuto il tastro “CTRL” trasciniamo il mouse premuto fino ad arrivare alla nostra label “Risultato” rilasciamo e selezioniamo nel menu a tendina che appare la nostra variabile da assegnare “textField”.

Ora procediamo con lo stesso sistema per il Bottone ma dobbiamo partire dal bottone stesso tenendo premuto il pulsante CTRL e con il mouse premuto portarci fino al “file’s owner” una volta rilasciato dovremmo poter selezionare la nostra procedura “generate”.

Ecco il nostro programma e’ terminato, salviamo e compiliamo per vedere se funziona sempre con “build and go”.. se tutto sarà ok dovrebbe apparire questa finestra non appena premuto il pulsante.

Potete scaricare il sorgente (source code iphone) del programma al seguente link.

iPhoneandGo - Lodu - iphoneandgo@gmail.com
Developer . Objective-C . Tutorial Pratici | Add your comment

9 Comments. Subscribe to this post comments or trackback.

  1. timetravel0
    ottobre 13th, 2008

    ciao sto sviluppando una semplice applicazione (giusto per capire il funzionamento di XCode) che data un’operazione chieda all’utente il risultato.

    random() si comporta in modo strano: l’ordine dei numeri casuali è sempre lo stesso..sai come ovviare a questo problema?

    grazie mille!

  2. timetravel0
    ottobre 14th, 2008

    in C avevo aggirato il problema fornendo come parametro aggiuntivo getpid(). In questo modo ogni volta i numeri cambiavano.. dici che si potrà fare?

  3. thegian9o
    dicembre 25th, 2008

    in ci si usa il randomize() in maniera che ad ogni lancio del programma i numeri siano realmente casuali…

  4. futuromodder
    dicembre 12th, 2010

    anche io vorrei sapere come fare ad avere sempre dei numeri casuali all’avvio dell’app, perchè se apro l’app e schiaccio il pulsante genere ecc… mi vengon fuori gli stessi numeri!!
    e poi, se metto nello store un app gratuita guadagno dei soldi dai download?

  5. Stefano Lo Duca
    dicembre 12th, 2010

    Ciao,
    ho cercato un po’ in giro una risposta adeguata alla tua domanda… e qui puoi vedere diversi modi e pensieri di creare random number

    http://stackoverflow.com/questions/160890/generating-random-numbers-in-objective-c

    Per la seconda domanda la risposta e’ NO.. se metti app gratis in appStore non guadagni per download.

  6. futuromodder
    dicembre 13th, 2010

    mentre per le app a pagamento come funziona?

  7. Stefano
    dicembre 13th, 2010

    Per quelle a pagamento la procedura e’ che apple ti riconosce il 70% del guadagno e ti paga regolarmente mensilmente al raggiungimento di almeno 150 US$

  8. futuromodder
    dicembre 13th, 2010

    Perciò se il totale delle vendite di un mese non raggiunge i 150$ e come se non avessi venduto?
    O vengono calcolati per il mese successivo?

  9. Stefano Lo Duca
    dicembre 13th, 2010

    No, vanno in accumulo per il mese sucessivo naturalmente.. semplicemente non ricevi i soldi per un mese..

Leave A Reply