To deepen my familiarity with C, I decided to transition one of my projects from Java to C. This not only required rewriting the project, but also revisiting and expanding upon my limited experience with C. Below are the projects I created to aid in this learning process
Conway's Game of Life
Though this is just a simple implementation of Conway's Game of Life in C, it served as a good way to grasp essential techniques for writing C. It does not have graphical capabilities beyond refreshing the grid and printing it to the console. I created this project as part of my effort to learn C and to deepen my understanding of basic programming concepts, memory management, and logic implementation. The focus is on the core mechanics of the game, demonstrating how complex behaviors can emerge from simple rules in a terminal-based environment.
Text adventure Dungeon
This project initially started as a Java-based text adventure with a secondary screen.Due to encountering some unusual bugs and my eagerness to learn C, I transitioned to developing a C-based text adventure. In the process, I became familiar with more advanced data structures, like stacks, and various techniques for procedural generation, including a naive wandering and room assignment strategy, and Wave Function Collapse, a more sophistocated procedural generation algorithm allowing for tiles, and constraints for which can be next to each other. Additionally, it forced me to understand manually handling memory and dataflow.
Wave Function Collapse
This is a simple implementation of Wave Function Collapse (WFC) written in C, primarily intended for use in my C-based text adventure. It eliminated the need for the stack I had previously built for map generation but can easily be modified for other uses. This was my first foray into deeper procedural generation techniques, previously just using a more random and naive approach at procedural generation. While it did work, it was kinda klunky and not too efficient.
Stack implementation
This is a basic implementation of a stack, initially created for use in procedural generation in my text adventure project. Thought it is simple, it is robust enough that i was able to use in map generation in a naive procedural generation algorightm. It is a simple stack that can be used for any purpose, but it is particularly useful for managing data in a procedural generation context.