Chess Game Written in C

This was a five-week project in EECS 22L (advanced C programming) at UC Irvine, winter 2014. In simulating a real-world software engineering environment, the project emphasized teamwork, strict deadlines, and inventive design solutions. Teams of 7-8 members were required to submit weekly deliverables such as user documentation, software specification, an alpha release, and a final release. Instruction and assistance from the professor was confined to general issues regarding the language and tools. Hence, successful and timely completion of deliverables required each team member to actively solve problems with self-direction and team collaboration.

A video demo of the team release and my post-assignment improvements is presented below. For more information, please see my GitHub repo


Tools Used

C, GCC, GDB, SDL2, Git, Emacs, Visio, Pixelmator 


Contribution

GUI Design/Development, Data Structures in View Module, End User Documentation, Software Architecture Specification 


Development Process

Preliminary Setup and Preparations

  • Researched graphics options (SDL, SDL2, GTK)
  • Decided on SDL2, as it provided the most appropriate feature set for this project
  • Set up Ubuntu virtual machine for testing program under Linux
  • Installed SDL2 library and extension libraries (SDL2_gfx, SDL2_image, and SDL2_ttf) on Mac OS X and Ubuntu
  • Consulted with teammates on my acquired knowledge of SDL2 to assist with various installation and implementation issues 

Software Architecture (MVC) Specification

  • Collaborated with teammates to develop view data structures
  • Developed the function prototypes for SDL primitive renderings (image, textures, boxes, text)
  • Developed the function prototypes for displaying main menu, options menu, and gameplay screen

GUI Development

  • Created/obtained all graphical assets (background images, pieces, banners, fonts)
  • Developed render and display function definitions (additionally, wrote test code for these functions)
  • Tested and debugged GUI on Mac OS X and Linux platforms
  • Maintained timely and frequent software updates via GitHub

Post-Assignment Improvements

Following conclusion of the course, I revisited the project and made a number of improvements. A comparison of the final team-release and my improved version is presented in the video above.

  • Redesigned colors, added gradients, centered text, and removed unused elements
  • Fixed numerous bugs (crashes and illegal moves) in model and control modules


Conclusions

This project presented many new and challenging experiences for me. I began this project as an intermediate-level C programmer, but I emerged with a greater understanding of the dynamics and technical knowledge required for medium-scale programming projects.

The experience of working collaboratively on a project will undoubtedly resonate throughout the remainder of my education and into my career as well. Communication was essential in completing this project, as well as perceiving strengths and weaknesses in oneself and in others. I learned much from my teammates (e.g., debugging with GDB and OOP), while sharing my knowledge base (e.g., installing and using SDL2 library) strengthened my communication and collaboration skills. 

The list of technical skills I acquired from this project is exhaustive. My understanding of data structures and object-oriented programming was strengthened immensely. Although working with the SDL2 library proved to be challenging at times, it strengthened my Linux/Unix command line abilities (e.g., cross-platform library install issues). Working with SDL2 also provided me with the invaluable experience of researching/learning an API and implementing it.