class: title # The Project ## CSC 161 – April 23, 2026 --- # Agenda for Today 1. Department Events 1. Upcoming Work 1. The Project 1. Wrap Up --- # Department Events ## CS Picnic .indent[ Friday, May 1st at 5pm in the Merrill Park West shelter RSVP by this Friday:
] --- class: section blue # Upcoming Work --- # Homework: Pathfinding **Due:** Thursday, April 23rd by 10pm ## Q&A **Does our whole pathfinding implementation have to go into `plan_route`?** No, you can (and probably should) add helper functions. You'll need to add a queue data structure, and that should include functions to add and remove items. **Aren't `movelist_clear` and `movelist_destroy` the same thing?** They might be implemented the same way, but they mean something different at the interface level. Removing all items from a list is conceptually different from freeing all the memory used to store a list. **Do we need to use `movelist_t` in the `plan_route` function?** Yes, but not as the queue for breadth-first search. The breadth-first search will use a queue of coordinates. You will eventually need to add moves to the `movelist_t` when you find a path. --- class: section blue # The Project --- # The Project: Overview Implement *something*, as long as it has these elements: -- **Interactivity:** Read and respond to user input -- **Real-time Updates:** State changes whether the user is giving input or not. -- **Graphical Output:** Show something more than just text on the screen. -- **State Representation:** Use two: arrays, `struct`s, `enum`s, or `union`s to represent state. -- **Dynamic Memory:** Allocate and manage varying amounts of memory over the program's run. -- You can choose your own program to implement, but we'll look at some suggestions next. --- # The Project: Suggestions Pared-down versions of these classic games could cover the required elements for the project: - Tetris - Snake - Asteroids - Breakout You can find playable versions of many classic arcade games that might be good inspiration for a project at the
Internet Arcade
. -- The project does *not* have to be a game, as long as it has the five required elements from the last slide. --- # The Project: Logistics ## Groups You can work individually, or in groups of up to three students. ## Grading The project is worth the same as two homework assignments. To receive full credit, you will need to implement a project that covers the file required elements and present it to the class during our final exam time. Projects also need to meet the same code style, safety, and organization requirements you followed for the individual homework assignments. --- # The Project: Questions for Discussion Consider the following questions. We'll only discuss the last one. 1. What are some topics from this course you'd like to practice as part of your final project? 2. What will help you be successful as you work on the project: working independently or with a group? 3. What are you interested in doing for the project? You could consider the entire project, or just specific elements that interest you. --- class: section green # Project Organizing Time --- class: section blue # Wrap Up --- # Wrap Up ## Lab Report When you submit your lab report for this week, include a list of at least two project ideas you or your lab partner are considering. Include a brief description of how each one of your project ideas would meet the five required elements from earlier in these slides. Please submit your lab report with your partner from Tuesday, even if you aren't planning to work together on the project. ## Pathfinding Assignment Due at 10pm tonight, or Saturday with a token. ## Reading - **SDL2 Textures**