On 4/9/2012 2:26 AM, leo degon wrote:
Hello all, Im trying to learn python and programming in my free time,
and I'm trying to do a little personal project to trying and gain some
skills. Im trying to do version of John conways game of life. I have a
working version of the game. Written for 3.2.2 on a mac to be accessed
through terminal.
In addition to Dave's comments I add:
I'm trying to give it a number of options. it dimensions, the max
number of turns, initial set up, and boundary conditions.
Please explain "boundary conditions"
The dimensions and turns were pretty easy to include.
The boundary conditions more difficult, and now I'm getting stuck on
the initial set up options. I can set it up randomly but Im having
problems implementing a checker board pattern.
It really helps when you explain the problem. What does not work as
expected?
'''displays: the text of the game of life for a set number of X x Y
for a set of R turns.
[-][-][-][-][-]
[-][-][-][-][-]
[-][-][-][-][-]
[-][-][-][-][-]
[-][-][-][-][-]
I suggest you simplify the display by using - or x e.g.:
--------
--------
---xx---
---xxx--
----xx--
--------
Get X,Y,T, Initial value
Create a data space X x Y
Assign initial value
print initial value and the text' initial value'
do while turns<T:
check data space
create new data space according to rules and old data space.
replace dataspace
print data space.
print end. '''
import random
X,Y,T=0,0,0
while not 4<X<102:
X=int(input('How many rows? enter a integer between 5 and 101: '))
while not 4<Y<102:
Y=int(input('How many columns? enter a integer between 5 and 101: '))
while not 4<T<102:
T=int(input('How many turns? enter a integer between 5 and 101: '))
Good place for a function: (untested). Also note it's common practice to
use names starting with lower case for variables. Note how we validate
input to ensure it is integer.
def getNum(prompt, lower, upper):
while True:
n = input(prompt + " enter a integer between %s and %s" % (lower,
upper))
if n.isdigit():
n = int(n)
if lower <= n <= upper:
return n
x = getNum("How many rows?", 5, 101)
y = getNum("How many rows?", 5, 101)
t = getNum("How many rows?", 5, 101)
entry=0
while not (entry=='b' or entry=='l' or entry=='d'):
can be simplified to while entry not in ('b', 'l', 'd')
entry=input('Press "b" for bound dimensions, press "l" for live
boundry, or press "d" for dead boundry: ')
#while not(initial=='r' or initial=='c' or initial=='g' or initial=='e'):
# initial=input('
SPACE=[]
Note (again) it's common practice to use names starting with lower case
for variables.
These nested loops
for i in range(X):
SPACE.append([])
for j in range(Y):
SPACE[i].append([0])
can be replaced with:
space = [0]*y]*x
Assuming you decide to have each cell contain either 1 or 0.
You might also consider giving space an extra row at the top and one at
the bottom, ditto for extra columns.
That will make calculating the neighbor count a lot easier, at the cost
of maintaining the extra rows/columns.
for r in range(1,x+1):
for c in range1,(y+1):
surrounding = sum([sum(space[r+z][c-1:c+2]) for z in(-1,0,1)])
....
OK enough for now - there's more but I'm out of time/energy right now.
--
Bob Gailer
919-636-4239
Chapel Hill NC
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor