Spieleprojekt in C / PDCurses, Probleme?! (Logbuch)

Diskussion zum Thema Programmierung unter DOS (Intel x86)
Benutzeravatar
darktrym
LAN Manager
Beiträge: 207
Registriert: So 5. Jan 2014, 10:59
Wohnort: -D-

Re: Spieleprojekt in C / PDCurses, Probleme?! (Logbuch)

Beitrag von darktrym »

Aber nicht mit curses! Curses ist schon so etwas schwierig wenn man vergleicht was conio schon damals konnte.
Benutzeravatar
matze79
DOS-Gott
Beiträge: 7910
Registriert: So 9. Sep 2012, 20:48

Re: Spieleprojekt in C / PDCurses, Probleme?! (Logbuch)

Beitrag von matze79 »

Naja aber was will man mit Platform abhaengigen Mist ? :)

Allegro duerfte noch gehen das gibts fuer DOS/Windows/Linux.
Ich hab angefangen alles neu zu schreiben und zu vereinfachen.
https://www.shadowcircuit.de - Die kleine Community rund um Retro Computing
https://www.retroianer.de
Benutzeravatar
darktrym
LAN Manager
Beiträge: 207
Registriert: So 5. Jan 2014, 10:59
Wohnort: -D-

Re: Spieleprojekt in C / PDCurses, Probleme?! (Logbuch)

Beitrag von darktrym »

Keine Ahnung ob SDL unter DOS brauchbar ist, ist aber sicher die Zukunft. Ich kenn eigentlich nur Meka was noch auf Allegro setzt.
wobo
DOS-Guru
Beiträge: 613
Registriert: So 17. Okt 2010, 14:40

Re: Spieleprojekt in C / PDCurses, Probleme?! (Logbuch)

Beitrag von wobo »

darktrym hat geschrieben:Keine Ahnung was du hören willst, kenne nicht die Richtung wohin dein Programm gehen soll, deshalb etwas zum Code. Vielleicht als Inspiration, schau dir mal Apogee Kroz an(ist in TP geschrieben).

Kommentare meinerseits:
Makefile:
rm ist kein Windows Befehl, entweder machst du pro Architektur eine Makefile oder verwendet den dafür vorgesehen Befehl(make -f Makefile.win bzw. del)
Optimierungem sind wenn es kein besonderen Grund gibt nicht sinnvoll.
Explizite Auflisten der Objektdateien wird bei steigender Anzahl ungünstig, guck mal in Wikipedia vielleicht findest du was.

Formatierung(sicher viel kosmetischer Natur) und kleine Dinge:
Leerzeichen zwischen include und Bezeichner.
Einrückungen sind nicht konsistent.
Nur global sichtbares kommt in eckige Klammern, sonst in doppelte Hochkommas, einige Compiler werden sich sicher darüber beschweren.
Reduzier dein globales Wissen, wird ohnehin nicht gebraucht in dem Umfang.
enemy(): Ich bin sicher einige Fälle schließen sich gegenseitig aus, kein Grund das abermals zu überprüfen. Gilt auch für main().
enemy_position: Konstante Ausdrücke bitte auch als solche markieren wie "150".
Gibts einen besonderen Grund warum du da kein Prä-/Postinkrement verwendet hast? Generell ist Präinkrement vorzuziehen.
Wenn du später nochmals dran arbeiten willst könnten (Doxygen-)Kommentare nie schaden, wenigstens in den Header Dateien. Es ist guter Stil die Kommentare obenhalb des zu schreibenden Codes zu setzen, um nicht über die 79/80 Zeichen pro Zeile zu kommen. Eine Leerzeile am Ende jeder Datei.
Du kannst auch mal ein void als Funktionsargument nutzen, wenn's keine Parameter braucht und Variablen zum Schutz einer weiteren Inkludierung ist es geläufiger den Dateinamen in Großbuchstaben mit Unterstrich statt Komma zu versehen. Kann bei globals.h auch nicht schaden.
Wenn initcolor so ein Muster hat, kann man auch gleich eine Schleife nutzen und die Paare in den Header verlagern. Waldcollision ist kein dt. Wort, selbst als Neologismus mit Rechtschreibfehler.
Räum mal deine main() auf: Grafikinit., Spielinit. Gameloop. Deine Gameloop kann auch mit break verlassen werden, dann hats auch einen schönen Platz für Aufräumen und das exit() kann entfernt werden. Dein return 0 ist zwar sinnlos, schadet aber nicht, schöner schauts mit einem return EXIT_SUCCESS aus.

PS: Getestet auf Windows 7.
Interessante Hinweise! Warum soll man denn sich auf 79/80 - Zeichen pro Zeile beschränken (beim modernen Programmieren?). Ich mache das zwar eh immer, weil ich allerhöchstens TP 7.0 unter DOS benutze und ich mich deswegen immer auf 72 Zeichen (i.d.R.) beschränke. Aber bei modernen IDEs auch?
Benutzeravatar
darktrym
LAN Manager
Beiträge: 207
Registriert: So 5. Jan 2014, 10:59
Wohnort: -D-

Re: Spieleprojekt in C / PDCurses, Probleme?! (Logbuch)

Beitrag von darktrym »

Historisch stammt aus der Zeit wo nur 80 Zeichen pro Zeile draufpassten, nicht nur auf dem Monitor, auch bei Druckern
Heute kann man das mehr als Indiz sehen, dass der Code zu verschachelt ist, mehr Funktionen zur Dekomposition braucht. Zudem erschweren überbreite Zeilen den Lesefluss.
Selbst moderne Sprachen wie Python haben das übernommen. Bei Java streitet man sich darüber, da die Sprache ganz schon geschwätzig ist.
Benutzeravatar
matze79
DOS-Gott
Beiträge: 7910
Registriert: So 9. Sep 2012, 20:48

Re: Spieleprojekt in C / PDCurses, Probleme?! (Logbuch)

Beitrag von matze79 »

Spiel grad wieder damit rum und Versuche den Code auf Borland Turbo C++ 3.1 zum compilieren zu bewegen.

pdcurses läuft schon.

Allerdings hab ich ein Problem mit meinen Globals.
Kann das Turbo C++ 3.1 nicht ?

Turbo Linker gibt mir jede Menge Fehler dieser Art:
Error: _forest defined in module main.c is duplicated in module enemy.c

Das bringt er mir bei allen globalen Variablen.
Diese sind doch in globals.h definiert.

Grüsse

Matthias
https://www.shadowcircuit.de - Die kleine Community rund um Retro Computing
https://www.retroianer.de
Antworten