Highscore-Liste

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,

    ich habe ein kleines Projekt am laufen, wo man über eine Waage die eigene Körperkraft messen kann.
    Dieses Projekt soll ausgestellt werden, demnach möchte ich gerne einen kleinen Wettkampf draus machen.

    Es soll eine Highscore-Liste geben, die die höchsten Punktzahlen (Kraft) anzeigt. Die Liste soll von 1-10 gehen, mit den Namen der Personen.

    In etwa so:
    Name:
    Aktueller Punktestand:

    Highscore:
    Kraft Name:
    1.
    2.
    3.
    4.
    ...

    Nur das in einer schönen Tabelle.

    Es müsste sich aber auch der Wert ständig ändern und sich selbst einordnen, also sprich wenn eine 50 kg drückt und auf Platz 1 ist und der danach auf 60 Kg drückt, dann natürlich auf Platz 1 hochrutscht.

    Ich habe bisher versucht, meine Signale die ich über einen AD-Wandler bekomme in eine Tabelle einfügen zu lassen, die ich mit "Tkinter" erstellt habe.
    Leider ohne Erfolg und Tkinter Labels kann man nicht einfach so verschieben, sodass ich dann ein unübersichtliche Oberfläche hatte.

    Habt Ihr da Ideen?

    Ich hoffe Ihr könnt mir helfen.

    gruß
    Mave

  • Die Sortierung kannst du dann ganz leicht über den SQL Query erledigen lassen.

    Die Datenbak-Struktur würde ich in etwa so anlegen: ID , timestamp , Name , Punkte

    ID wäre Auto_Increment , erhöht sich also selbstständig pro Eintrag und identifiziert einen Eintrag und dient als PRIMARY KEY.
    timestamp wäre der aktuelle Unixtimestamp von wann die Punkte sind. Diesen kannst du dann über PHP am einfachsten so formatieren wie du's gerne haben willst also egal ob d.m.Y oder m/d/Y.
    Name wäre eben der Name von demjenigen.
    Punkte die aktuellen Punkte..

    Über dein Script von der Platine brauchst du dann nur den timestamp, Name und Punkte eintragen sofern noch kein Eintrag vorhanden - wenn Eintrag schon vorhanden dann nur die Punkte des dazugehörigen Namen updaten.

    Über die Webseite lässt du dass dann ganz einfach nach Punkte sortieren, also zum Beispiel:

    SQL
    SELECT timestamp,Name,Punkte FROM Scores WHERE 1 ORDER BY Punkte DESC

    Du könntest auch für jeden Versuch einen erneuten Datenbankeintrag machen lassen sodass du eine History von demjenigen erstellen könntest, ob er sich verbessert oder verschlechtert hat. Dann also kein Update mehr sondern jedesmal einen neuen Eintrag und die Abfrage für die Webseite wäre dann für die Globale Statistik:

    SQL
    SELECT timestamp,Name,Punkte FROM Scores WHERE 1 ORDER BY Punkte DESC GROUP BY Name

    So erhälst du dann nur eine Ausgabe pro Namen


    ...oder so... :D

  • Ok, danke.

    Ich habe vorher schon etwas mit Qt gearbeitet, geht das damit auch, also kann ich da externe Signale einfügen lassen?

    Vielen Dank, für Eure Hilfe.

    Ich kann komischer Weise SQLite nicht herunterladen, es kommt die Error-Aussage: Das er mirrordirector.pasbian.org nicht finden kann.

    Einmal editiert, zuletzt von mave1887 (1. Oktober 2014 um 16:12)

  • ich habe mirrordirector.pasbian.org mit sudo apt-get install, versucht zu downloaden, da hat er mir gesagt, das er kein Paket funden konnte.

    Jetzt habe ich nach Empfehlung von meigrafd mir sqlite3 heruntergeladen, da hat er auch nicht gemeckert, allerdings finde ich die Datei jetzt nicht, sprich wo hat er sie jetzt abgelegt?

  • Also ich habe SQLITE 3 jetzt heruntergeladen und es funktioniert auch, ich werde da jetzt versuche eine Tabelle hinzuzaubern.
    Aber mir ist noch nicht ganz klar wie ich da die ausgelesenen Werte hin die Tabelle einfügen kann und das sich die Tabelle ständig aktualisiert.

  • Ich habe bisher noch nichts über Werte in SQLITE einfügen gefunden.
    Welche Doku meinst du genau?

    Und weiß jemand wie ich bei SQLITE die Spalten größer machen kann?
    Oder vielleicht sogar in eine Frame-Box erstellen kann?
    Danke.

    import sqlite3

    connection = sqlite3.connect('cddb.db')
    cursor = connection.cursor()

    cursor.execute("""
    CREATE TABLE Highscore (
    Platz integer primary key autoincrement,
    Name varchar(30),
    Punktzahl varchar(30)
    )""")


    cursor.execute("INSERT INTO Punktzahl VALUES (null, ...


    connection.commit()
    cursor.close()
    connection.close()

    Das ist mein Quelltest für´s SQLITE und wenn ich aus dem Tutorial, was ich vorher gemacht habe, das richtig verstanden habe, ist der Befehl:
    cursor.execute("INSERT INTO Punktzahl VALUES (null, ...

    zum einfügen eines Wortes, oder der Artiges.
    Also gehe ich jetzt mal davon aus, das ich da meine Werte einfügen lassen kann, oder?
    Falls ja, wie? :D
    Danke.

    Einmal editiert, zuletzt von mave1887 (2. Oktober 2014 um 15:10)

  • Nope, UPDATE wird in deiner verlinkten Doku nicht weiter beschrieben, dbv ;)

    Aber man kann das problemlos von anderen SQL UPDATE's ableiten, wobei er wie gesagt nicht unbedingt updaten muss sofern er eine Legende der einzelnen Benutzer anzeigen lassen möchte - beispielsweise durch anklicken des Namen's in der Tabelle woraufhin dann alle bisherigen Werte und ein entsprechender Graph angezeigt werden würde, um zu sehen ob derjenige sich verbessert oder verschlechtert hat :D


    Ich war mal so frei und hab etwas gebastelt woran ihr euch orientieren könnt

    Und zwar erstellt man über ein python Script eine sqlite3 Datenbankdatei - wobei die Tabelle nur erstellt wird falls noch nicht vorhanden - und füllt diese mit dummy Werten:

    Spoiler anzeigen

    Nachdem das Python Script ein mal ausgeführt wurde müssen wir nun sicherstellen das der WebServer Benutzer Leserechte auf diese Datei hat. Das erreichen wir am einfachsten wenn wir den Owner (also Besitzer) auf ihn ändern:

    Code
    chown www-data:www-data /var/scores.db

    Nun erstellen wir eine PHP Datei zum Anzeigen der Werte, im jeweiligen Verzeichnis des WebServers ( /var/www/ :(

    Spoiler anzeigen

    Sieht vielleicht etwas kompliziert aus, bietet aber eine sehr flexible Anzeige der Highscores und der Möglichkeit die Sortierung zu ändern.
    Klickt man den Namen an werden einem nur dessen Stats angezeigt

    Wie das PHP Script aussieht könnt ihr euch hier angucken: http://RaspberryPI.RoXXs.org/Scores/scores.php


    ...is also eigentlich ganz einfach :fies: :angel:


    PS: Leider vermurkst das Forum die HTML Special Characters (vorallem der Pfeile), deshalb hab ich die Datei auch noch mal an den Beitrag gehängt..

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!