b501d2f4 |
import os
if __name__ == '__main__':
HOME=os.environ['HOME']
execfile(os.path.join(HOME, 'python_envs', 'roguelike', 'bin', 'activate_this.py'),
dict(__file__=os.path.join(HOME, 'python_envs', 'roguelike', 'bin', 'activate_this.py')))
import scipy.signal
import random
#random.seed(2)
import libtcodpy as tc
import numpy as np
import scipy.signal as sig
from src import console
from src import events
from gui import text_display
import random
import bisect
from twisted.internet import reactor
import twisted.internet
WIDTH = 155
HEIGHT = 87
def scale_array(arr, min, max):
omin, omax = arr.min(), arr.max()
arr -= omin
arr *= (max - min)
arr /= (omax - omin)
arr += min
return arr
|
9c6e9477 |
# For Conway's game of life:
#cm = np.array([[1,1,1],[1,0,1],[1,1,1]])
# For a random neighbour selection:
cm = np.random.random_integers(0,np.random.random_integers(1,3), (3,3))
|
b501d2f4 |
new = sig.convolve2d(arr,cm,'same', 'wrap')
arr[live & (new < 2)] = 0
arr[live & (new > 3)] = 0
arr[new == 3] = 1
class Application(object):
def __init__(self):
self.screen = console.Screen(WIDTH, HEIGHT+5)
self.console = console.Console(WIDTH, HEIGHT, self.screen)
self.border = console.Console(WIDTH, 5, self.screen, (0,HEIGHT))
self.message_console = console.Console(WIDTH-2, 5, self.screen, (1,HEIGHT))
self.messages = text_display.MessageBox(self.message_console, 5, (22,0), 'msg')
self.fps_display = text_display.Label(self.message_console, (0,0), None)
self.generations = text_display.Label(self.message_console, (0,1), None)
self.rule = text_display.Array2DDisplay(self.message_console, (5,0), None)
self.rule.associate(cm)
self.tc_events = events.TCODEventHandler()
self.events = events.EventHandler()
|
b501d2f4 |
def init(self):
self.screen.init("test")
self.border.fill(0,0,64)
self.border.blit()
self.message_console.fill(0,0,128)
self.rule.update()
def tick(self):
self.tc_events.tick()
self.fps_display.set_text('%d', tc.sys_get_fps())
self.generations.set_text('%d' % gens)
|
b501d2f4 |
c = self.arr*255
tc.console_fill_background(self.console.con, c,c,c)
self.console.blit()
self.message_console.blit()
tc.console_flush()
if tc.console_is_window_closed():
reactor.stop()
else:
reactor.callLater(0, self.tick)
if __name__ == '__main__':
app = Application()
app.init()
reactor.callWhenRunning(app.tick)
reactor.run()
|