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:

Multikey = 0
Gehe zu Seite 1, 2  Weiter
 
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
Sippo



Anmeldungsdatum: 17.04.2008
Beiträge: 125

BeitragVerfasst am: 22.10.2008, 20:35    Titel: Multikey = 0 Antworten mit Zitat

wie kann man überprüfen ob eine taste nicht mehr gedrückt wird???

Code:

declare sub oben
declare sub unten
declare sub links
declare sub rechts
declare sub obenlinks
declare sub untenlinks
declare sub obenrechts
declare sub untenrechts

do
    if multikey (&H48) then oben
    if multikey (&H4B) then links
    if multikey (&H50) then unten
    if multikey (&H4D) then rechts
    if multikey (&H48) and multikey (&H4B) then obenlinks
    if multikey (&H48) and multikey (&H4D) then obenrechts
    if multikey (&H50) and multikey (&H4B) then untenlinks
    if multikey (&H50) and multikey (&H4D) then untenrechts
loop until inkey = chr(27)

sub oben
    print "oben"
    do
    loop until multikey (&H)'??????????????????????
   
end sub

sub unten
    print "unten"
end sub

sub rechts
    print "rechts"
end sub

sub links
    print "links"
end sub

sub untenrechts
    print "untenrechts"
end sub

sub untenlinks
    print "untenlinks"
end sub

sub obenrechts
    print "obenrechts"
end sub

sub obenlinks
    print "obenlinks"
end sub
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
frebas



Anmeldungsdatum: 20.06.2008
Beiträge: 245

BeitragVerfasst am: 22.10.2008, 20:48    Titel: Antworten mit Zitat

mit else:


Code:

if multikey (&H48) then
   oben
else
   nicht gedruckt
endif



edit: Danke, geht das wirklich so einfach mit den SUBs also mit then und danach einfach den namen der sub? Ich hab mir immer alles so kompliziert vorgestellt mit dem Kopf durch die Mauer wollen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sippo



Anmeldungsdatum: 17.04.2008
Beiträge: 125

BeitragVerfasst am: 22.10.2008, 20:59    Titel: Antworten mit Zitat

xD np

da haben wir uns wohl gegenseitig geholfen grinsen thx

Mfg Sippo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
frebas



Anmeldungsdatum: 20.06.2008
Beiträge: 245

BeitragVerfasst am: 22.10.2008, 21:28    Titel: Antworten mit Zitat

es müsste aber auch so gehen:

Code:

IF MULTIKEY (&H48) THEN oben
IF MULTIKEY (&H48) = 0  THEN nichtoben
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


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

BeitragVerfasst am: 22.10.2008, 21:34    Titel: Antworten mit Zitat

ist aber unsauberer als eine ELSE-Anweisung. Moment mal, der ganze programmierstil hier ist unsauber... Zunge rausstrecken
_________________
» 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
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 22.10.2008, 21:38    Titel: Antworten mit Zitat

Code:
Dim As Sub Handler ()
Handler = *IIf(MultiKey(&h48), @oben, @nichtoben)
Handler()
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
frebas



Anmeldungsdatum: 20.06.2008
Beiträge: 245

BeitragVerfasst am: 22.10.2008, 21:53    Titel: Antworten mit Zitat

wofür sind eigentlich die ganzen Subs gut?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sippo



Anmeldungsdatum: 17.04.2008
Beiträge: 125

BeitragVerfasst am: 23.10.2008, 16:29    Titel: Antworten mit Zitat

Will keine gotos verwenden und functions und so kenn ich noch nict so gut. Außerdem fällt mir so auf anhib keine andre "gründliche" art ein.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The_Muh
aka Mark Aroni


Anmeldungsdatum: 11.09.2006
Beiträge: 718

BeitragVerfasst am: 23.10.2008, 16:41    Titel: Antworten mit Zitat

Kann man bei Multikey nicht mit case arbeiten? (mein versuch klappte nicht... hab aber auch nich in die ref geguckt o.ä.)[/code]
_________________
// nicht mehr aktiv //
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
frebas



Anmeldungsdatum: 20.06.2008
Beiträge: 245

BeitragVerfasst am: 23.10.2008, 16:52    Titel: Antworten mit Zitat

Sippo hat Folgendes geschrieben:
Will keine gotos verwenden und functions und so kenn ich noch nict so gut. Außerdem fällt mir so auf anhib keine andre "gründliche" art ein.

Was in der SUB drin steht kannst du doch einfach nach dem then schreiben.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sippo



Anmeldungsdatum: 17.04.2008
Beiträge: 125

BeitragVerfasst am: 23.10.2008, 16:57    Titel: Antworten mit Zitat

da schon aber beu andern programmen eben net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
frebas



Anmeldungsdatum: 20.06.2008
Beiträge: 245

BeitragVerfasst am: 23.10.2008, 17:02    Titel: Antworten mit Zitat

das hinter dem then kann auch mehrzeilig sein aber dann muss da noch ein endif stehen also:


Code:

if variable = 1 then
     print "blabla"
     x = x + 1
endif

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sippo



Anmeldungsdatum: 17.04.2008
Beiträge: 125

BeitragVerfasst am: 23.10.2008, 17:10    Titel: Antworten mit Zitat

jo kla aber s is einfacher n subb zu nehmen,wenn ich z.b. getmouse brauch oder mehrere bedingungen hab
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
frebas



Anmeldungsdatum: 20.06.2008
Beiträge: 245

BeitragVerfasst am: 23.10.2008, 17:16    Titel: Antworten mit Zitat

Achso, das ist natürlich Ansichtssache.
Ich war nur erst irritiert weil in den Code von dir so viel steht obwohl auch weniger die Hälfte reichen würde.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sippo



Anmeldungsdatum: 17.04.2008
Beiträge: 125

BeitragVerfasst am: 23.10.2008, 17:56    Titel: Antworten mit Zitat

ich arbeite halt normalerweise mit subs und bin des so gewohnt

aber hier sieht man auch warum:

hab nen fehler in den code gebaut:

Code:

cls
dim as integer a,b,c,d,e,f,g,h,i,j
screen 15
a = 0
b = 0
c = 0
d = 0
e = 0
f = 0
g = 0
h = 0
j = 0
do
    j = 0
print "1 ="; a
print "2 ="; b
print "3 ="; c
print "4 ="; d
print "5 ="; e
print "6 ="; f
print "7 ="; g
print "8 ="; h

input "Welchen Wert aendern?"; i

if i = 9 then end

if i = 1 and j = 0 and a = 0 then a = 1 and j = 1
if i = 1 and j = 0 and a = 1 then a = 0 and j = 1

if i = 2 and b = 0 and j = 0 then b = 1 and j = 1
if i = 2 and b = 1 and j = 0 then b = 0 and j = 1

if i = 3 and c = 0 and j = 0 then c = 1 and j = 1
if i = 3 and c = 1 and j = 0 then c = 0 and j = 1

if i = 4 and d = 0 and j = 0 then d = 1 and j = 1
if i = 4 and d = 1 and j = 0 then d = 0 and j = 1

if i = 5 and e = 0 and j = 0 then e = 1 and j = 1
if i = 5 and e = 1 and j = 0 then e = 0 and j = 1

if i = 6 and f = 0 and j = 0 then f = 1 and j = 1
if i = 6 and f = 1 and j = 0 then f = 0 and j = 1

if i = 7 and g = 0 and j = 0 then   g = 1 and j = 1
if i = 7 and g = 1 and j = 0 then   g = 0 and j = 1

if i = 8 and h = 0 and j = 0 then h = 1 and j = 1
if i = 8 and h = 1 and j = 0 then h = 0 and j = 1

loop until inkey = chr (27))
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
frebas



Anmeldungsdatum: 20.06.2008
Beiträge: 245

BeitragVerfasst am: 23.10.2008, 18:09    Titel: Antworten mit Zitat

Was ist das denn für ein Programm, wofür ist das?
Ich würde noch ein cls am anfang der do...loop schleife hinzufügen weil dann ist das nachher im Programm übersichtlicher.

Das cls am Anfang macht keinen Sinn und den sinn von j versteh ich nicht.

und dass immer null bei allen werten steht liegt daran dass die werte immer wieder in dem nächsten if-then Abschnitt auf 0 gesetzt werden. Das ist der gleiche fehler wie bei dem anderen problem.

das entspricht in etwa dem hier:

Code:
if wert = 1 then wert = 0 'hier wird wert 0 weil er 1 ist
if wert = 0 Then wert = 1 'und hier wird wert wieder 1
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sippo



Anmeldungsdatum: 17.04.2008
Beiträge: 125

BeitragVerfasst am: 23.10.2008, 19:05    Titel: Antworten mit Zitat

Eben das Problem soll ja j verhindern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


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

BeitragVerfasst am: 23.10.2008, 19:15    Titel: Antworten mit Zitat

lol, hast du noch nie was von arrays gehört?
_________________
» 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
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 565
Wohnort: Jüterbog

BeitragVerfasst am: 23.10.2008, 19:57    Titel: Antworten mit Zitat

Tach ooch sippo

Code:
IF i = 1 AND j = 0 AND a = 0 THEN a = 1 AND j = 1
IF i = 1 AND j = 0 AND a = 1 THEN a = 0 AND j = 1


Was soll die Variable a hier eigentlich machen? Wenn ich es richtig verstehe soll sie 1 werden wenn sie 0 bzw 0 wenn sie 1 ist??
Richtig?? dann versuch doch mal dies hier:

Code:
if  i=1 then
  if a=0 then a=1 else a=0
end if


"Wenn a=0 dann a=1 ansonsten (also a nicht 0 ) a=0"

Dann wechselt a bei jedem INPUT von 1 immer zwischen 0 und 1

Muttonhead
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


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

BeitragVerfasst am: 23.10.2008, 21:17    Titel: Antworten mit Zitat

mal wieder die typische "wie sag ich's meinem computer"-methode...
AND ist ein logisches Gatter, keine Verknüpfung von Befehlen!!!

Code:

if i = 1 then
  a = not a
  j = not j
end if

wobei ja a und b denselben wert haben...
_________________
» 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
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
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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