Archivio tag per Python

PyFoil 1.2

Ecco la nuova versione della mia applicazione PyFoil, sviluppata in Python per Symbian S60.

Purtroppo a causa della mancanza di tempo non sono riuscito a completarla e sono presenti alcuni bug che segnalo stesso in questa pagina:

  • I dati sulla pressione e la temperatura nella stratosfera non vengono calcolati correttamente
  • Il calcolo del centro aerodinamico dell’ala non è corretto in caso di angolo di freccia
  • Il calcolo del coefficiente di momento non è corretto
  • È possibile settare i dati del piano di coda orizzontale, ma questi non vengono ancora utilizzati per fare calcoli

L’applicazione è comunque in grado di calcolare svariati parametri geometrici e aerodinamici sull’ala, impostandone caratteristiche alla radice e all’estremità.

Segue il codice del programma.
Leggi il resto dell’articolo »


PyFoil 1.1

Sto continuando lo sviluppo dell’applicazione presentata in un precedente articolo, PyFoil.

PyFoil è scritto in Python per dispositivi mobili Symbian. Per utilizzarlo è necessario installare PyS60 sul proprio cellulare.

La versione precedente a questa era in grado solo di disegnare profili alari, in questa versione ho migliorato questa funzione e ne ho aggiunte di nuove.
L’applicazione è divisa in quattro schede:

  • Intro: è una semplice scheda di introduzione sul programma
  • Plot: permette di disegnare un NACA a 4 o 5 cifre e di esportare l’immagine in un file
  • Group: permette il calcolo di alcuni gruppi adimensionali quali Reynolds, Mach e Froude, a partire da diversi parametri
  • ISA: restituisce i parametri dell’Atmosfera Standard in base all’altitudine, espressa in metri o piedi.

Prossimi sviluppi: l’obiettivo è quello di creare un’applicazione che possa essere da supporto (mobile) ad un ingegnere aerospaziale. Le prossime funzioni riguarderanno: la risoluzione del campo di moto attorno ai profili con relative informazioni connesse; aumento del numero di gruppi adimensionali calcolabili; calcolo di informazioni relative all’ala.

Bug noti: il calcolo di densità e pressione nell’ISA utilizza la stessa funzione sia per la troposfera che per la stratosfera, che è un errore. Purtroppo la formula del calcolo in stratosfera mi dava qualche errore e ho dovuto fare questa semplificazione che risolverò nella prossima versione.

Alcuni screenshot:

Segue il codice del programma.
Leggi il resto dell’articolo »


PyFoil, disegna profili alari con il cellulare

PyFoil è un semplice programmino scritto da me in Python che permette di disegnare profili NACA a 4 e 5 cifre, direttamente dal cellulare.

Per poterlo utilizzare è necessario installare il software Python for S60 sul proprio cellulare, che è reperibile a questo indirizzo.

Ecco alcuni screenshot del programma:


Segue il codice dell’applicazione.

Leggi il resto dell’articolo »


Sette e mezzo in Python

In qualche ora di tempo libero ho scritto questo semplice giochino in Python. Dovrebbe rappresentare il gioco del Sette e mezzo ma, anche se le modalità di gioco sono quelle, non sono sicuro che a livello probabilistico sia lo stesso.

Il gioco si svolge contro il computer: prima vengono distribuite le due carte, poi il giocatore può richiederne altre finché non è soddisfatto del suo punteggio.
Successivamente il banco richiede le sue carte finché non si rivelano i punteggi.

Le carte fino a 7 corrispondono a un punteggio del loro valore, le carte 8, 9 e 10 corrispondono a mezzo punto.
Vince il giocatore con il punteggio maggiore, ma se si supera il punteggio di 7 e mezzo si perde, e in caso di punteggio pari vince il banco.

from random import randint
deck = [4 for foo in range(10)]
score = 0.0
dscore = 0.0

def give_card():
    # Return a card and remove it from the deck
    global deck
    while any(deck):
        card = randint(0, 9)
        if deck[card] > 0:
            deck[card] -= 1
            return card

def cscore(hit, score):
    # Calculate the score
    if hit < 7:
        return score + hit + 1
    else:
        # Gold King
        if hit == 10 and randint(0, deck[9]-1) == 0:
            print 'E\' uscita la matta!'
            return 7
        else:
            return score + 0.5

while True:
    print '***************************************'
    # I need first card value because dealer can't see it
    your_card = fcard = give_card()
    score = cscore(your_card, score)
    dealer_card = give_card()
    dscore = cscore(dealer_card, dscore)
    print 'Tua carta: %d (%.1f)' % (your_card+1, score)
    # Card request
    while True:
        # Your turn
        if raw_input('\nAltra carta? [y/n] ') == 'y':
            your_card = give_card()
            print '[Carta] %d' % (your_card+1)
            score = cscore(your_card, score)
            print 'Punteggio: %.1f' % score
            if score > 7.5:
                print '**** Hai sballato! ****'
                break
        # Dealer turn
        else:
            # Dealer ask for a card if his score is lower then your shown score
            # Dealer may think you are bluffing (randint)
            print 'Il banco ha: %d (%.1f)' % (dealer_card+1, dscore)
            while dscore < score - cscore(fcard, 0) or randint(0, 3) == 0\
                  and dscore < 7.5:
                dealer_card = give_card()
                print '[Carta] %d' % (dealer_card+1)
                dscore = cscore(dealer_card, dscore)
                if dscore > 7.5:
                    break
            print 'Punteggio del banco: %.1f' % dscore
            if score > dscore or dscore > 7.5:
                print '\o/ \o/ \o/ Hai vinto! \o/ \o/ \o/'
            else:
                print '**** Hai perso! ****'
            break
    # Game request
    if raw_input('\nGiochi ancora? [y/n] ') == 'y':
        score = 0.0
        dscore = 0.0
        print '\n'
    else:
        break

S60 – Un menù per i tuoi script in Python

PyMenu3Questa è la mia prima applicazione sviluppata utilizzando le classi in Python.
La sua funzione è molto semplice: una volta avviata, mostra un menù personalizzabile che permette l’avvio di uno script Python con la semplice pressione di un tasto.

È possibile personalizzare uno script per ogni tasto della tastiera, da 1 a #. Risulta molto utile se utilizzate spesso degli script in Python, dato che attualmente, per avviare uno script, bisogna utilizzare la shell di Python e cercare ogni volta lo script all’interno del file browser.
Con PyMenu basterà la semplice pressione di un tasto per avviare i vostri script.

Ne ho creato una versione .sis in modo da poterla mettere sul desktop o associare ad un tasto di funzione rapida.

– Download PyMenu.sis (3rd) –

L’id dell’applicazione è:
0xE263CB53

Segue il codice sorgente del programma.

Leggi il resto dell’articolo »


Usare il cellulare come mouse del pc

mouseL’unica limitazione (o quasi!), quando si impara a programmare in Python per Symbian, è la fantasia del programmatore.

Quest’ultima applicazione che ho appena creato permette di sfruttare il sensore accelerometro del cellulare per muovere il cursore del mouse sul pc.
Il principio di funzionamento è molto semplice: lo script sul cellulare legge le informazioni sul sensore e le invia tramite bluetooth al computer, sul quale è avviato un altro script che legge le informazioni via bluetooth e muove il cursore del mouse in base ai dati ricevuti.
Leggi il resto dell’articolo »


ShootNup: Upload su ImageShack dal tuo cellulare

Finestra principale

Ho finalmente terminato la mia ultima applicazione: ShootNup. Come suggerisce già il titolo (shoot and upload), quest’applicazione permette di caricare le tue foto online su ImageShack, direttamente dal cellulare.

Tra le varie opzioni, è possibile selezionare come oggetto dell’upload una foto salvata in memoria oppure uno screenshot dello schermo del cellulare.
Una volta che l’immagine è stata inserita online, verrà restituito il link diretto ad essa che sarà conservato per tutta la sessione di lavoro.

L’applicazione fa uso della connessione ad internet, e dato il grande numero di dati che viene trasferito (a causa del peso delle immagini) si consiglia l’utilizzo di una connessione wi-fi o di un abbonamento ad internet.

Questo programma è scritto in Python e richiede ovviamente che l’interprete del linguaggio sia installato sul vostro cellulare. Oltre a ciò utilizza due moduli esterni, che sono appswitch e dialog: il primo serve a passare l’applicazione dalla modalità background a foreground quando si salva uno screenshot, il secondo serve per mostrare le schermate di stato (caricamento in corso, upload in corso, ecc.). Non essendo strettamente necessari per l’upload, potete anche non installarli, ma li ho inclusi nel file .zip che segue e consiglio caldamente di installarli.

Ecco qualche screenshot (click per ingrandire):

Download link:

-Download ShootNup.zip (dialog.sis, appswitch.sis, ShootNup.sis)-

Segue il codice sorgente dell’applicazione.

Leggi il resto dell’articolo »


Symbian S60, Bluetooth Switch

screenshotmefHo appena scritto in Python questa semplicissima applicazione per Symbian, la quale non fa altro che switchare il bluetooth: se è acceso lo spegne, se è spento lo accende, chiudendosi automaticamente.
È utile tenerla sul desktop del cellulare, oppure associarla al tasto carosello (carousel key), in alternativa all’applicazione predefinita.

Richiede il modulo BlueS, che è già incluso nel file di installazione, ma è comunque scaricabile  QUI (unsigned, Symbian 3rd)

– Download BT Switch (.sis) –

L’id dell’applicazione è:
0xED10F1C1

Segue il codice dell’applicazione

Leggi il resto dell’articolo »