Begrenzte Zeit für Eingabe

Schnelle objektorientierte, kompilierende Programmiersprache.
nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Begrenzte Zeit für Eingabe

Beitrag von nufan » So Jul 20, 2008 8:49 pm

Hallo!
Muss mal die Anzahl der Beiträge im Forum erhöhen ;)
Ich wollte gerade ein kleines Spiel schreiben, bei dem man eine Linie steuert, damit sie nicht an den Rand eines Bereiches kommt (sprich SNAKE :D ). Nur hab ich ein Problem mit der Eingabe.
Man soll in einer bestimmten Zeitspanne (z.B, 1 Sekunde) eine (Pfeil-)Taste drücken. Danach bewegt sich die Schlange weiter. Zuerst hab ich es mit sleep () versucht, aber da kann man nur eine Zahl für die Zeit, jedoch keine Funktion übergeben.
Gibt es eine andere Funktion, mit der man dieses Problem lösen kann?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Begrenzte Zeit für Eingabe

Beitrag von Xin » So Jul 20, 2008 9:20 pm

Welche GUI verwendest Du?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Begrenzte Zeit für Eingabe

Beitrag von Dirty Oerti » So Jul 20, 2008 10:27 pm

Ich würde dir dazu raten, das Ganze mit SDL zu machen.
Dort kannst du auf Tastendrücke warten und hast auch zusätzlich einen Timer.
Wenn du die beiden Funktionen gut kombinierst, dann hast du deine Lösung.

SDL heißt im Übrigen nicht, dass du auch die Grafikausgabe über SDL laufen lassen musst.

MfG
Daniel
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Begrenzte Zeit für Eingabe

Beitrag von nufan » Mo Jul 21, 2008 12:37 pm

Xin hat geschrieben:Welche GUI verwendest Du?
Keines, nur die Borland IDE.
Dirty Oerti hat geschrieben:Ich würde dir dazu raten, das Ganze mit SDL zu machen.
Ich wollte es eigentlich nur mit einfachen Befehlen schreiben. Es soll ja nichts grafisch aufwändiges werden. Nur ein paar ASCII-Zeichen.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Begrenzte Zeit für Eingabe

Beitrag von Dirty Oerti » Mo Jul 21, 2008 12:56 pm

dani93 hat geschrieben:
Dirty Oerti hat geschrieben:Ich würde dir dazu raten, das Ganze mit SDL zu machen.
Ich wollte es eigentlich nur mit einfachen Befehlen schreiben. Es soll ja nichts grafisch aufwändiges werden. Nur ein paar ASCII-Zeichen.
SDL heißt ja auch nicht, dass du SDL zur Grafikausgabe verwenden musst.
Du kannst trotzdem per ASCII-Zeichen ausgeben.
Du kannst Teilsysteme (Timer, Keyboard) verwenden. :)

MfG
Daniel
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Begrenzte Zeit für Eingabe

Beitrag von fat-lobyte » Mo Jul 21, 2008 4:44 pm

dani93 hat geschrieben:
Xin hat geschrieben:Welche GUI verwendest Du?
Keines, nur die Borland IDE.
Dirty Oerti hat geschrieben:Ich würde dir dazu raten, das Ganze mit SDL zu machen.
Ich wollte es eigentlich nur mit einfachen Befehlen schreiben. Es soll ja nichts grafisch aufwändiges werden. Nur ein paar ASCII-Zeichen.
Sorry, aber das wird leider nichts.
Die C- Bibliothek hat keine funktionen, mit der man Pfeiltasten einlesen Könnte und auch keine, mit der man ein Timeout von Tastaturabfragen implementieren könnte.
Es gibt wie gesagt nur den Weg über externe Bibliotheken, aber da werden dir die anderen bestimmt weiterhelfen können.
Haters gonna hate, potatoes gonna potate.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Begrenzte Zeit für Eingabe

Beitrag von nufan » Mo Jul 21, 2008 4:53 pm

Die C- Bibliothek hat keine funktionen, mit der man Pfeiltasten einlesen Könnte und auch keine, mit der man ein Timeout von Tastaturabfragen implementieren könnte.
Nene, ne eigene Funktion nicht. Ich hab schon ein kleines Tic-Tac-Toe geschrieben, wo man mit Pfeiltasten das Feld auswählen kann. Pfeiltasten haben den ASCII 0. Nach der Eingabe muss man sie aus dem Speicher holen und kann den Keycode prüfen (rauf 72, runter 80, links 75, rechts 77). Das sieht dann so aus:

Code: Alles auswählen

richtung=getch ();

if (richtung==0)
  richtung=getch ();

if (richtung==72)
  printf ("rauf");

else if (richtung==80)
  printf ("runter");

else if (richtung==75)
  printf ("links");

if (richtung==77)
  printf ("rechts");
Sorry, wenn ich jetzt kompletten Blödsinn geschrieben habe, aber es funktioniert.

Wens interessiert, hier der Code für das Spiel:
Tic-Tac-Toe
Achtung Windows only! :( Außer es macht sich jemand die Mühe alle getch () und clrscr () zu entfernen.
Zuletzt geändert von nufan am Mo Jul 21, 2008 4:56 pm, insgesamt 1-mal geändert.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Begrenzte Zeit für Eingabe

Beitrag von Dirty Oerti » Mo Jul 21, 2008 4:54 pm

Aha :)


Trotzdem: Wie schon mehrfach gesagt kannst du mit der SDL mehr als nur Grafik anzeigen.
Es gibt bestimmt bessere/kleinere/schnellere Bibliotheken für dein Problem.
Aber mit der SDL geht's auf jedenfall und damit sollte es auch kein allzugroßes Ding werden, dass zu realisieren.

Aber wenn du das anders auch hinbekommst... :)

:)

MfG
Daniel
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Begrenzte Zeit für Eingabe

Beitrag von fat-lobyte » Mo Jul 21, 2008 4:57 pm

dani93 hat geschrieben: Achtung Windows only! :( Außer es macht sich jemand die Mühe alle getch () und clrscr () zu entfernen.
*lol*, ich denke dann würde das Spiel nicht funktionieren :-)
getch() gibts nur unter Windhose.
Also so wies aussieht hat dein Avatar aber nichts mit Plattformübergreifender Programmierung zu tun, oder?

Für die nachwelt noch dein Avatar:
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Haters gonna hate, potatoes gonna potate.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Begrenzte Zeit für Eingabe

Beitrag von nufan » Mo Jul 21, 2008 4:58 pm

Dirty Oerti hat geschrieben: Aber wenn du das anders auch hinbekommst... :)
Das löst das Problem mit den Tasten, aber nicht mit dem Zeitlimit. Welche Dateien muss ich jetzt herunterladen, und wo genau entpacken/installieren?
Zuletzt geändert von nufan am Mo Jul 21, 2008 5:04 pm, insgesamt 1-mal geändert.

Antworten