Files

79 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```