79 lines
3.4 KiB
Markdown
79 lines
3.4 KiB
Markdown
# 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
|
||
|
||
1. Beim Start werden die Wörter aus der angegebenen Datei eingelesen und in Großbuchstaben umgewandelt.
|
||
2. 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.
|
||
3. Kann ein Wort nicht platziert werden (z. B. weil es länger als das Gitter ist), bricht das Programm mit einer Fehlermeldung ab.
|
||
4. Es öffnet sich ein Fenster mit dem Buchstabengitter, darunter steht die Liste der gesuchten Wörter.
|
||
5. 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.
|
||
|
||
```bash
|
||
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
|
||
|
||
```bash
|
||
make test && ./runTests
|
||
```
|
||
|
||
Die Tests (Framework [Unity](https://github.com/ThrowTheSwitch/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](https://www.raylib.com), 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 :)
|
||
|
||
```bash
|
||
git clone https://git.efi.th-nuernberg.de/gitea/glockma106904/Info2-Praktikum.git
|
||
```
|