We may earn an affiliate commission when you visit our partners.
Course image
Huw Collingbourne

Adventures in C# Programming is a programming course like no other. It teaches the features of the C# language by guiding you step-by-step through the development of an exploring-style game.

You will learn to…

Read more

Adventures in C# Programming is a programming course like no other. It teaches the features of the C# language by guiding you step-by-step through the development of an exploring-style game.

You will learn to…

  • Write a retro-style adventure game like ‘Zork’ or ‘Colossal Cave’

  • Master object orientation by creating hierarchies of treasure objects

  • Create rooms and maps using .NET collections, arrays and Dictionaries

  • Create objects with overloaded and overridden methods

  • Serialize networks of data to save and restore games

  • Write modular code using classes, partial classes and subclasses

  • Program user interaction with a ‘natural language’ interface

  • Plus: encapsulation, inheritance, constructors, enums, properties, hidden methods and much more…

If you are a beginner programmer and already studying another C# course, this will give you hands-on experience of writing a big and complex project.

If you are an experienced programmer, this will give you a quick way into the twisty little corners of the C# language.

If you are a retro-games fanatic, learn how to write games just like the Infocom classics of the 1980s.

In this course you will learn to write C# your own retro text-adventure game using either the free Visual Studio Community Edition or a commercial edition of Microsoft Visual Studio. All the source code of sample projects is provided ready for you to download, run and modify.

The course instructor, Huw Collingbourne, is the author of the cult adventure game, The Golden Wombat Of Destiny. A long-established programming teacher online, he is also a well-known programming columnist in the UK and is the author of The Book Of Ruby.

Adventures in C# Programming is the ultimate fun way to learn the C# language. So, come on in and let’s begin the adventure.

Enroll now

What's inside

Learning objectives

  • Program a text adventure game
  • Learn object oriented programming in c#
  • Build a complex project from multiple code files
  • Understand classes, objects and serialization

Syllabus

Object Oriented Programming

Learn by writing a text adventure

Read This First

If you are a Visual Studio 2019 user, be sure to download and read this document before creating a project.

Read more
Code Archive (to download)

Let’s consider who this course is best suited for.

Be sure you are ready…

How should you study this course? I

Get to know the classics – then write your own!

A Room is an object. So right away I need to do some object oriented programming.

Class Definition

Object creation

Arrays

Scope

Namespaces

Encapsulation

Inheritance

Constructors

Properties

Dictionaries

Subclassing Dictionaries

Enums

Keys and Values

Modular code organization

Adding new objects to a Dictionary

Restructuring code

Creating, saving and restoring networks of objects

List management

Generic Lists

Overloading

List operations

Hidden methods

Descendent methods with the same names

Iteration

Overridden methods

The MenuStrip component

Finding an object in one or more lists

Serialization

Note that in the latest versions of .NET the use of BinaryFormatter will generate warnings due to the fact that it is not fully secure. Microsoft now recommends using the XML or JSON formats instead. Here I include an example project using JSON. Be sure also to read the PDF notes supplied.

The [Serializable] attribute

SerializationInfo

Review code

Faking ‘natural language’

Partial classes

Accepting user input

Analyzing user input

Before we move on, here’s a short quiz to help you revise a few important concepts…

The ContainerThing class

What Next?

It’s time to create your own game. Here are a few ideas…

Save this course

Save Adventures In C# Programming to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Adventures In C# Programming with these activities:
Review Object-Oriented Programming Concepts
Solidify your understanding of object-oriented programming principles before diving into C#. This will make grasping the game's architecture and code structure much easier.
Show steps
  • Read articles or watch videos explaining OOP concepts.
  • Review examples of classes, objects, inheritance, and polymorphism.
  • Try writing simple classes in C# to practice these concepts.
Review 'Head First C#'
Get a solid foundation in C# with a fun and engaging learning experience. This book is a great supplement to the course materials.
View Head First C# on Amazon
Show steps
  • Read the chapters covering the basics of C# syntax and object-oriented programming.
  • Complete the exercises and quizzes provided in the book.
  • Use the book to clarify any concepts that you find confusing in the course.
Review 'C# 8.0 and .NET Core 3.0 – Modern Cross-Platform Development'
Gain a deeper understanding of C# syntax and features. This book will serve as a valuable reference throughout the course.
Show steps
  • Read the chapters covering object-oriented programming and C# fundamentals.
  • Experiment with the code examples provided in the book.
  • Use the book as a reference when you encounter unfamiliar C# syntax.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Create a C# Cheat Sheet
Consolidate your knowledge of C# syntax and concepts by creating a cheat sheet. This will be a valuable reference tool for future projects.
Show steps
  • Review your notes, assignments, and the course materials.
  • Identify the most important C# syntax and concepts.
  • Organize the information into a clear and concise cheat sheet.
  • Include examples of how to use each syntax element or concept.
Practice C# Coding Challenges
Sharpen your C# coding skills by solving coding challenges on platforms like HackerRank or LeetCode. This will improve your problem-solving abilities and your fluency in C#.
Show steps
  • Choose a coding challenge platform and create an account.
  • Select C# as your programming language.
  • Solve coding challenges of varying difficulty levels.
  • Review your solutions and learn from others.
Expand the Text Adventure Game
Solidify your understanding of C# and object-oriented programming by adding new features to the text adventure game. This will challenge you to apply the concepts learned in the course to a real-world project.
Show steps
  • Choose a new feature to add to the game, such as a combat system or a puzzle.
  • Design the classes and methods needed to implement the feature.
  • Write the code for the new feature, testing it thoroughly.
  • Integrate the new feature into the existing game world.
Write a Blog Post About Your Text Adventure Game
Reinforce your learning by explaining your game's design and implementation to others. This will help you identify any gaps in your understanding and improve your communication skills.
Show steps
  • Describe the game's concept and features.
  • Explain the object-oriented design of the game.
  • Share code snippets and explain their functionality.
  • Publish your blog post on a platform like Medium or your own website.

Career center

Learners who complete Adventures In C# Programming will develop knowledge and skills that may be useful to these careers:
C# Developer
A C# developer specializes in creating applications using the C# programming language. This course lets you learn C# by creating an adventure game, providing targeted expertise in C#. You will learn how to write modular code and how to master object orientation. The course immerses you in practical C# programming, including object creation, data serialization, and user input handling. The hands-on approach and focus on C#-specific features will allow you to develop the skills needed to excel as a C# developer. You will also understand how to develop a natural language interface.
Game Developer
A game developer is involved in the creation of video games for computers, consoles, and mobile devices. This course, focusing on building a retro-style adventure game using C#, offers direct experience in game development. You will learn to implement game mechanics, design user interfaces, and manage game data using .NET collections. The course emphasizes object orientation through hierarchies of game objects and map design using collections, arrays, and dictionaries. The course's hands-on approach, combined with its focus on game-specific challenges, makes it especially valuable for anyone interested in becoming a game developer.
Software Developer
A software developer designs, develops, and tests software applications. This course, which teaches C# through the creation of an adventure game, provides hands-on experience in software development principles. You will learn object-oriented programming, create data structures and algorithms, and manage user input, skills directly applicable to software development. Furthermore, the course helps you understand how to write modular code using classes, partial classes, and subclasses, all while working on a large, complex project. For an aspiring software developer, this course offers a practical and engaging introduction to C# and software development practices.
Application Developer
An application developer designs and builds software applications for various platforms. This course, by guiding you through the development of a retro-style adventure game in C#, provides foundational skills in application development. You will learn object-oriented programming, data structures, and user interface design. The course emphasizes modular code using classes, partial classes, and subclasses. Because it covers saving and restoring games, it introduces data serialization techniques. You will come to understand how to create applications with a natural language interface. This makes the course valuable for anyone aiming to build robust and engaging software applications.
Software Engineer
A software engineer applies engineering principles to the design, development, and maintenance of software systems. This course helps build a foundation by teaching C# through the creation of a complex adventure game. You will gain practical experience in object-oriented programming, data management, and user interaction design. The course emphasizes modular code, clear architecture, and best practices for building robust software. Because you are working on a substantial project, you will develop skills that you will use as a software engineer. The course's focus on building a complete, working game makes it highly beneficial for aspiring software engineers.
Mobile App Developer
A mobile app developer creates applications for mobile devices, such as smartphones and tablets. This course introduces the C# language, widely used in mobile app development with platforms like Xamarin. You will learn object-oriented programming, data structures, and user interface design. Understanding these concepts may be useful when building engaging and functional mobile apps. The course's hands-on approach, combined with its focus on user interaction, makes it a great starting point for aspiring mobile app developers, particularly those interested in using C#.
Web Developer
A web developer creates and maintains websites and web applications. This course helps begin the study of C#, a language often used in web development with the .NET framework. You will learn object-oriented programming, data structures, and user interaction. The course emphasizes modular code using classes, partial classes, and subclasses. Understanding these concepts may be useful when building dynamic and interactive web applications. If you are interested in back-end development with C#, this course will help you build a foundation.
Software Architect
A software architect is responsible for the high-level design and structure of software systems. This course may be useful by demonstrating how to build a complex software project from the ground up. It introduces you to object-oriented programming, modular code design, and data serialization techniques. While software architects typically require years of experience and often hold advanced degrees, understanding the fundamentals taught in this course may contribute to a broader understanding of software architecture principles. You will also learn about serialization, which will help you design modules with different data storage needs.
Automation Engineer
An automation engineer designs and implements automated systems, often for testing or manufacturing processes. This course may give you a practical understanding of programming principles and C#, frequently used in scripting and automation tools. You will learn about object-oriented programming and how to write modular code. While automation engineering typically involves a broader range of skills, the programming fundamentals learned in this course might be helpful in developing automation scripts and tools. This is especially useful if you are working with .NET-based automation frameworks.
Database Developer
A database developer designs, implements, and maintains databases. This course helps you manage the database and user input. During the course, you will learn about data serialization, which is useful when exchanging data with a database. The course teaches you how to use .NET collections, arrays and dictionaries to manage data, which relates to a database developer. This understanding may be helpful in optimizing database performance and ensuring data integrity. Because databases often require persistence, a knowledge of saving and restoring data can be valuable.
Technology Consultant
A technology consultant advises organizations on how to use technology to meet their business goals. This course may provide you with a foundational understanding of software development using C#. You will learn programming, data structures, and software design principles. While technology consulting requires a broad understanding of various technologies, this course can contribute to your overall knowledge base, especially when advising clients on software development projects. The course's hands-on approach provides practical insights into the challenges and opportunities of software development.
Instructional Designer
An instructional designer creates learning experiences and materials for various subjects. This course may help you understand software development and programming concepts, which can be valuable if you are designing courses or training materials related to technology. You will learn object-oriented programming and modular code design. This will give them a better understanding of the subject matter. This is useful for instructional designers who wish to understand data structures, algorithms, and object-oriented programming.
Quality Assurance Engineer
A quality assurance engineer ensures the quality of software through testing and analysis. This course may provide a basic understanding of software development principles, including object-oriented programming and modular code design. This understanding can be valuable in designing effective test cases and identifying potential issues in software. Understanding the underlying code and development process will enhance your ability to perform thorough and targeted testing. You will also learn how to write modular code, which will allow you to understand the relation of one module to another.
Embedded Systems Engineer
An embedded systems engineer designs and develops software for embedded systems, such as those found in cars, appliances, and industrial equipment. While C# is not the most common language for embedded systems, this course may help you develop a foundation in programming principles and object-oriented design. You will learn data structures and algorithms, which are essential in embedded programming. While further study in languages like C or C++ is typically required, this course can serve as a stepping stone for those interested in embedded systems development.
Technical Writer
A technical writer creates documentation for software and hardware. This course may help you gain insight into the software development process and the C# language. This course is useful because you will learn about object-orieented programming, which may help you to write clear descriptions and instructions for technical documents. The course's hands-on approach might assist you to understand the challenges developers face. This approach ensures that your documentation is accurate and relevant. The course will also help you understand data serialization.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Adventures In C# Programming.
Provides a comprehensive overview of C# and .NET Core. It covers the fundamentals of the language, as well as more advanced topics such as object-oriented programming, generics, and LINQ. It's a useful reference for understanding the underlying technologies used in the course and can help you explore more advanced C# features. This book is commonly used as a textbook at academic institutions.
Provides a visually engaging and interactive introduction to C#. It uses a unique, brain-friendly approach to help you learn the language quickly and effectively. It's particularly helpful for visual learners and those who prefer a more hands-on approach. This book is more valuable as additional reading than it is as a current reference.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser