Simon Painter
Down the Oregon Trail with Functional C#
#1about 5 minutes
Core principles of the functional programming paradigm
Functional programming is a declarative style emphasizing immutability, pure functions, and expressions over statements to write more testable and robust code.
#2about 2 minutes
Applying the umbra and penumbra metaphor to C#
Achieve nearly pure functional code by isolating necessary compromises, like I/O, to the outer edges (penumbra) of the application.
#3about 3 minutes
The historical context behind the Oregon Trail game
The game is based on the 19th-century migration of settlers in covered wagons from the US East Coast to Oregon.
#4about 7 minutes
How BASIC and time-sharing enabled interactive games
The creation of the user-friendly BASIC language and time-sharing terminals at Dartmouth University led to a boom in early computer games.
#5about 4 minutes
Analyzing the original 1975 Oregon Trail BASIC code
The original game's logic is built on line numbers, GOTO statements, and reversed IF conditions, which requires careful translation.
#6about 11 minutes
Handling impure user input with discriminated unions
Manage the side effects of console input by wrapping results in a `Maybe` type, a discriminated union representing `Something`, `Nothing`, or `Error` states.
#7about 5 minutes
Replacing indefinite loops with a functional helper
Avoid imperative `while` loops for input validation by using a recursive `iterate until` helper function that encapsulates the looping logic.
#8about 2 minutes
Structuring the main game loop with a monadic flow
Chain game events together using a `continue game` extension method that checks the game state before executing the next function, simplifying the main loop.
#9about 1 minute
Recreating the time-based hunting mini-game functionally
Implement the time-sensitive "type BANG" mechanic by injecting a time service to enable pure, testable functions for calculating shot accuracy.
#10about 3 minutes
Refactoring complex conditional logic with switch expressions
Replace the original game's convoluted, nested IF statements for rider encounters with a clean and readable C# switch expression.
#11about 3 minutes
Exploring other classic text-based games to remake
Consider other classic text-based games like Star Trek, Doctor Who, and Zork as potential future projects for functional programming exercises.
Related jobs
Jobs that call for the skills explored in this talk.
Dennemeyer Group
Hesperange, Luxembourg
Intermediate
Senior
.NET
Structured Query Language (SQL)
Matching moments
02:49 MIN
Using AI to overcome challenges in systems programming
AI in the Open and in Browsers - Tarek Ziadé
05:26 MIN
Using AI prompts to rebuild a classic 8-bit game
WeAreDevelopers LIVE – Frontend Inspirations, Web Standards and more
02:33 MIN
Why you might not need JavaScript for everything
WeAreDevelopers LIVE – You Don’t Need JavaScript, Modern CSS and More
08:07 MIN
Exploring modern JavaScript performance and new CSS features
WeAreDevelopers LIVE – AI, Freelancing, Keeping Up with Tech and More
03:31 MIN
The value of progressive enhancement and semantic HTML
WeAreDevelopers LIVE – You Don’t Need JavaScript, Modern CSS and More
05:54 MIN
Building a JavaScript generator for Cistercian numerals
WeAreDevelopers LIVE – AI, Freelancing, Keeping Up with Tech and More
03:16 MIN
Improving the developer feedback loop with specialized tools
Developer Time Is Valuable - Use the Right Tools - Kilian Valkhof
09:38 MIN
Technical challenges of shipping a cross-platform browser
Developer Time Is Valuable - Use the Right Tools - Kilian Valkhof
Featured Partners
Related Videos
F#, path to functional enlightenment
Onur Gumus
A Guide To Functional Programming
Jemima Abu
Functional Programming in C++
Jonathan Müller
Exploring the Latest Features of .NET and C# by Building a Game
Rainer Stropek
Java with a Clojure mindset
Dan Lebrero
Creating games to make the web fun again
Nolan Royalty
WeAreDevelopers LIVE - "Fun and games - and all that comes with it", Back to BASIC & more
Chris Heilmann, Daniel Cranney & Johanna Pirker
Coffee with Developers - Andrew Taylor - CODE100 Manchester
Andrew Taylor
Related Articles
View all articles



From learning to earning
Jobs that call for the skills explored in this talk.

Code Healers LLC
Hinesville, United States of America
Remote
€30-40K
Intermediate
Senior
.NET
React
JavaScript
+2

Visonum GmbH
Remote
Junior
Intermediate
React
Redux
TypeScript


Universally Speaking
Wyboston, Chawston and Colesden, United Kingdom
JIRA
Microsoft Office

Frontier Developments plc
Cambridge, United Kingdom
API
C++
Adobe Analytics
Continuous Integration

Datascope Recruitment
Remote
Intermediate
C++
Unreal Engine
Adobe Analytics

Datascope Recruitment
Remote
Intermediate
C++
Unreal Engine
Adobe Analytics

