Shared2018-01-22-221805.ipynbOpen in CoCalc
#12.7

from pylab import *

def initialize():
    global x, result
    x = 0.4
    result = [x]

def observe():
    global x, result
    result.append(x)

def f(x): 
    return 56*x**4*(1-x)**5 + 84*x**3*(1-x)**6 #difference equation

def update():
    global x, result
    x = f(x)

initialize()
for t in xrange(30):
    update()
    observe()

### drawing diagonal line
xmin, xmax = 0, 1
plot([xmin, xmax], [xmin, xmax], 'k')

### drawing curve
rng = arange(xmin, xmax, (xmax - xmin) / 100.)
plot(rng, map(f, rng), 'k')

### drawing trajectory
horizontal = [result[0]]
vertical = [result[0]] 
for x in result[1:]:
    horizontal.append(vertical[-1])
    vertical.append(x)
    horizontal.append(x)
    vertical.append(x)    
plot(horizontal, vertical, 'b')

show()
#game of life simulation

#conducted on local machine
#pasted online for reference
import matplotlib
matplotlib.use('TkAgg')
from pylab import *

n = 100 # size of space: n x n
p = 0.1 # starting state composition

def initialize():
    global config, nextconfig
    config = zeros([n, n])
    for x in range(n):
        for y in range(n):
            config[x, y] = 1 if random() < p else 0
    nextconfig = zeros([n, n])
    
def observe():
    global config, nextconfig
    cla()
    imshow(config, vmin = 0, vmax = 1, cmap = cm.binary)

def update():
    global config, nextconfig
    for x in range(n):
        for y in range(n):
            count = 0
            for dx in [-1, 0, 1]:
                for dy in [-1, 0, 1]:
                    count += config[(x + dx) % n, (y + dy) % n]
            if config[x,y] == 0:
                nextconfig[x,y] = 1 if count == 3 else 0
            else:
                nextconfig[x,y] = 1 if count == 3 or count == 2 else 0
    config, nextconfig = nextconfig, config

import pycxsimulator
pycxsimulator.GUI().start(func=[initialize, observe, update])
#conducted on local machine
#pasted online for reference

#11.8

# Simple CA simulator in Python
#
# *** Hosts & Pathogens ***
#
# Copyright 2008-2012 Hiroki Sayama
# [email protected]

import matplotlib
matplotlib.use('TkAgg')

import pylab as PL
import random as RD
import scipy as SP

RD.seed()

width = 50
height = 50
initProb = 0.01
infectionRate = 0.85
regrowthRate = 0.15

def init():
    global time, config, nextConfig, density

    time = 0

    config = SP.zeros([height, width])
    for x in xrange(width):
        for y in xrange(height):
            if RD.random() < initProb:
                state = 2
            else:
                state = 1
            config[y, x] = state

    nextConfig = SP.zeros([height, width])
    density = [config.ravel().mean()]

def draw():
    global density
    PL.cla()

    # Show current state on left subplot.
    PL.subplot(1, 2, 1)
    PL.pcolor(config, vmin = 0, vmax = 2, cmap = PL.cm.jet)
    PL.axis('image')
    PL.title('t = ' + str(time))

    # Show density right subplot.
    PL.subplot(1, 2, 2)
    PL.plot(density)
    PL.ylim(0, 1)

def step():
    global time, config, nextConfig, density

    time += 1

    for x in xrange(width):
        for y in xrange(height):
            state = config[y, x]
            if state == 0:
                for dx in xrange(-1, 2):
                    for dy in xrange(-1, 2):
                        if config[(y+dy)%height, (x+dx)%width] == 1:
                            if RD.random() < regrowthRate:
                                state = 1
            elif state == 1:
                for dx in xrange(-1, 2):
                    for dy in xrange(-1, 2):
                        if config[(y+dy)%height, (x+dx)%width] == 2:
                            if RD.random() < infectionRate:
                                state = 2
            else:
                state = 0

            nextConfig[y, x] = state

    config, nextConfig = nextConfig, config
    density.append(config.ravel().mean())

import pycxsimulator
pycxsimulator.GUI().start(func=[init,draw,step])

try:
	import Tkinter as tk
except:
	import tkinter as tk
import tkMessageBox
import random
import time

LARGE_FONT = ("Verdana", 16)

class DuelGame(tk.Tk):
	def __init__(self, *args, **kwargs):
		tk.Tk.__init__(self, *args, **kwargs)
		container = tk.Frame(self)

		container.pack(side="top", fill="both", expand=True)

		container.grid_rowconfigure(0, weight=1)
		container.grid_columnconfigure(0, weight=1)

		self.frames = {}

		for F in (StartPage, Game):

			frame = F(container, self)

			self.frames[F] = frame

			frame.grid(row=0, column=0, sticky="nsew")

		self.show_frame(StartPage)

	def show_frame(self, cont):
		frame = self.frames[cont]
		frame.tkraise()

class StartPage(tk.Frame):

	def __init__(self, parent, controller):
		tk.Frame.__init__(self, parent)
		label = tk.Label(self, text="Duel Game", font=LARGE_FONT)
		label.pack(pady=100, padx=100) #suboptimal, should use grid

		start_button = tk.Button(self, text="Start", 
			command=lambda:controller.show_frame(Game))
		start_button.pack()
		exit_button = tk.Button(self, text="Exit", command=self.exit)
		exit_button.pack()

	def exit(self):
		self.quit()

class Game(tk.Frame):
	def __init__(self, parent, controller):
		tk.Frame.__init__(self, parent)

		self.grid_rowconfigure(0, weight=1)
		self.grid_columnconfigure(0, weight=1)

		label = tk.Label(self, text="Teh ReAl Du3l G4m3", font=LARGE_FONT)
		label.grid(row=0, column=0) #suboptimal, should use grid

		yscrollbar = tk.Scrollbar(self)
		yscrollbar.grid(row=1, column=1, sticky='ns')

		self.text_box = tk.Text(self, wrap=None, bd=0,
            		yscrollcommand=yscrollbar.set)

		self.text_box.grid(row=1, column=0, sticky='nsew')

		yscrollbar.config(command=self.text_box.yview)

		self.step_button = tk.Button(self, text="Step", command=self.step)
		self.step_button.grid(row=2,column=0,sticky='nsew')
		self.shoot_button = tk.Button(self, text="Shoot", command=self.shoot)
		self.shoot_button.grid(row=3,column=0,sticky='nsew')
		self.reset_button = tk.Button(self, text="Reset", command=self.reset)
		self.reset_button.grid(row=4,column=0,sticky='nsew')
		self.end_button = tk.Button(self, text="I'm bored...", 
			command=lambda:controller.show_frame(StartPage))
		self.end_button.grid(row=5,column=0,sticky='nsew')

		self.pack()

		self.d = 20
		self.n = self.d
		self.bullet_cap = 3
		self.turn = 1

	def turn_det(self):
		if self.turn:
			self.text_box.insert("end", "Player 1: ", "bold")
		else:
			self.text_box.insert("end", "Player 2: ", "bold")

	def step(self):
		turn_det()

		if self.d > 0:
			self.d -= 1
		else:
			self.text_box.insert("end", "Invalid move! Try again.\n")
		self.text_box.insert("end", "You are now " + str(self.d) + " steps away.\n")
		self.text_box.see("end")

	def shoot(self, p=1):
		turn_det()

		p=lambda n, d: (.9/n)*(n-d)+.1
		if random.random() < p(self.n, self.d):
			self.text_box.insert("end", "Shot Fired! Gg.\n")
			self.end_game()
		else:
			self.text_box.insert("end", "Shot fired and missed :(\n")
		self.text_box.see("end")

	def reset(self):
		self.text_box.delete("1.0", "end")
		self.step_button['state'] = 'normal'
		self.shoot_button['state'] = 'normal'
		self.d = 20
		self.n = self.d

	def end_game(self):
		self.step_button['state'] = 'disabled'
		self.shoot_button['state'] = 'disabled'
		text = tkMessageBox.showinfo("Duel Game", "Game Ends!")
		if text:
			self.reset()
			#print game history		

app = DuelGame()
app.mainloop()
--------------------------------------------------------------------------- TclError Traceback (most recent call last) <ipython-input-1-4d4f2ae56fb2> in <module>() 130 #print game history 131 --> 132 app = DuelGame() 133 app.mainloop() <ipython-input-1-4d4f2ae56fb2> in __init__(self, *args, **kwargs) 11 class DuelGame(tk.Tk): 12 def __init__(self, *args, **kwargs): ---> 13 tk.Tk.__init__(self, *args, **kwargs) 14 container = tk.Frame(self) 15 /ext/sage/sage-8.1/local/lib/python2.7/lib-tk/Tkinter.pyc in __init__(self, screenName, baseName, className, useTk, sync, use) 1817 baseName = baseName + ext 1818 interactive = 0 -> 1819 self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) 1820 if useTk: 1821 self._loadtk() TclError: no display name and no $DISPLAY environment variable