Course Project - Text-Based Adventure Game

Overview

Welcome to your journey into the world of object-oriented programming through the creation of a Text-Based Adventure Game! Over the next six weeks, you will progressively build a game using Java, applying core object-oriented design and programming concepts. Each week focuses on a specific topic, allowing you to deepen your understanding and enhance your coding skills.

Project Theme

You will develop a text-based adventure game where the player explores a world, battles enemies, collects items, and interacts with various characters. The game starts simple but will grow in complexity as you incorporate new programming concepts each week. By the end of the project, you'll have a fully functional game that showcases your mastery of object-oriented principles.

Objectives

  • Apply Object-Oriented Concepts: Implement classes, objects, inheritance, polymorphism, abstract classes, and interfaces in a practical project.

  • Understand Aggregation and Collections: Use aggregation to build complex objects and manage collections with ArrayList.

  • Develop Incrementally: Learn to build software progressively, adding features systematically and ensuring code stability at each stage.

  • Enhance Problem-Solving Skills: Tackle challenges that require critical thinking and creative solutions.

  • Improve Code Quality: Write clean, readable, and well-documented code following best practices.

Weekly Breakdown

Submission 1: Classes and Objects

  • Focus: Create the fundamental classes (Player and Enemy) and implement basic interactions.

  • Outcome: A simple combat scenario where the player and an enemy can attack each other.

Submission 2: Aggregation

  • Focus: Introduce the Item class and demonstrate how objects can contain other objects.

  • Outcome: Players can equip items that enhance abilities, and enemies can drop items upon defeat.

Submission 3: ArrayLists

  • Focus: Manage collections of objects using ArrayList.

  • Outcome: Players can collect multiple items, and the game can handle multiple enemies and items dynamically.

Submission 4: Inheritance

  • Focus: Create subclasses of enemies and items to promote code reuse and organization.

  • Outcome: Specialized enemies like Goblin and Dragon, and item types like Weapon and Potion.

Submission 5: Polymorphism and Abstract Classes

  • Focus: Use abstract classes and polymorphism to generalize behaviors.

  • Outcome: Abstract Enemy and Item classes with subclasses implementing specific behaviors, enhancing flexibility.

Submission 6: Interfaces

  • Focus: Implement interfaces to define common behaviors across unrelated classes.

  • Outcome: Introduce Interactable interface for objects like NPCs and Chests, allowing diverse interactions.

Getting Started

  1. Set Up Your Environment: Ensure you have Java and a suitable IDE (like Eclipse or IntelliJ IDEA) installed.

  2. Plan Your Game: Think about the theme, storyline, and features you'd like to include within the project scope.

  3. Review Submission Requirements: Before starting each submission, read the instructions carefully to understand the expectations.

Expectations

  • Incremental Development: Build upon your code each week, ensuring previous functionalities continue to work as new features are added.

  • Code Quality: Write clean, well-organized code with proper naming conventions and comments for clarity.

  • Documentation: Accompany each submission with a brief report explaining your implementation and any challenges faced.

  • Testing: Rigorously test your game at each stage to identify and fix bugs early.

Submission Guidelines

  • Deadline: Submissions are due at the end of each module (specific dates will be provided).

  • Format: Submit all source code files and the accompanying report in a compressed folder named YourName_SubmissionX.zip.

Assessment Criteria

  • Functionality: The game meets the requirements specified for the week.

  • Understanding of Concepts: Demonstrated through your code implementation and explanations in the report.

  • Code Quality: Readability, organization, use of comments, and adherence to best practices.

  • Creativity: Originality in game design, features, and problem-solving approaches.

  • Progression: Evidence of building upon previous weeks' work and improving the game incrementally.

Additional Resources

  • Programming Guides: Refer to textbooks and online tutorials provided in the course.

  • Office Hours: Available for additional help—check the schedule and make appointments as needed.

Academic Honesty

While collaboration and discussion are encouraged, all code submitted must be your own. Plagiarism or copying code from others will result in disciplinary action and a grade of 0.

Encouragement

This project is not just an assignment but an opportunity to create something unique and enjoyable. Let your creativity shine as you apply programming concepts to build your game. Don't hesitate to experiment with new ideas or add personal touches that make your game stand out.

Good luck, and happy coding!

 

COSC-1437 / ITSE-2457 Computer Science Dept. - Author: Dr. Kevin Roark