BSD Rogue unter Debian mit besserem Highscore

Etwas das ich lange Zeit für einen Bug gehalten habe enttuppe sich als Feature. Warum auch immer man das haben wollte, gut ich könnte mir eine Situation konstruieren in der das Spaß macht – die Zeiten haben sich aber geändert. Und so ändere ich das Programm eben in meine Richtung, den zum Glück ist es ja Open Source.

Aber was ist den überhaupt das Problem. Spielt man dieses BSD Rouge auf seinem Single User Betriebssystem wird der Anmeldename als Spielernamen eingesetzt und nur der Beste Highscore wird in der Top10 Liste gespeichert. Spielt ein anderer User des Systems bekommt er seinen Eintrag ebenfalls gespeichert. Bis ich aber an dieser Stelle angekommen war, hatte ich schon Stunden im C-Code verbracht um herauszufinden wo der Fehler her kommt. Des Rätsels Lösung fand sich dann nicht im QuellCode sondern in einem README File mit folgendem unscheinbaren Satz am Absatzende.

The score is keyed to winning scores, and no player may appear twice.

OK dann baue ich das eben wieder aus, und damit alle anderen weiter spielen koennen wie gewohnt, bekommt das Programm eine weiter Command Line Option. Lustig auch das gerade das in dem Changelog des Entwicklers hervorgehoben wird. Die meisten Optionen wurden entfernt, zu meinem Glück blieb die Highscore anzeigen [-s] aber drin. So konnte ich mich recht Simple an die Erweiterung machen. Alle änderungen finden sich in diesem Commit

BSD Rogue Debian Buster with HighScore for singel user

Das Leben eines C Entwicklers ist aber auch wirklich nicht einfach, welch ein Aufwand betrieben wird um eine Lösung zu finden ist enorm. Die Variable have_fun wurde von mir eingefügt.

if((!score_only) && (!have_fun) && (found_player == -1)){
  if (!name_cmp(scores[i]+15, login_name)) {
    x = 5;
    while (scores[i][x] == ' ') {
...
    }
  }
}
if ( (!have_fun) && (found_player != -1) ) {
  ne--;
  for (i = found_player; i < ne; i++) {
  (void) strcpy(scores[i], scores[i+1]);
...
  }
}

One Reply to “BSD Rogue unter Debian mit besserem Highscore”

Comments are closed.