Wortsalat
Ein Wortsuchspiel in C, entstanden im Praktikum Informatik 2 (TH Nürnberg). Das Programm liest Wörter aus einer Textdatei, versteckt sie zufällig horizontal oder vertikal in einem 20×20-Buchstabengitter und füllt die restlichen Felder mit zufälligen Buchstaben. Ziel ist es, alle Wörter im Gitter zu finden.
Spielablauf
- Beim Start werden die Wörter aus der angegebenen Datei eingelesen und in Großbuchstaben umgewandelt.
- Jedes Wort wird an einer zufälligen Position platziert, von links nach rechts oder von oben nach unten. Wörter dürfen sich kreuzen, wenn sie an der Kreuzung denselben Buchstaben haben.
- Kann ein Wort nicht platziert werden (z. B. weil es länger als das Gitter ist), bricht das Programm mit einer Fehlermeldung ab.
- Es öffnet sich ein Fenster mit dem Buchstabengitter, darunter steht die Liste der gesuchten Wörter.
- Sind alle Wörter gefunden, erscheint die Meldung „Congratulations! You won!“.
Bedienung
| Aktion | Wirkung |
|---|---|
| Linke Maustaste gedrückt halten und eine Linie genau über die Buchstaben eines Wortes ziehen | Wort auswählen |
| Maustaste loslassen | Auswahl prüfen: ein richtiges Wort wird im Gitter grün markiert und in der Liste durchgestrichen |
Esc oder Fenster schließen |
Spiel beenden |
hack tippen (nur mit ./wordsalad_cheats) |
Cheat-Modus ein- bzw. ausschalten: alle noch nicht gefundenen Wörter werden dunkelblau hinterlegt |
Bauen und Starten
Voraussetzung ist gcc (unter macOS reicht das Clang aus den Xcode Command Line Tools) und make.
Alle Befehle werden im Ordner Startcode/ ausgeführt; das Makefile erkennt Linux, macOS und Windows automatisch.
cd Startcode
make wordsalad
./wordsalad words.txt
| Target | Inhalt |
|---|---|
make wordsalad |
Das Spiel komplett aus dem eigenen Code |
make wordsalad_cheat |
Eigene main.c, input.c, game.c und graphicalGame+Cheas,c |
make wordsalad_initial |
Die mitgelieferte Referenzversion (libwordsalad_complete.a) |
make test |
Baut die Unit-Tests als runTests |
make clean |
Löscht Objektdateien und erzeugte Programme |
Format der Wortdatei
Die Wörter werden durch Leerzeichen, Komma, Semikolon, Tabulator oder Zeilenumbruch getrennt. Groß- und Kleinschreibung spielt keine Rolle. Beispiel (words.txt):
Yeti,Nessie Werwolf; Vampir
Monster
Hydra;Frankenstein
Ein Wort darf höchstens so lang sein wie das Gitter (20 Buchstaben).
Tests
make test && ./runTests
Die Tests (Framework Unity) prüfen das Einlesen der Wörter (readWords) und das Erzeugen des Gitters (createWordSalad).
Projektstruktur
| Datei | Inhalt |
|---|---|
main.c |
Programmstart: Datei öffnen, Wörter einlesen, Gitter erzeugen, Spiel starten |
input.c / input.h |
readWords: Wörter aus der Datei lesen, trennen und in Großbuchstaben umwandeln |
game.c / game.h |
createWordSalad: Wörter zufällig platzieren und leere Felder auffüllen |
graphicalGame.c / graphicalGame.h |
Fenster, Zeichnen und Mausbedienung mit raylib, inklusive Cheat-Modus |
unit_tests.c |
Unit-Tests |
words.txt |
Beispiel-Wortliste |
linux/, macos-*/, windows/ |
Vorkompilierte Bibliotheken (raylib und Referenzlösung) je Betriebssystem |
Repository klonen :)
git clone https://git.efi.th-nuernberg.de/gitea/glockma106904/Info2-Praktikum.git