Archivo de la etiqueta: Mac OS X

Nuestro primer videojuego con Scratch (2): detección de paredes

La semana pasada comenzaba una serie en PItando en la que trataba de crear con vosotros un videojuego muy básico en Sratch. Constaba de, a priori, cuatro partes:

  1. Mover al gato en las cuatro direcciones y hacer que rebote en los bordes del escenario. Conseguido la semana pasada.
  2. Programar la lógica de rebote para cuando el gato se encuentre con una pared roja.
  3. Programar la lógica de “gato encuentra a ratón”
  4. Proponer un esquema de puntuación para poder competir con nuestros amigos.

En esta entrada de hoy, segunda de la serie, vamos a ir un paso más allá y vamos a programar sobre un escenario básico la detección de paredes que, además, consistía en el ejercicio de la semana pasada.

Si te animas, que espero que sí, sigue leyendo 🙂

Sigue leyendo Nuestro primer videojuego con Scratch (2): detección de paredes

Nuestro primer videojuego con Scratch (1)

Hoy vamos a entrar en harina seria con Scratch para hacer el germen de lo que será nuestro primer videojuego. Lo haremos en varios artículos: en cada artículo os enseñaré a resolver una parte del videojuego, y al mismo tiempo os propondré un desafío. En los siguientes artículos de la serie iré resolviendo el desafío anterior, y proponiendo otro. Y así sucesivamente.

El videojuego final consistirá en un sencillo laberinto en el que moveremos al gato naranja de Scratch para que consiga llegar a un ratón. Los artículos serán cuatro, en principio:

  1. Mover al gato en las cuatro direcciones y hacer que rebote en los bordes del escenario.
  2. Programar la lógica de rebote para cuando el gato se encuentre con una pared roja.
  3. Programar la lógica de “gato encuentra a ratón”
  4. Proponer un esquema de puntuación para poder competir con nuestros amigos.

Estaos atentos a la cuenta de twitter de PItando para seguir esta serie y saber cuándo publicaré cada uno de las entradas.

Sigue leyendo Nuestro primer videojuego con Scratch (1)

Sonic Pi

logo_sonicPiEn este artículo vamos a cambiar la tónica reciente del blog, muy centrada hasta el momento en Python, para introducir Sonic Pi.

Sonic Pi es una herramienta diseñada y creada por Sam Aaron y el equipo de Sonic Pi. Durante el proceso se estuvo muy en contacto con el profesorado de música y ciencias de la computación, y el resultado es una herramienta de educación que abarca esos dos campos a la vez. Es decir, es una herramienta especialmente atractiva para aquellos niños (o no tan niños) interesados en la música y que quieran profundizar en ella, relacionándola con las matemáticas y la tecnología al mismo tiempo.

Sigue leyendo Sonic Pi

Solución al ejercicio de programas ejecutables y línea de comandos

La semana pasada planteaba un problema partiendo del siguiente programa:

#!/usr/bin/python3
import sys

# usuario = "lector de PItando"
usuario = sys.argv[1]
print("Hola, ", usuario)

exit(0)

El ejercicio decía así:

Modifica el programa para que funcione de la siguiente forma:

  1. Si su primer argumento es “?” imprima un mensaje para ayudarnos a usarlo, en el que salga el nombre del programa ejecutable (para lo que tendrás que usar la variable sys.argv).
  2. Si no se especifica ningún argumento, debe saludar al lector (“Hola, lector“).Para detectar la longitud de una lista, usa la función len(lista).
  3. También haz que junte todos los argumentos en el mensaje de saludo. Para eso, ten en cuenta que en Python podemos juntar varias cadenas en una sola “sumándolas”:
cadena = "Hola" + ", Mundo"
# Cadena tendrá como valor "Hola, Mundo"

Vamos con la solución.

Sigue leyendo Solución al ejercicio de programas ejecutables y línea de comandos

Soluciones a los ejercicios de bucles y condiciones

La semana pasada teníamos 2 ejercicios que resolver. Aquí van las soluciones.

1) Escribe un programa en IDLE que escriba aquellos números entre 1 y 100 que:

  • Sean pares
  • No sean múltiplos de 4
  • Tampoco sean múltiplos de 3.

Escríbelo dos veces: una con un bucle while y otra usando un bucle for.

Voy a empezar explicando la condición que indica si un número se debe escribir, o no. Si la leemos en castellano, deberíamos decir:

Si el resto de dividir el número entre 2 es 0, pero no se cumple que el resto de dividir el número entre 3 sea 0, ni entre 4, imprimirlo.

Dicho en “términos lógicos” usando los operadores de la semana pasada, diríamos que la condición a evaluar es:

numero % 2 == 0 and numero % 3 != 0 and numero % 4 != 0

También podemos escribirla de una forma alternativa si pensamos que debemos imprimirlo si no se cumple que numero % 3 == 0 ó numero % 4 == 0:

numero % 2 == 0 and not (numero % 3 == 0 or numero % 4 ==0)

Usa la que veas más clara; a medida que practiques cogerás soltura con estas alternativas y esta forma de escribir las condiciones lógica. Yo usaré la segunda.

Bucle while (es posible que te tengas que desplazar a la derecha para verlo todo):

numero = 1
while numero < 100:
    if numero % 2 == 0 and not (numero % 3 == 0 or numero % 4 == 0):
        print(numero)
    numero = numero + 1

Bucle for (es posible que te tengas que desplazar a la derecha para verlo todo):

del1al100 = range (1, 101)
for numero in del1al100:
    if numero % 2 == 0 and not (numero % 3 == 0 or numero % 4 == 0):
        print(numero)

En ambos casos la respuesta debe ser la siguiente:

Captura 20150628 - 5

2) Usando for, haz que Python escriba todas las tablas de multiplicar, del 1 al 10:

La solución a este problema consiste en anidar bucles: hacer un bucle dentro de otro. Así (es posible que te tengas que desplazar a la derecha para verlo todo):

for multiplicador in range (1, 11):
    print("Tabla de multiplicar del", multiplicador)
    for multiplicando in range (1, 11):
        print(multiplicando, "*", multiplicador, "=", multiplicando*multiplicador)
    print("==========================")
    print() # línea en blanco.

En este caso he incluido tres de sentencias para formatear un poco el resultado y que quede más legible, y he usado directamente la llamada a range(...) en las condiciones de los bucles.

También habría podido usar un caracter especial,\n, al final del print("=========================="), así: print("==========================\n"). Ese caracter hace que se imprima una línea en blanco, haciendo innecesaria la sentencia print(). Cualquiera de las dos opciones acabaría dejando la salida así (no la reproduzco toda):

Captura de pantalla 2015-07-05 17.14.04

Y esto es todo. Si hay algo que no entiendas, no dudes en dejar un comentario o contactar a través del formulario exponiendo cualquier duda.