Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati

Versione 76 del 22/06/2011 07.53.14

Nascondi questo messaggio

Introduzione

Questa pagina è dedicata per le prove delle traduzioni degli articoli di Full Circle Megazine

Edizione 41

Programmare in Python - Parte 15

pagina di riferimento

Scritto da Greg Walters

Questo mese andremo ad esplorare Pygame, un set di moduli progettata per scrivere dei giochi. il sito web è http://www.pygame.org/. Una citazione dal Pygame read-me: "Pygame è una libreria multi-piattaforma progettato per rendere facile la scrittura di software multimediali come i giochi in Python. Pygame richiede il linguaggio Python e la libreria multimediale SDL. Si può anche fare uso di altre diverse librerie popolari."

Si può installare Pygame attraverso Synaptic come 'python-game'. Fatelo ora in modo che possiamo andare avanti.

In primo luogo importiamo Pygame (vedi sopra a destra). Successivamente impostiamo os.environ per far si che la nostra finestra sia centrata sul nostro schermo. Dopo di che inizializziamo Pygame, poi impostiamo la finestra Pygame a 800x600 pixel e poi la didascalia. Infine visualizzate la schermata e andate in un ciclo di attesa per una sequenza di tasti o di un evento mouse-button-down. Lo schermo è un oggetto che contiene niente di quello che decidiamo di mettere. È chiamato 'surface'. Pensate come se fosse un pezzo di carta su cui disegneremo le cose.

Non molto eccitante, ma è già un inizio. Andiamo a fare un qualcosa di meno noioso. Possiamo cambiare il colore dello sfondo con un qualcosa di meno scuro. Ho trovato un programma di nome "colorname" che potete installare tramite Ubuntu Software Center. Questo vi permette di usare la "ruota dei colori" per prendere il colore che vi piace e vi darà i valori RGB ovvero Red, Green, Blue di quel medesimo colore. Dobbiamo usare i colori RGB se non vogliamo usare i colori predefiniti che Pygame ci offre. Si tratta di un programma accurato di cui si dovrebbe prendere in considerazione l'installazione.

Subito dopo le dichiarazioni dell'importazione aggiungete...

Background = 208, 202, 104

Questo imposterà la variabile Background a tanish. Successivamente dopo la linea pygame.display.set_caption, aggiungete le seguenti linee...

screen.fill(Background) pygame.display.update()

Lo screen.fill() method imposterà il colore a tutto ciò su cui passiamo sopra. La prossima linea, pygame.display.update(), attualmente aggiorna i cambiamenti ai nostri schermi.

Salvate questo con il nome di pygame1.py e andiamo avanti.

Ora mostreremo alcuni testi sul nostro modesto schermo. Nuovamente iniziamo con l'importare le nostri dichiarazioni e la variabile di assegnazione di background del nostro ultimo programma.

importate pygame da pygame.locals import * import os Background = 208, 202, 104

Ora, aggiungete una variabile aggiuntiva per il colore della nostra font in primo piano.

FontForeground = 255,255,255 # White

Quindi aggiungeremo nella maggior parte del codice dal nostro ultimo programma (mostrato a destra).

Se lo si esegue adesso non è cambiato niente visivamente dal momento che abbiamo aggiunto la definizione in primo piano . Ora dopo la linea screen.fill() e prima del loop del nostro codice, inserite le seguenti linee:

font = pygame.font.Font(None,27) text = font.render('Here is some text', True, FontForeground, Background) textrect = text.get_rect() screen.blit(text,textrect) pygame.display.update()

Andate avanti, salvate il programma con il nome di pygame2.py ed eseguitelo. Nello Schermo in alto a sinistra si dovrebbe vedere il testo “Here is some text”.

Andiamo a scrivere alcuni comandi. In primo luogo chiamiamo il Font method e lo passiamo a due argomenti. Il primo è il nome della font che desideriamo usare e il secondo è la dimensione della font. In questo momento ci limiteremo a usare 'None' e lasciare che il sistema scelga un tipo di carattere per noi e impostiamo la dimensione del carattere a 27 punti.

Dopo abbiamo il font.render() method. Questo ha quattro argomenti. In ordine ci sono: i testi che desideriamo mostrare se vogliamo usare l'anti-aliasing (Vero in questo caso), il colore del carattere in primo piano e infine il colore del carattere di sfondo.

La linea successiva (text.get_rect()) assegna un oggetto rettangolare che useremo per inserire il testo sullo schermo. Questa è una cosa importante dal momento che quasi tutto il resto di cui ci occuperemo è con i rettangoli. (Capirai di più in un secondo momento). Poi attribuiamo 'blit' sullo schermo. E finalmente aggiorniamo lo schermo per far mostrare il nostro testo. Cos'è blit e perché diamine dovrei fare qualcosa che suona così strano? Bene il termine risale al lontano 1970, e veniva da Xerox PARC (che è dove dobbiamo molto della tecnologia di oggi). Il termine era precedentemente chiamato BitBLT che significa Bit (or Bitmap) Block Transfer. Che ha cambiato a Blit (probabilmente perché è più corto). Praticamente stiamo 'ploppando' la nostra immagine o testo sullo schermo.

Vogliamo che il testo venga centrato sullo schermo invece che sulla riga in alto dove ci vuole un po' di tempo per vederlo? Tra la linea text.get_rect() e screen.blit inserite la seguente linea:

textRect.centerx = screen.get_rect().centerx textRect.centery = screen.get_rect().centery

Eccoci qua a mettere centrato l'oggetto sullo schermo (ricorda l'oggetto in superficie) in x e y i pixel di posizione e impostiamo i punti centrali x e y dei valori del nostro oggetto textRect.

Eseguite il programma. Ora il nostro testo è centrato con la nostra 'surface'. Potete inoltre modificare il testo usando (nel nostro semplice codice) font.set_bold(True) e/o font.set_italic(True) a destra dopo la linea pygame.font.Font.

Ricordate, abbiamo discusso brevemente sull'impostazione 'None' quando impostiamo il tipo di carattere a un font generico. Diciamo che si desidera utilizzare un font più elaborato. Come ho detto prima il pygame.font.Font() method ha due argomenti. Il primo è il percorso e il nome file della font che vorremmo usare, invece il secondo argomento è la dimensione del carattere. A questo punto il problema è il multi-fold . Come facciamo a sapere il percorso attuale e il nome del file della font che vorremmo usare? Per fortuna Pygame ha una funzione che ne prende cura per noi. Si chiama match_font. Ecco qui un programma che mostrerà il percorso e il nome del file della font Courier New (in questo caso).

importate pygame da pygame.locals import * import os print pygame.font.match_font('Courier New')

Nel mio sistema il valore di ritorno è “/usr/share/fonts/truetype/msttcorefonts/cour.ttf”. Se però il font non viene trovato il valore di ritorno è “None”. Ammettendo il caso che la font sia stata trovata allora possiamo assegnare alla variabile il valore di ritorno e di conseguenza possiamo usare i seguenti attributi.

courier = pygame.font.match_font('Courier New') font = pygame.font.Font(courier,27)

Cambiamo la vostra ultima versione del programma per includere queste due linee e lo proviamo di nuovo. La linea in fondo usa anche un carattere il quale SAPETE che sarà disponibile nel computer dell'utente, oppure includetelo quando distribuite il vostro programma e codificate il percorso e il nome della font. Ci sono altri modi riguardo a questo, ma lo lascio capire a voi in modo che possiamo andare avanti.

Mentre il testo è bello, la grafica è migliore. Ho trovato un tutorial veramente carino per Pygame scritto da Peyton McCollugh e ho pensato di prenderlo e modificarlo. Per questa parte abbiamo bisogno di iniziare con una figura che si muoverà intorno la nostra 'surface'. Questa figura è nota come 'sprite'. Utilizzate GIMP o qualche altro strumento e create una figura stilizzata. Niente di fantastico, solo una generica figura stilizzata. Si presume che stiate usando GIMP. Iniziate una nuova figura, impostate la entrambe dimensioni lunghezza e larghezza a 50 pixel e nelle opzioni avanzate impostate 'Fill With' alle opzioni della Trasparenza. Utilizzate lo strumento matita con un pennello di Circolo (03). Disegnate la vostra piccola figura e salvatelo come stick.png nella stessa cartella che avete usato per il codice. Ecco come appare il mio. Sono sicuro che voi lo sapete fare meglio.

Lo so... non sono un'artista. Tuttavia per i nostri scopi basta. Abbiamo salvato il file con un'estensione .png e impostiamo lo sfondo per far si che sia trasparente in modo che solo le piccole linee nere della nostra figura stilizzata vengano mostrate e non uno sfondo bianco o di un altro colore.

Andiamo a parlare sul programma che vorremmo fare. Vogliamo mostrare una finestra Pygame che ha la nostra figura stilizzata. Vorremmo che la figura si muova quando premiamo qualunque freccia direzionale ammettendo il fatto che non siamo sul bordo dello schermo e la figura non si può muovere ulteriormente. Vorremo uscire dal gioco quando premiamo il tasto “q”. Ora spostando lo 'sprite' in giro potrebbe sembrare facile e lo è, ma è un po' più difficile di quanto sembri inizialmente. Iniziamo creando due rettangoli. Uno per lo 'sprite' se stesso e uno che è delle stesse dimensioni ma in bianco. Effettuiamo il 'blit' dello 'sprite' sulla 'surface' per iniziare, poi quando l'utente preme un tasto effettuiamo il 'blit' del rettangolo bianco sopra lo 'sprite' originale, mostra la nuova posizione e effettuiamo il 'blit' dello 'sprite' indietro sulla 'surface' in una nuova posizione. Più o meno quello che abbiamo fatto con il gioco dell'alfabeto l'ultima volta. Questo è tutto per questo programma. Ci darà un'idea di come mettere effettivamente un elemento grafico sullo schermo e muoverlo.

Quindi iniziamo un nuovo programma e lo chiamiamo pygame4.py. Posizionattelo nella cartella che abbiamo usato durante questo tutorial. Questa volta utilizzeremo uno sfondo di colore verde menta, quindi i valori dovrebbero essere 0, 255, 127 (vedi sopra).

Successivamente creiamo una classe che gestirà la nostra grafica o lo 'sprite' (è mostrato nella pagina successiva in basso a sinistra). Mettete questo parametro dopo le importazioni.

Che cos'è tutto questo che sto facendo? Cominciamo con la routine init. Inizializziamo il modulo 'sprite' di Pygame con la linea the pygame.sprte.Sprite.init. poi impostiamo il 'surface' e lo chiamiamo schermo. Questo ci permetterà di controllare se lo 'sprite' va fuori dallo schermo. Successivamente creiamo e impostiamo la posizione della variabile del vecchio 'sprite' bianco. Ora carichiamo la nostra figura stilizzata con la routine pygame.image.load, mettendogli il nome file (e il percorso se non è nel percorso impostato dal programma). Allora acquisiamo un riferimento (self.rect) allo 'sprite' che imposta automaticamente la larghezza e l'altezza del rettangolo e imposta la posizione x,y di quel rettangolo alla posizione che abbiamo impostato nella routine.

L'aggiornamento della routine praticamente crea una copia dello 'sprite', poi controlla se va fuori dallo schermo. Se è così rimane dov'è, altrimenti la sua posizione viene spostata ala posizione che gli inviamo.

Ora dopo la dichiarazione in screen.fill, inserite il codice riportato nella pagina seguente (lato destro).

Eccoci qui a creare un'istanza della nostra classe di nome 'character'. Poi effetuiamo il 'blit' dello 'sprite'. Creiamo un 'sprite' rettangolare bianco e lo riempiamo con il colore dello sfondo. Aggiorniamo il 'surface' e iniziamo il nostro ciclo.

Fino a quando DoLoop è equivalente a 1, creiamo il ciclo attraverso il codice. Usiamo pygame.event.get() per avere un carattere dalla tastiera. Poi testiamo il tipo di evento. Se è QUI, usciamo. Se è un evento pygame KEYDOWN lo eseguiamo. Guardiamo il valore della chiave restituita e la confrontiamo con le costanti definite da Pygame. Poi chiamiamo l'aggiornamento della routine nella nostra classe. Notate qui che stiamo semplicemente passando una lista che contiene i numeri dei pixel degli assi X e Y per muovere il personaggio. Lo cambiamo di 10 pixel (positivo verso destra o sotto e negativo verso sinistra o sopra). Se il valore della chiave è uguale a “q”, impostiamo DoLoop a 0 e usciamo da ciclo. Dopo tutto questo effettuiamo il 'blit' del personaggio bianco alla vecchia posizione, effettuiamo il 'blit' dello 'sprite' alla nuova posizione e come ultima cosa aggiorniamo - ma in questo caso aggiorniamo solo i due rettangoli contenenti lo ìsprite' bianco e quello attivo. Questo consente di risparmiare una quantità enorme di tempo e di elaborazione.

Come sempre l'intero codice è raggiongibile al sito www.thedesignatedgeek.com o all'indirizzo http://fullcirclemagazine.pastebin.com/DvSpZbaj.

Si possono fare molte più cose con Pygame. Consiglio di visitare il loro sito e guardare la pagina di riferimento (http://www.pygame.org/docs/ref/index.html). In aggiunta potete dare un'occhiata ai giochi che gli altri hanno caricato.

La prossima volta scaveremo più in profondità su Pygame creando un gioco che proviene dal mio passato ... il mio passato MOLTO lontano.

Domande & Risposte

Scritto da Gord Campbell

Se avete delle domande riguardanti Ubuntu, inviaceli tramite email all'indirizzo: questions@fullcirclemagazine.org e Gord vi risponderà in una prossima edizione. Per cortesia includete più informazioni che potete sul problema.

Esiste un modo per registrare l'audio in streaming?

Ci sono vari modi e probabilmente la via più facile è quella di usare Outrec. Se vuoi una guida basta scrivere su Google "outrec Ubuntu" e visita il primo risultato della ricerca.


La mia scheda wireless non funziona sul mio laptop HP G62.

Connetti il laptop al router attraverso il cavo Ethernet, vai su Amministrazione → Driver Hardware. Seleziona il driver Broadcom STA e fai click su "Attiva".


Ho comprato una scheda audio USB. Quando l'ho inserita non funzionava. Cosa dovrei fare?

Vai su Sistema → Preferenze → Audio e nella sezione "Uscita" seleziona il dispositivo USB.


Ho un PC Dell Inspiron 9400 con una scheda video ATI Radeon Mobility X1400. Ho un monitor esterno connesso tramite il cavo VGA. Quando ho provato a usare il monitor esterno come estensione del mio schermo principale l'immagine andava tutto ondulato e a scatti.

Installa xorg.driver.fglrx tramite Synaptic, poi riavvia il PC. ATI Catalyst Control Centre ora dovrebbe funzionare.


Pensate che Samba sia un pochino meglio per i nuovi utenti di Ubuntu nella versione 10.10?

(Grazie a Dmize nel forum di Ubuntu) non penso veramente che adesso Samba sia così male. Molti problemi con Samba non sono legati al software. Ma sono legati ai permessi del firewall che non sono necessari e/o alla comprensione superficiale della rete di base.


Una volta installato "sopcast" parte con successo, ma solo circa il 10% dei canali disponibili nella lista funzionano. Tra i canali cinesi (ai quali sono molto interessato) solo CCTV3 funziona. Da tutti gli altri canali ho ricevuto sempre un messaggio di "connessione".

Ho trovato un modo per risolvere il problema, ho sostituito il canale del server. Ho usato http://www.sopcast.cn/gchlxml al posto di http://www.sopcast.com/gchlxml ed ora tutto funziona!


Dopo un aggiornamento la mia "Nvidia Xserver" improvvisamente non riconosce il mio monitor, mostrando "sconosciuto" al posto del nome del monitor e al posto di dare come risoluzione 1600x1200 che usavo, mi mostra una risoluzione di 1024x768. Se accedo come utente "guest", Nvidia Xserver riconosce il monitor e mostra la giusta risoluzione. Che cosa sta succedendo?

Apri il terminale ed esegui:

sudo nvidia-xconfig
gksudo nvidia-settings


Ho un computer partizionato con 2GB di boot, 77GB sono dedicati a Sabayon, 200 GB a Fedora e 200GB ad Ubuntu. Ubuntu riconosce Fedora perfettamente ma non Sabayon. Oggi Ubuntu ha aggiornato il mio kernel e anche il mio boot-triplo, di cui uno nuovamente rotto. Esiste un modo per far si che quando aggiorno Ubuntu, nel Grub include anche Sabayon?

Copia una voce di Sabayon dentro /etc/grub.d/40_custom. Per maggiori informazioni visita "la guida Grub2" sul forum di Ubuntu.


Suggerimenti e tecniche

Una brutta partizione

Recentemente ho comprato un laptop HP G62 e Ubuntu funziona splendidamente. In ogni caso se volete un sistema in dual-boot con Windows c'è prima un enorme mal di testa.

HP nella sua infinita saggezza, vende il computer con quattro partizioni sul disco rigido e sono tutte primarie. Se il disco rigido ha quattro partizioni primarie, come in questo caso non potete fare più nulla. Non potete fare niente.

Il futuro di questa macchina include un software in esecuzione che funziona solo con Windows, quindi non ho potuto togliere via tutte le partizioni.

Le quattro partizioni sono:

Boot

il classico dico C:

Restore

HP_Tools

La partizione "Restore" (13 GB) contiene i file di installazione di Windows 7 per il giorno in cui solo una re-installazione risolverà il problema della giornata. HP_Tools sono dei programmi di utilità di cui non si dovrebbe aver mai bisogno, ma occupano poco spazio. Fortunatamente l'HP fornisce un'utilità per creare quattro DVD che possono essere usati per reinstallare Windows ma a quel punto non avrei veramente più bisogno della partizione "Restore". (Se smarrisco i DVD mi rammarico cancellando la partizione "Restore", ma è la vita.)

Su Windows eseguo Windows Explorer e ho selezionato il disco E, HP_tolls. Ho evidenziato tutti i file e ho fatto click col tasto destro per selezionare "copia". Quindi sono andato sul disco C: e ho scelto "new → folder". Ho nominato la cartella "h-p" e dal disco E: ho copiato i file.

Tornato sul disco C: ho fatto click col tasto destro del mouse e ho selezionato "Proprietà". Una di quella è Tools ed uno dei programmi era la deframmentazione. L'ho eseguito e ci ha impiegato solo pochi minuti sul nuovo hard disk.

Nel Pannello di Controllo finestre ho cercato "disco" e una delle opzioni è "Crea e formatta le partizioni del disco". Ho fatto click su di esso e ho selezionato disco C: ed ho spuntato su "opera", "tutti i programmi", "riduci il disco". Questo ha liberato più di 100 GB di spazio che erano completamente inutilizzabili perché ancora non potevo mettere dentro una partizione.

In ogni caso ero pronto ad installare Ubuntu.

Quando sono arrivato al passo chiamato "preparazione disco" ho selezionato "in modo specifico le partizioni manualmente". Così sono andato nel "editor partizioni", dove ho riordinato lo spazio a mio piacimento. Ho cancellato la partizione "Recovery" poi la partizione "HP_Tools" e poi ho fatto click su "applica". Ciò mi ha lasciato con un disco C: di 153 GB seguito da spazio vuoto. Ho impostato lo spazio vuoto in una partizione "estesa", che può contenere molte partizioni "logiche".

Ho creato cinque partizioni logiche: la prima una piccola NTFS di nome "Restore" che non tratterà mai un dato, ma avrebbe agito come un segnaposto per un disco di nome "Windows". Successivamente ho creato un'altra piccola partizione NTFS (100 MB) di nome "HP_TOOLS". Poi la partizione EXT3 di 13 GB per la root (/) di Ubuntu. Vicino una partizione Linux swap di 3.5 GB. In fine la mia partizione /home EXT3, che occupa tutto lo spazio rimanente sul disco. Quando ho fatto click su "applica" il computer era indaffarato per qualche paio di minuti.

È stato un lavoro pesante più nella pianificazione che all'effettiva esecuzione. Se l'HP avesse formattato il disco più intelligentemente, non sarebbe stato necessario.

Ero rimasto al quanto sorpreso nel vedere la velocità di installazione, meno di 20 minuti. (Il computer non era connesso ad internet quindi non c'erano download aggiuntivi).

Dopo l'installazione era tutto fatto, ho copiato i file dal disco "h-p" al dico E: e la partizione HP_tools.

Più tardi ho avuto un problema l'audio, ma questa è una storia da raccontare in un altro giorno.

Edizione 42

My opinion

Scritto da Robin Catling

Come se non fosse abbastanza che Ubuntu sta per assomigliare e sembrare come un Mac, vi indirizzo ad una release recente con le novità dello stile Mac.

  • Icone
  • Posizione pulsanti
  • Temi Light 'brushed aluminium' e sfondo viola

Ma alcune persone sembrano di voler andare fino in fondo e installare di nuovo completamente il loro desktop come Mac-Ubuntu.

Va bene, ho capito che il modo di fare le cose Mac nell'interfaccia utente è ampiamente ammirato (e molto copiato avendo cause precedenti). Ma sicuramente il motivo per cui è andato l'open source, è quello di evitare il software chiuso e sempre più dittatoriali delle aziende e degli stati capitalisti semi-fascisti? Faremo saltare i poveracci che vogliono tentare di far passare i loro PC cloni senza nome per dei Mac costosi ai loro amici che sono meno esperti. Voi sapete chi siete.

Ma quando avete un ambiente desktop Gnome altamente funzionante, lo splendido KDE ed desktop leggeri come Xfce e Openbox, perché volete trasformare il vostro Linux in un wholesale stile Mac? Come anche in stile Windows 7? Così in basso da mettere il logo Apple e Windows? In giro ci sono dozzine di questi "pacchetti di trasformatori". Che non ho preso.

Le attuali distro Linux hanno delle interfacce grafiche col le quali si posso fare infinite personalizzazioni di cui andare fieri:

mostriamolo a loro!

My desktop (44-45)

Hai la possibilità di mostrare al mondo il tuo desktop o PC.

Invia per e-mail i tuoi screenshots e le tue foto a: misc@fullcirclemagazine.org e includi un breve paragrafo con la descrizione del tuo desktop, le caratteristiche del tuo PC e altre curiosità sulla tua configurazione.

Attualmente amministro un sito che si chiama "moeubuntu" (Moe + Ubuntu) che introduce la cultura giapponese "Moe" nel mondo di Ubuntu: http://moebuntu.web.fc2.com/home_eng.html. Il sito mostra come personalizzare il vostro Desktop Ubuntu (ed altro) con lo stile Moe. Sto facendo sforzi con questo sito per conoscere in Giappone il mondo con Ubuntu.

Eccovi degli esempi di personalizzazione del mio Desktop e Plymouth.

Caratteristiche del PC:

CPU: AMD Athlon(tm) 64 X2 Dual Core Processor 4800+

RAM: 2GB

HDD: 1TB

TOY

Nel centro della scrivania di Ubuntu uso gli screenlets: Calendar, Clock, Now Playing, Output e Sysmonitor. Tutti gli screenlets sono impostati con una bassa opacità, eccetto Clock, cioò significa che lo sfondo non è coperto dagli screenlets. Sul pannello superiore ho inserito dei "lanciatori" di programmi che uso spesso mentre il pannello inferiore è trasparente e si nasconde automaticamente per far aprire solo le finestre.

Le caratteristiche del mio laptop sono:

- Ubuntu 10.04 - Lucid Lynx

- Lenovo ThinkPad R61i

- Intel Core 2 Duo CPU T5550 @ 1.83 GHZ

- RAM 1.5 GB

Dadan Ramdhan

Uso Linux circa da sei mesi. La mia prima distro è stata Linux Mint. L'idea del software libero si è già radicata nel mio animo, ma non ho usato Mint per molto tempo. Quindi ho installato Ubuntu. Questo SO mi è piaciuto molto e anche il tema standard per molto tempo, fino ad ora, Ho personalizzato l'aspetto del mio desktop in base ai miei gusti. Per iniziare, mi piace giocare a World Of Warcraft, ma recentemente per motivi scolastici e lavorativi ed altri, non ho potuto giocarci molto. Ma il gioco rispecchia il il mio desktop. Guardate lo sfondo e se giocherete a WoW, potete notare la classe e la razza del mio personaggio. Uso Conky, AWN, le icone dal tema "Awoken" e Metacity "Bordereless Elegant Brit". Tutto questo l'ho trovato sul sito gnome-look.org

Peter Shurgalin

CategoryHomepage