"Hynek Schlawack" <hynek+usenet / hys.in-berlin.de> wrote in message news:87oeo6djjk.fsf / squirrel.dyndns.org...
|
| I found time to do "Red Ball" just now, hope no one else was faster. I
| think it looks pretty cool in ruby (dunno if it goes even
| better). Especially comparing it to the python-version...

Hi,
I didn't understand your sarcasm about Python. If you compare *equivalent* programs
written on Ruby and Python, they'll be *extremely* the same:

#!/bin/env python

# We use the Tk-Toolkit
from Tkinter import Tk, Canvas
from random import randint     # G-: Okey, okey, I added these two lines
from sys import exit                # and removed two 'end's. Agreed? :)


# Create a root-widget, a canvas and a hash to store the squares
root = Tk(); root.title( 'Red Ball' )

c = Canvas(root, width=320, height=200)
fig = {}

# Create the squares with the appropriate colors on random places
for colour in ('black', 'red'):
  x = randint(0, 320 - 16)
  y = randint(0, 200 - 16)
  fig[colour] = c.create_rectangle( x, y, x+15, y+15, fill=colour )

c.pack()

# Move the square in the desired direction, exit if we have won
def move_player(x, y):
  c.move( fig['red'], x, y )
  print c.coords(fig['red']), c.coords(fig['black'])
  if c.coords(fig['red']) == c.coords(fig['black']): exit(0)

# Bind the actions to keys
root.bind("s", lambda e: move_player(-1,  0) )
root.bind("d", lambda e: move_player( 1,  0) )
root.bind("e", lambda e: move_player( 0, -1) )
root.bind("x", lambda e: move_player( 0,  1) )

# Finally give up control to Tk
root.mainloop()

Regards,
Georgy