Writing Practice, but Bad is a minimalist, console-based typing practice application written in C#. It challenges the user to type random words letter by letter with strict accuracy. The project combines basic typing mechanics with custom audio feedback inspired by the iconic sound design of the classic Dreamcast game Jet Set Radio (also known as Jet Grind Radio in some regions).
The name reflects its deliberately unforgiving nature: it is meant to serve as typing practice, yet it punishes mistakes harshly — resetting progress completely on every error — turning what could be a relaxing exercise into a frustrating (and oddly addictive) challenge.
This application draws heavy inspiration from the energetic, graffiti-filled world and unique audio aesthetic of Jet Set Radio (Sega, 2000/2001). In the game, characters skate through vibrant Tokyo-inspired streets while a dynamic soundtrack plays, and sound effects punctuate every action.
Here, each correct keystroke plays one of a sequence of short WAV files (named jetset-0.wav, jetset-1.wav, ..., jetset-9.wav), mimicking the layered, funky, hip-hop influenced sound bites that could feel like part of a Jet Set Radio mix. An error triggers a distinct failure sound (jetset-erro.wav), giving immediate and satisfying (or punishing) feedback — just like hearing a police siren or a missed trick in the original game.
The result is a typing trainer that feels more like a rhythm-based mini-game than a conventional typing exercise.
- Random word generation from a fixed list of technology-related terms (e.g., "software", "hardware", "internet", "terminal", "variavel")
- Letter-by-letter input — the program reads one key at a time and validates immediately
- Position-based audio feedback: each correct position (0 to 9) plays a different WAV file from the
jetset/folder - Strict error handling: any wrong key immediately plays an error sound, resets the current attempt to zero, and shows a red warning message
- Visual progress indicator: shows exactly which letters have been correctly typed so far, updated in real time on the same console line
- Clean console management: uses cursor positioning to avoid text "climbing" or overlapping, keeping the interface readable
- Color-coded feedback: green text on successful completion, red on errors
- Infinite gameplay loop: after finishing a word, the game immediately starts a new one — no menu, no exit (close the window/console to stop)
- The program clears the console and displays the target word in uppercase (e.g., SOFTWARE).
- It shows a prompt like
→and waits for input. - For each keystroke:
- If correct → plays the corresponding Jet Set Radio-inspired sound for that position, adds the letter to the visible progress string, and moves forward.
- If incorrect → plays the error sound, clears the progress, resets the position counter to 0, prints a red "❌ Errou! Começando de novo..." message, and restarts the attempt.
- When all letters are correctly typed → shows the full word in green with a checkmark (✓), congratulates the user, and waits for any key press before loading the next random word.
- Language: C# (.NET Console Application — compatible with .NET 6, 7, 8+)
- Audio:
System.Media.SoundPlayerclass to play synchronous WAV files (PlaySync()ensures sounds finish before continuing) - Input:
Console.ReadKey(true)to capture individual keys without automatically printing them to the screen - Console UI: Manual control via
Console.SetCursorPosition(),Console.CursorTop, and writing spaces to clear lines - File system:
Directory.GetFiles()to load all.wavfiles from thejetset/folder and sort them alphabetically - Randomization:
System.Randomfor word selection - Encoding:
Console.OutputEncoding = System.Text.Encoding.UTF8to support emojis and special characters
Important: You do not need to download any additional libraries, NuGet packages, or external tools to run this project. Everything uses only the built-in .NET libraries.
To run:
- Clone the repository:
git clone https://github.com/arthurzero210/writing-practice-but-bad.git cd writing-practice-but-bad