Un mini space invaders usando carácteres, la nave dispara a quemarropas en una lucha contra el bicho, nadie sabe cuanto durará esta cacería, que lo disfruten:
- La nave y el bicho se mueven solos de forma aleatoria.
- La nave dispara de forma aleatoria.
- Todo esta en un spanglish feo.
- Se podría agregar manejo de eventos de teclado para manejar la nave y los disparos. Alguna idea usando módulo estándar de python?
- En cuanto pueda pongo un videito.
import random import time import os ROWS = 14 COLS = 16 BULLET = '.' SHOTS = [] SCREEN = [] EMPTY = ' ' EXPLOSION = '#' SHIP = 'A' BUG = 'W' ############################################################################### # Funciones del mundo ############################################################################### def crear_mapa(): for row in range(0, ROWS): SCREEN.append([]) for col in range(0, COLS): SCREEN[row].append(EMPTY) def mostrar_mapa(): for row in SCREEN: for col in row: print col, print def mover_disparos(): for disparo in SHOTS: SCREEN[disparo[0]][disparo[1]] = EMPTY if disparo[0] > 0: if SCREEN[disparo[0] - 1][disparo[1]] == BUG: SCREEN[disparo[0] - 1][disparo[1]] = EXPLOSION return False else: SCREEN[disparo[0] - 1][disparo[1]] = BULLET SHOTS.append((disparo[0] - 1, disparo[1])) SHOTS.remove(disparo) return True def _mover_nave(direccion, nave, row): try: col = SCREEN[row].index(nave) except ValueError: col = 0 SCREEN[row][col] = EMPTY next_col = col + (1 * direccion) if next_col > 15: next_col = 0 SCREEN[row][next_col] = nave def limpiar_pantalla(): os.system(['clear', 'cls'][os.name == 'nt']) ############################################################################### # Funciones para la nave ############################################################################### def crear_nave(): SCREEN[-1][random.randint(0, COLS - 1)] = SHIP def mover_nave(): if random.randint(0, 100) > 50: _mover_nave(-1, SHIP, -1) else: _mover_nave(1, SHIP, -1) def disparar(): if random.randint(0, 100) > 70: col = SCREEN[-1].index(SHIP) SCREEN[-2][col] = BULLET row = ROWS - 2 SHOTS.append((row, col)) ############################################################################### # Funciones para el bicho ############################################################################### def crear_bicho(): SCREEN[0][random.randint(0, COLS - 1)] = BUG def mover_bicho(): if random.randint(0, 100) > 50: _mover_nave(-1, BUG, 0) else: _mover_nave(1, BUG, 0) def jugar(): crear_mapa() crear_nave() crear_bicho() while mover_disparos(): mover_bicho() disparar() mover_nave() mostrar_mapa() time.sleep(0.2) limpiar_pantalla() limpiar_pantalla() mostrar_mapa() print "EL BICHO SE MURIO" if __name__ == '__main__': jugar()