[Ciotoflow] Picasso Invaders (Insert Coin - Retrogaming 2011…

Delete this message

Reply to this message
Autor: emiliano russo
Data:  
Para: Notizie discussioni e attività dell'associazione Verdebinario
CC: Flussi di ciotia.
Assunto: [Ciotoflow] Picasso Invaders (Insert Coin - Retrogaming 2011)
ciao liste!

in occasione della mostra sui videogame che stiamo
organizzando per il prossimo dicembre

http://insertcoin.verdebinario.org

sto smanettando su un miniprogetto di arte automatica.

l'idea e':

"gli artisti? ...pfui! un qualsiasi plotter puo' fare meglio!"

un embrione di codice -commentato fino all'inverosimile-
e' allegato a questo messaggio: si tratta del primo soggetto
della serie "space invaders". (prevedo di aggiungere a breve
gli array con gli altri classici invaders.)

ma esistono molte altre possibilita'!
altri giochi (asteroids?) oppure arte astratta, impressionismo, ...

ecco una galleria immagini di cose che sono possibili con
i vecchi plotter a pennino: http://www.flickr.com/groups/chiplotle

qualcuno ha voglia di partecipare?

sono sufficienti rudimentali conoscenze di programmazione,
la libreria chiplotle ( http://music.columbia.edu/cmc/chiplotle/ )
pensera' ai dettagli della comunicazione col plotter.

il tutto e' scritto in python, ma non serve essere esperti.
e in effetti questo e' il mio primo programma python :)

a presto!
E

#!/usr/bin/python

# RICHIEDE PYTHON, PYSERIAL, NUMPY, HP2XX e CHIPLOTLE
# istruzioni per installare il tutto su debian squeeze in due comodi passi:
#
# 1) apt-get install python python-serial python-numpy python-setuptools hp2xx
# 2) easy_install -U chiplotle && mkdir ~/.chiplotle
#
# docs su: http://music.columbia.edu/cmc/chiplotle/manual/

from chiplotle import *
from chiplotle.tools.plottertools import instantiate_virtual_plotter
import random

# l'inizializzazione del plotter (uno virtuale andra' bene per i test)
plotter = instantiate_virtual_plotter(type="HP7550A")

# DEBUG
# disegna un bordo intorno all'area stampabile
plotter.select_pen(1)
plotter.write(Rectangle((0, 0), 420, 297, 0))
plotter.write(Rectangle((0, 0), 400, 276, 0))
# disegna una griglia sul foglio (utile per impostare gli invaders all'inizio)
#plotter.write(Panels([-200,138], 400, 276, 40, 27, .1, .1, True, 3))
# vai al punto 0,0 (utile per vedere dove si inizia a disegnare)
#plotter.select_pen(2) ; plotter.write(PD([0,0]))
# FINE DEBUG

# scegli a casaccio la posizione dell'invader sul foglio
x = random.randint(-130, 140) ; y = random.randint(-70, 90) ;

# ecco l'array con la posizione relativa dei quadrati che compongono l'invader
invader_1 = [ [-35, 30], [25, 30], [-25, 20], [15, 20], [-35, 10], [-25, 10], [-15, 10], [-5, 10], [5, 10], [15, 10], [25, 10], [-35, 0], [-15, 0], [-5, 0], [5, 0], [25, 0], [-45, -10], [-35, -10], [-15, -10], [-5, -10], [5, -10], [25, -10], [35, -10], [-55, -20], [-45, -20], [-35, -20], [-25, -20], [-15, -20], [-5, -20], [-15, -20], [-5, -20], [5, -20], [15, -20], [25, -20], [35, -20], [45, -20], [-55, -30], [-35, -30], [-25, -30], [-15, -30], [-5, -30], [5, -30], [15, -30], [25, -30], [45, -30], [-55, -40], [-35, -40], [25, -40], [45, -40], [-25, -50], [15, -50], [-15, -60], [5, -60] ]

# mescola l'array
random.shuffle(invader_1)

# disegna l'invader :)
for i in range(0, len(invader_1)):
    # cambia penna a ogni iterazione - la var. viene riutilizzata per lo sfasamento
    k = random.randint(1, 4) ; plotter.select_pen(k)
    # moltiplicatori / segni per lo sfasamento
    s = random.randint(-1, 1) ; t = random.randint(-1, 1) ;
    # l'istruzione write vera e propria
    plotter.write(Rectangle((invader_1[i][0] +s*k/2 +x, invader_1[i][1] +t*k/2 +y), 10, 10, 0))


# riprendi in mano la prima penna
plotter.select_pen(0)

# visualizza il disegno
io.view(plotter)

# I FILE DI OUTPUT IN FORMATO HPGL E EPS SI TROVANO IN ~/.chiplotle/output/