Punktezählprogramm (Sport)

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Exxter
Beiträge: 385
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Punktezählprogramm (Sport)

Beitrag von Exxter » 08.10.2012 22:34:51

Hallo,

gibt es ein Programm, welches ausgelöst mit einem Tastendruck die Punkte eines (Tischtennis-)spiels aufzeichnet? Also sprich, Spieler 1 hat einen Punkt und drückt auf dem Notebook Taste(n) xyz damit ihm ein Punkt angerechnet wird. Das Display zeigt an: Punktestand : Punktestand.

Sowas hier:
http://www.sport-rundum.de/Tischtennis/ ... CORER.html

nur für den PC? Gibt es sowas?

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Punktezählprogramm (Sport)

Beitrag von Cae » 08.10.2012 23:05:05

Code: Alles auswählen

#!/bin/zsh

a=0; b=0;

while read -s -k 1 char; do
	case "$char" in
		j) ((a++)); ;;
		k) ((b++)); ;;
		d) ((a--)); ;;
		f) ((b--)); ;;
		*) continue 2; ;;
	esac
	clear; echo -e '\n\n\n';
	figlet -tc -- "$a : $b";
done
Einschränkungen: figlet ist in Squeeze in non-free. Das Skript benötigt die Zsh (bis mir jemand sagt, wie man ein einzelnes Zeichen einlesen kann). figlet kann unter Umständen zu klein sein.
Bedienung: Mit j und k werden Spieler A (links) und B (rechts) inkrementiert, falls falsch getippt wurde, kann man mit d für A und f für B wieder dekrementieren.

Gruß Cae

--Edit: figlet bekommt -t (mittig im Terminal) und -- (nachfolgender negativer A-Wert ist kein Syntaxfehler mehr)
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: Punktezählprogramm (Sport)

Beitrag von r900 » 08.10.2012 23:40:16

Cae hat geschrieben:Das Skript benötigt die Zsh (bis mir jemand sagt, wie man ein einzelnes Zeichen einlesen kann).
In bash einfach nur "-n 1" anstatt "-k 1" bei read. Dass es sowas wie figlet gibt hätte ich gar nicht erwartet.

Da kommt mir gerade eine Idee. Es gibt doch auch diverse Programme die Text in eine Grafikdatei umwandeln können. Damit ließe sich sowas doch auch recht einfach realisieren.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Punktezählprogramm (Sport)

Beitrag von Cae » 09.10.2012 00:27:29

Okay, dann hier die Bash-Version

Code: Alles auswählen

#!/bin/bash

a=0; b=0;

while read -sn 1 char; do
	case "$char" in
		j) a=$((a+1)); ;;
		k) b=$((b+1)); ;;
		d) a=$((a-1)); ;;
		f) b=$((b-1)); ;;
		*) continue 2; ;;
	esac
	clear; echo -e '\n\n\n';
	figlet -tc -- "$a : $b";
done
Damit braucht man nur noch Debianfiglet zusätzlich.

Gruß Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Exxter
Beiträge: 385
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Re: Punktezählprogramm (Sport)

Beitrag von Exxter » 09.10.2012 09:34:05

Ist ja genial, genau sowas habe ich gesucht, das läuft sogar auf dem ältesten Notebook, danke! :o
Cae hat geschrieben:figlet kann unter Umständen zu klein sein.
Heißt das, es geht definitiv nicht größer? Ich habe schon die manpage durchgelesen und einiges probiert, zB. -f big für die Schriftart "big", aber ich bekomme die Schrift nicht größer. Gibt es eine Möglichkeit, dass die Schrift so groß ist wie das Terminal?

Edit: habe die Schriftart "doh" gefunden, mit der sind die Zahlen deutlich größer. Das sollte reichen. Danke nochmal 8)
Zuletzt geändert von Exxter am 09.10.2012 10:08:32, insgesamt 1-mal geändert.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Punktezählprogramm (Sport)

Beitrag von Cae » 09.10.2012 10:07:50

Man müsste FIGlet eine andere Font vorsetzen, die halt größer ist. Eine Auswahl findet man unter [1], such' dir eine passende aus und lade sie herunter. Wobei die Kombination von groß und lesbar wohl nicht so verbreitet ist, aber "doh" ist zumindest etwas größer. Das sieht dann so aus:

Code: Alles auswählen

figlet -tcf doh.flf -- "$a : $b";
Im Zweifel lässt du die Standardfont und stellst die Schriftgröße im Terminal hoch (xterm kann das on the fly über Strg+Rechtsklick). Falls du Framebuffer verwendest, geht das wohl nicht so einfach.

Gruß Cae

[1] http://www.jave.de/figlet/fonts/overview.html
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Exxter
Beiträge: 385
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Re: Punktezählprogramm (Sport)

Beitrag von Exxter » 09.10.2012 10:14:18

Hehe, danke, genau die nutze ich und ich denke, das reicht zu so.

mullers

Re: Punktezählprogramm (Sport)

Beitrag von mullers » 09.10.2012 10:33:55

Wenn Du übrigens Farbe willst, ginge auch Debiantoilet
Dann wäre das beispielsweise so zu ändern, figlet statt toilet:

Code: Alles auswählen

toilet -f smmono9 -t --filter gay -- "$a : $b"; 

Exxter
Beiträge: 385
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Re: Punktezählprogramm (Sport)

Beitrag von Exxter » 09.10.2012 10:57:46

Wow, sieht ja fetzig aus! Danke dir.

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: Punktezählprogramm (Sport)

Beitrag von r900 » 09.10.2012 13:20:25

Noch eine andere Lösung.. so manchmal sieht man doch den Wald vor lauter Bäumen nicht. Debianconky-all läuft bestimmt bei vielen als Systemmonitor auf dem Desktop. Mit dem lässt sich das auch realisieren.

Das Skript schreibt dann den aktuellen Punktestand in eine Datei und conky zeigt den Inhalt (die letzte Zeile) an. Das sieht dann z.B. so aus (lässt sich natürlich noch verschönern):
Bild

Skript:

Code: Alles auswählen

#!/bin/bash
configfile=$HOME/.conkyrc_scores
scores=$HOME/scores.txt
a=0; b=0;

echo "$a : $b" >> "$scores"
conky -c "$configfile" -q &
pid=$!

while read -s -n 1 char; do
   case "$char" in
      j) ((a++)); ;;
      k) ((b++)); ;;
      d) ((a--)); ;;
      f) ((b--)); ;;
      R) a=0; b=0; ;;
      Q) kill $pid; exit; ;;
      *) continue; ;;
   esac
   echo "$a : $b" >> "$scores"
done
und .conkyrc_scores

Code: Alles auswählen

use_xft                 yes
xftfont                 Sans:size=40
update_interval         0.2
own_window              yes
minimum_size            1200
own_window_hints        above
own_window_colour       black
double_buffer           yes
alignment               top_middle
default_color           white

TEXT
${alignc}Spieler 1                Spieler 2
${font Sans:size=240}${alignc}${tail $HOME/scores.txt 1}$font
Wichtig ist dass man nach dem Starten des Skripts das Terminal anklickt, damit es wieder den Fokus bekommt. Sonst landen die Tastatureingaben bei conky und der kann damit nichts anfangen. Conky bleibt aber im Vordergrund da "own_window_hints above" gesetzt ist.
Zuletzt geändert von r900 am 09.10.2012 14:58:29, insgesamt 1-mal geändert.

Exxter
Beiträge: 385
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Re: Punktezählprogramm (Sport)

Beitrag von Exxter » 09.10.2012 13:51:22

krass! Gleich mal ausprobiert, funktioniert einwandfrei, in allen Größen und Farben. Da kann man ein Fenster öffnen das den ganzen TFT komplett ausfüllt, genial, danke! 8)

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: Punktezählprogramm (Sport)

Beitrag von r900 » 09.10.2012 15:08:44

Hab da noch ein alignc beim Punktestand gesetzt und minimum_size eingefügt. Wie man Schriftart und -größe verändert ist denke ich offensichtlich. Alles weitere ist im conky manual zu finden .. :)

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: Punktezählprogramm (Sport)

Beitrag von r900 » 09.10.2012 17:06:18

So ganz gefiel es mir doch noch nicht, hier die fertige Version:

Code: Alles auswählen

#!/bin/bash
configfile=$HOME/.conkyrc_scores
scores=$HOME/scores.txt
a=0; b=0; am=0; bm=0

# Hier kann man am Ausgabeformat basteln. Wenn es stört dass die scores.txt
# immer größer wird, beim ersten echo die Umleitung von ">>" auf ">" ändern.
printscore(){
   echo "\${alignc}$player1 (j)               $player2 (k)" >> "$scores"
   echo "\$color1\${alignc}$am           $bm\$color" >> "$scores"
   echo "\${font Sans:size=240}\${alignc}$a : $b\$font" >> "$scores"
}

read -p 'Spieler 1: ' player1; [ -n "$player1" ] || player1='Spieler 1'
read -p 'Spieler 2: ' player2; [ -n "$player2" ] || player2='Spieler 2'

printscore
conky -c "$configfile" -q &
pid=$!

while read -s -n 1 char; do
   case "$char" in
      j) ((a++)) ;;
      k) ((b++)) ;;
      J) ((a--)) ;;
      K) ((b--)) ;;
      r) a=0; b=0 ;;
      N) ((a > b)) && ((am++)); ((a < b)) && ((bm++)); a=0; b=0 ;;
      R) a=0; b=0; am=0; bm=0 ;;
      Q) kill $pid; exit ;;
      *) continue ;;
   esac
   printscore
done
Fragt jetzt auch nach Namen der Spieler und zählt die gewonnenen Spiele. Die passende .conkyrc_scores:

Code: Alles auswählen

use_xft                 yes
xftfont                 Sans:size=40
update_interval         0.2
own_window              yes
minimum_size            1200
own_window_hints        above
own_window_colour       black
double_buffer           yes
alignment               top_middle
default_color           white
color1                  red
color2                  grey

TEXT
${execp tail -3 $HOME/scores.txt}


$color2${font Sans:size=20}${alignc}Next game (N)   Reset game (r)   Reset match (R)   Quit (Q)
$alignc${time %a, %d.%m.%Y  %H:%M}$font$color
Sieht bei mir dann so aus:
Bild
Viel Spaß damit.

Exxter
Beiträge: 385
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Re: Punktezählprogramm (Sport)

Beitrag von Exxter » 10.10.2012 10:42:30

cool! Danke dir! 8O

Benutzeravatar
Meillo
Moderator
Beiträge: 9267
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Punktezählprogramm (Sport)

Beitrag von Meillo » 11.10.2012 12:40:34

r900 hat geschrieben: Sieht bei mir dann so aus:
Bild
Nett, und auch danke fuer's zur Verfuegung stellen.


[OT]

Nur frage ich mich was da fuer ein Spiel gespielt wird bei dem rms am verlieren ist. Go wird es kaum sein denn da wuerde er sicher gegen Linux gewinnen. Kannst du uns da vielleicht aufklaeren? Oder weiss sonst jemand mehr?

;-)
Use ed once in a while!

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: Punktezählprogramm (Sport)

Beitrag von r900 » 11.10.2012 13:59:01

Meillo hat geschrieben:Nur frage ich mich was da fuer ein Spiel gespielt wird bei dem rms am verlieren ist. Go wird es kaum sein denn da wuerde er sicher gegen Linux gewinnen. Kannst du uns da vielleicht aufklaeren? Oder weiss sonst jemand mehr?
Endlich bemerkt jemand meine subtile Stichelei! :D

Keine Sorge, das Spiel ist ja noch nicht vorbei und rms holt auf. Vielleicht benutzen wir bald alle den Hurd. Das wäre doch mal eine Aktion, mit dem Release von Wheezy steigen die Benutzer des df geschlossen auf Debian GNU/Hurd um. :wink:

Antworten