game.c implementiert und getestet, sollte jetzt immer kompilieren :)
This commit is contained in:
1 parent
f0bb20bab0
commit
0344fc3566
6 files changed
+745
-18
No files matched your search
@@ -1,8 +1,78 @@
|
||||
# setup remote
|
||||
# Wortsalat
|
||||
|
||||
## in VS Code
|
||||
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`):
|
||||
|
||||
```
|
||||
git remote add origin https://git.efi.th-nuernberg.de/gitea/glockma106904/Info2-Praktikum.git
|
||||
git push -u origin main
|
||||
```
|
||||
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
|
||||
```
|
||||
Reference in new issue
Block a user