Simple board game GUI framework
> On Sep 11, 2017, at 3:58 AM, Paul Moore <p.f.moore at gmail.com> wrote:
> I'm doing some training for a colleague on Python, and I want to look
> at a bit of object orientation. For that, I'm thinking of a small
> project to write a series of classes simulating objects moving round
> on a chess-style board of squares.
> I want to concentrate on writing the classes and their behaviour, and
> not on display issues, but I would like it if the resulting program
> was reasonably interesting. To that end, I was thinking of putting
> together a frontend that displayed the objects moving round on a board
> (rather than, for example, just printing out lists of co-ordinates).
> I'd build the frontend, then my student could write the object classes
> and drop them into the framework.
> My problem is that I've never written any sort of game code for
> Python, which is basically what this is. And I don't have a lot of
> time to develop something. So I was wondering - are there any
> ready-made examples of the sort of driver I'm thinking of? Something
> like a framework for a Chess or Othello game, but with the actual game
> logic isolated so I could easily rip it out and replace it with my
> own. I've done some searching around, but most of the examples I've
> seen seem to have the display and game logic intermingled (at least to
> my untrained eye).
> Any suggestions? If not, I guess I'll just have to write my own. I'm
> sure I could - it's just that I don't want my training to be messed up
> because of bugs in my code...
I started something similar to this and didn't get far. I wrote a base class called Piece that had common attributes (I.e., color and position) and abstract methods (i.e., move). From the base class I derived all the piece types. That's the easy part.
The board is a bit tricky, depending on how you set it up. The board of 64 squares could be a list, a dictionary or a class. I went with a Board class that used a coordinate system (i.e., bottom row first square was (0, 0) and top row last square (7, 7)) and kept track of everything on the board.
The furthest I got with this was a simple text display and interface to move pawns and bishops forward.
Chess may look straight forward but it can get complicated in a hurry. If you look at the computing literature, chess has been a never ending rabbit hole for 50+ years.