Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Tastenwiederhohlrate modifizieren

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
frebas



Anmeldungsdatum: 20.06.2008
Beiträge: 245

BeitragVerfasst am: 24.06.2008, 18:14    Titel: Tastenwiederhohlrate modifizieren Antworten mit Zitat

Kann man die Tasten wiederhohlrate mit freebasic einstellen?
Wenn nicht nehme ich multikey aber das wäre in meiner verwendung viel rechenintensiver.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 24.06.2008, 19:14    Titel: Antworten mit Zitat

das geht höchstens systemweit per winapi und ist deswegen nicht zu empfehlen. Multikey ist auch nicht rechenintensiver als Inkey. Genau genommen ist es theoretisch sogar weniger rechenintensiv. Wahrscheinlich hast du Multikey in einer DO...LOOP-Schleife stehen, die einfach so ohne unterbrechung durchrattert und deswegen 100% Systemlast erzeugt. Deswegen immer ein "SLEEP 1" einbauen!
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
frebas



Anmeldungsdatum: 20.06.2008
Beiträge: 245

BeitragVerfasst am: 24.06.2008, 20:31    Titel: Antworten mit Zitat

nein, ich steuere damit eine drehbewegung und je mehr fps sind desto kürzer ist die bewegung pro frame und diese berechnung ist rechenintensiver, deshalb habe ich auch geschrieben dass es in meiner verwendung rechenintensiver ist.

Ich habe es mit multikey gemacht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 25.06.2008, 12:22    Titel: Antworten mit Zitat

Hi,
wenn jeder Tastendruck nur einen Schritt bewirken soll, kann man auch auf das loslassen der Taste warten
Code:
If MultiKey(fb.sc_e) Then
  Do 'warte bis Taste losgelassen wird
    Sleep 1
  Loop While MultiKey(fb.sc_e)
  drehung = drehung + speedslow
End If
aber damit würdest du dir deine Zählschleife für die fps sehr ungenau machen.
Eine andere Möglichkeit ist sich das drücken der Taste in einer Variablen (sogenantes Flag) zu merken. Das stört die Zählschleife der fps nicht.
Code:
#Include "fbgfx.bi"
Const Pi As Double = 3.141592653589793
Dim As Single fpc, speedslow, speed, drehung
Dim As Integer fpsb, curfps, w, h, ftaste
Dim As Integer xkreuz, ykreuz, xscreenmitte, yscreenmitte

Screen 18
ScreenInfo w, h
xscreenmitte = w\2
yscreenmitte = h\2

Do
  fpsb = fpsb+1
  speedslow = Pi / curfps
  If MultiKey(fb.sc_e) Then
    ftaste = 1
  Else
    If ftaste = 1 Then
      drehung = drehung + speedslow
      ftaste =0
    End If
  End If
  If MultiKey(fb.sc_q) Then
    ftaste = 2
  Else
    If ftaste = 2 Then
      drehung = drehung - speedslow
      ftaste =0
    End If
  End If
  If drehung > (2*pi) Then drehung = drehung - (2*pi)
  If drehung < -(2*pi) Then drehung= drehung + (2*pi)
  xkreuz = (Cos(drehung))*50+xscreenmitte
  ykreuz = (Sin(drehung))*50+yscreenmitte
  ScreenLock
  Cls
  Locate 1
  Print "x-Koordinate vom Kreuz:",ykreuz
  Print "y-Koordinate vom Kreuz:",xkreuz
  Print "Bilder pro Sekunde:",curfps
  Line (xkreuz,ykreuz-4)-(xkreuz,ykreuz+4),15 'senkrechte Linie
  Line (xkreuz+4,ykreuz)-(xkreuz-4,ykreuz),15 'waagerechte Linie
  PSet (xscreenmitte,yscreenmitte)
  ScreenUnlock
  Sleep 1    'Prozessor-Last senken
  ScreenSync 'nächsten Bildaufbau abwarten
  If Timer >= fpc Then
    fpc = Timer + 1
    curfps = fpsb
    fpsb = 0
  End If
Loop Until InKey= Chr(27) ' mit ESCAPE-Taste abbrechen
Wie du siehst sind noch einige Änderungen zu deinem Programm darin. Mit Hilfe der Befehlsreferenz wirst du sicher erkennen was da anders läuft. zwinkern
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
frebas



Anmeldungsdatum: 20.06.2008
Beiträge: 245

BeitragVerfasst am: 25.06.2008, 13:09    Titel: Antworten mit Zitat

Ich habe es jetzt doch stufenlos gemacht happy


Ich habe gesehen dass du in deinem Programm code die if schleifen verschachtelst hast, ist das weniger rechenintensiv?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz