www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - John Conway's Game of Life in D v1.0

reply Jim Burnes <jvburnes gmail.com> writes:
Content-Type: text/plain

Hey D People...

Here is my first significant effort in D: John Conway's Game of Life.
(http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life)

It's not a graphics library or a first person shooter, but you may enjoy it. 
Hopefully someone might be able to use this as a good example of a simple D
program.  I've cleaned it up a little, but haven't spit-shined it if you know
what I mean.

Here are the features:

- compiled with the latest 'gdc' available in Ubuntu 7.10.
- It uses ncurses for output for that "old school effect".  If you want to
build and run it you'll need a copy of the 'bcd' C to D header converter.  Make
sure you install his pre-converted headers for curses. (By the way, could
someone update the website and make sure they reference 'bcd' as the new header
converter.  I wasted a lot of time with the other one.)
- It loads its initial population from a file.  Format is <row>,<col> for each
  populated cell.  One data item per line.
- Upon startup, the initial population is displayed and you can edit it with
'vi' like keys.  Check the code for the useful keys. (spacebar to flip a cell
on/off. vi movement keys to move.)
- Hit ENTER to start the sim.  To pause and edit the current population hit
ENTER again.
- To single step the sim just press the space bar.  Any other key will advance
to the next gen. Spacebar again leaves step mode.
- ESC will exit the sim from run state or edit state.
- It auto adapts its data structures at startup to fit your console size.
- It's only about 9k of source code.

Okay, that's it.  If you are amused or pissed off just send me an email 8-)

I'm sure you'll identify some code that I could have done using more
appropriate D idioms (like the nested for loops could be foreach).

If you can think of improvements, please feel free to send them in and if they
make sense I send an update.

I know it's a toy and doesn't include any generic programming or templating
examples, but hey its a start and kind of fun.

Next I want to do an AI neuroevolver so I thought this would be appropriate ;-)

Regards,

Jim Burnes
Apr 24 2008
next sibling parent reply Tower Ty <tytower hotmail.com> writes:
Any chance of aTango version?
Apr 24 2008
parent Jim Burnes <jvburnes gmail.com> writes:
Tower  Ty Wrote:

 Any chance of aTango version?

Ty, I'm not sure what Tango functions I could leverage. Right now it just uses a simple class or two that I cooked up. All I/O functions are handled by nCurses. I'm considering an expanded version of it in GTKd. Jim
Apr 25 2008
prev sibling parent janderson <askme me.com> writes:
Jim Burnes wrote:
 Hey D People...
 
 Here is my first significant effort in D: John Conway's Game of Life.
 (http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life)
 
 It's not a graphics library or a first person shooter, but you may enjoy it. 
Hopefully someone might be able to use this as a good example of a simple D
program.  I've cleaned it up a little, but haven't spit-shined it if you know
what I mean.
 
 Here are the features:
 
 - compiled with the latest 'gdc' available in Ubuntu 7.10.
 - It uses ncurses for output for that "old school effect".  If you want to
build and run it you'll need a copy of the 'bcd' C to D header converter.  Make
sure you install his pre-converted headers for curses. (By the way, could
someone update the website and make sure they reference 'bcd' as the new header
converter.  I wasted a lot of time with the other one.)
 - It loads its initial population from a file.  Format is <row>,<col> for each
   populated cell.  One data item per line.
 - Upon startup, the initial population is displayed and you can edit it with
'vi' like keys.  Check the code for the useful keys. (spacebar to flip a cell
on/off. vi movement keys to move.)
 - Hit ENTER to start the sim.  To pause and edit the current population hit
ENTER again.
 - To single step the sim just press the space bar.  Any other key will advance
to the next gen. Spacebar again leaves step mode.
 - ESC will exit the sim from run state or edit state.
 - It auto adapts its data structures at startup to fit your console size.
 - It's only about 9k of source code.
 
 Okay, that's it.  If you are amused or pissed off just send me an email 8-)
 
 I'm sure you'll identify some code that I could have done using more
appropriate D idioms (like the nested for loops could be foreach).
 
 If you can think of improvements, please feel free to send them in and if they
make sense I send an update.
 
 I know it's a toy and doesn't include any generic programming or templating
examples, but hey its a start and kind of fun.
 
 Next I want to do an AI neuroevolver so I thought this would be appropriate ;-)
 
 Regards,
 
 Jim Burnes

Nice work!
Apr 24 2008