{ "metadata": { "name": "Firework" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "A simple firework animation with [`ipythonblocks`](https://github.com/jiffyclub/ipythonblocks)." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from ipythonblocks import BlockGrid" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "import math\n", "import itertools" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "def dist(p1, p2):\n", " return math.sqrt((p1[0] - p2[0]) ** 2 + (p1[1] - p2[1]) ** 2)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "grid = BlockGrid(41, 41, block_size=8, lines_on=False)\n", "\n", "red = (255, 43, 43)\n", "orange = (255, 142, 43)\n", "yellow = (248, 255, 43)\n", "black = (0, 0, 0)\n", "gray = (188, 188, 188)\n", "blue = (15, 183, 255)\n", "pink = (255, 79, 249)\n", "green = (76, 224, 133)\n", "\n", "# launch explosion\n", "launch_center = (40, 20)\n", "\n", "for i in (1, 2, 3, 2, 1):\n", " for block in grid:\n", " if dist((block.row, block.col), launch_center) < i*3:\n", " block.rgb = yellow\n", " else:\n", " block.rgb = black\n", " \n", " if dist((block.row, block.col), launch_center) < i*2:\n", " block.rgb = orange\n", " \n", " if dist((block.row, block.col), launch_center) < i:\n", " block.rgb = red\n", "\n", " grid.flash()\n", "\n", "# ascent\n", "for i in range(17):\n", " grid[:, :] = black\n", " row = 36 - i\n", " grid[row:row + 2, 20] = gray\n", " grid.flash()\n", " \n", "# firework\n", "firework_center = (20, 20)\n", "colors = itertools.cycle((blue, pink, green))\n", "\n", "for i in range(0, 20):\n", " grid[:, :] = black\n", " for j in range(0, i, 2):\n", " color = colors.next()\n", " for block in grid:\n", " if round(dist((block.row, block.col), firework_center)) == j:\n", " block.rgb = color\n", " grid.flash()\n", "\n", "grid.show()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
" ], "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 } ], "metadata": {} } ] }