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:

Tastaturabfrage
Gehe zu Seite Zurück  1, 2, 3
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 05.12.2004, 12:50    Titel: Antworten mit Zitat

Hallo

96 ist einfach die dezimale Schreibweise und ist genau das selbe wie &H60. Das &H steht für Hexadezimal. Da wird als Basis die 16 statt der zehn benutzt. 16 x 6 = 96.

Gruss
Skilltronic
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Progger_X
Mr. Lagg


Anmeldungsdatum: 24.11.2004
Beiträge: 784
Wohnort: Leipzig

BeitragVerfasst am: 05.12.2004, 12:54    Titel: Also Antworten mit Zitat

Also kann man die beiden nicht einfach vergleichen.

Wo gibts denn eigentlich die Library DKey oder so?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 05.12.2004, 13:17    Titel: Antworten mit Zitat

Hallo

Versuche es doch einfach mal mit "normalen" Tasten, z.B. Buchstaben oder so. Welche Taste welche Nummer hat, kannst du so herausfinden:

Code:

 CLS
 DO
 DO
 t = INP(96)
 t$ = INKEY$
 LOOP WHILE t = talt
 talt = t
 IF t > 127 THEN PRINT "Taste Nr."; t - 128; " logelassen"
 IF t < 128 THEN PRINT "Taste Nr."; t; " gedrueckt"
 LOOP


Man kann &H60 und 96 nicht nur vergleichen, sondern auch beliebig austauschen. Dar Rechner wandelt sich sowieso alles in Binärwerte um. Es ist nur die Schreibweise die sich ändert, die Zahl an sich behält ihren Wert. Wie bei römischen Zahlen. Da ist XII auch das gleiche wie 12. Versuch doch einfach mal das hier:

a = &H60
PRINT a


Gruss
Skilltronic
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Progger_X
Mr. Lagg


Anmeldungsdatum: 24.11.2004
Beiträge: 784
Wohnort: Leipzig

BeitragVerfasst am: 05.12.2004, 15:49    Titel: Vergleichen Antworten mit Zitat

Das mit dem Vergleichen versteh ich schon, die Frage ist ob sie bei Bugs sich gegenseitig kompensieren können.

Die normalen Tasten (also WASD) habe ich schon getestet, es war ein wenig Bugfreier, aber funktionstüchtig bekomm ich das einfach nicht. weinen Habe mal ne Email an den DKey Typen geschrieben, die Email stand auf der Homepage wo DKey sein sollte. Ich hoffe er antwortet. Gibt es ansonsten eine Library oder so, die dafür gut geeitnet ist?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Progger_X
Mr. Lagg


Anmeldungsdatum: 24.11.2004
Beiträge: 784
Wohnort: Leipzig

BeitragVerfasst am: 05.12.2004, 16:03    Titel: Librarys Antworten mit Zitat

Ich habe jetzt ugl_022a, da sollte eine Tastaturmehrfachabfrage dabei sein. Reicht es wenn ich auf Eigenschaften gehe und dort auf Programm klicke, und in Befehlszeile einfach /L dazufüge? Oder muss man noch etwas machen? Und wie funtkioniert das? Ich kann nicht so gut Englisch, die Dokumentation hilft mir also relativ wenig.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Progger_X
Mr. Lagg


Anmeldungsdatum: 24.11.2004
Beiträge: 784
Wohnort: Leipzig

BeitragVerfasst am: 06.12.2004, 19:15    Titel: Hilfe Antworten mit Zitat

Hilft mir bitte jemand?

Ich lade mir auch ne andere Library runter wenns nötig ist, bloß bitte helft mir mal!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 07.12.2004, 13:03    Titel: Antworten mit Zitat

schau einfach wie die .qlb-datei der UGL heißt..

QB.exe /l: ugl_irgendwie.qlb

oder eben Lib, bin mir da nicht so sicher. zwinkern
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Progger_X
Mr. Lagg


Anmeldungsdatum: 24.11.2004
Beiträge: 784
Wohnort: Leipzig

BeitragVerfasst am: 07.12.2004, 17:19    Titel: Klappt Antworten mit Zitat

Soweit gehts. Aber wenn ich das Beispiel KPD.bas laden will kommt bei '$Include irgendwas.bi Datei nicht gefunden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Progger_X
Mr. Lagg


Anmeldungsdatum: 24.11.2004
Beiträge: 784
Wohnort: Leipzig

BeitragVerfasst am: 07.12.2004, 17:25    Titel: Code Antworten mit Zitat

Hier der Code für Tastenabfrage(KPD Beispiel):

Code:

''
'' kbd.bas -- keyboard routines ex
''

DEFINT A-Z
'$INCLUDE: 'ugl.bi'
'$INCLUDE: 'kbd.bi'

CONST xRes = 320 * 2
CONST yRes = 200 * 2
CONST cFmt = UGL.8BIT

CONST wStep = 2
CONST hStep = 1

DECLARE SUB ExitError (msg AS STRING)

'':::
    DIM video AS LONG
    DIM kbd AS TKBD

    DIM bmpW AS INTEGER, bmpH AS INTEGER

    bmpW = 64
    bmpH = 64
   
    '' initialize
    IF (NOT uglInit) THEN ExitError "Init"
   
    '' change video-mode
    video = uglSetVideoDC(cFmt, xRes, yRes, 1)
    IF (video = 0) THEN ExitError "SetVideoDC"

    kbdInit kbd

    x = (xRes \ 2) - (bmpW \ 2)
    y = (yRes \ 2) - (bmpH \ 2)
    moved = -1
    DO
        IF (kbd.left) THEN
            moved = -1
            uglRectF video, x + bmpW - 1 - wStep, y, x + bmpW - 1, y + bmpH - 1, 0
            x = x - wStep
            IF (x + bmpW - 1 < 0) THEN x = xRes - 1 + (x + (bmpW - 1))
        ELSEIF (kbd.right) THEN
            moved = -1
            uglRectF video, x, y, x + 1 + wStep, y + bmpH - 1, 0
            x = x + wStep
            IF (x > xRes - 1) THEN x = -bmpW + (x - (xRes - 1))
        END IF
        IF (kbd.up) THEN
            moved = -1
            uglRectF video, x, y + bmpH - 1 - hStep, x + bmpW - 1, y + bmpH - 1, 0
            y = y - hStep
            IF (y + bmpH - 1 < 0) THEN y = yRes - 1 + (y + (bmpH - 1))
        ELSEIF (kbd.down) THEN
            moved = -1
            uglRectF video, x, y, x + bmpW - 1, y + hStep, 0
            y = y + hStep
            IF (y > yRes - 1) THEN y = -bmpH + (y - (yRes - 1))
        END IF
        IF (kbd.plus) THEN
            moved = -1
            bmpW = bmpW + 1
            bmpH = bmpH + 1
        ELSEIF (kbd.min) THEN
            IF (bmpW > 3) THEN
                moved = -1
                uglVLine video, x + bmpW - 1, y, y + bmpH - 1, 0
                bmpW = bmpW - 1
            END IF
            IF (bmpH > 3) THEN
                moved = -1
                uglHLine video, x, y + bmpH - 1, x + bmpW - 1, 0
                bmpH = bmpH - 1
            END IF
        END IF

        IF (moved) THEN
            moved = 0
            uglRectF video, x + 1, y + 1, x + bmpW - 2, y + bmpH - 2, uglColor(cFmt, 0, 127, 0)
            uglRect video, x, y, x + bmpW - 1, y + bmpH - 1, uglColor(cFmt, 255, 255, 255)
        END IF
    LOOP UNTIL (kbd.esc)

    uglRestore

    PRINT "Press Any Key..."

    kbdPause
    DO
    LOOP UNTIL (LEN(INKEY$) <> 0)

    uglEnd
    END

'':::
SUB ExitError (msg AS STRING)
    uglRestore
    uglEnd
    PRINT "ERROR! "; msg
    END
END SUB


Bei
Code:

  '' initialize
    IF (NOT uglInit) THEN ExitError "Init"

kommt Sub nicht definiert.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Progger_X
Mr. Lagg


Anmeldungsdatum: 24.11.2004
Beiträge: 784
Wohnort: Leipzig

BeitragVerfasst am: 08.12.2004, 20:32    Titel: Erledigt Antworten mit Zitat

Es hat sich erledigt, von der Tastaturabfrage läufts. Wenn ihr mal ein Spitzenmäßiges Spiel(Leider ohne Namen) spielen wollt, ziehts euch rein!

Danke an alle die mir geholfen haben!

Das ist ein fertiter Code, eigentlich ist es mein Prinzip Codes nicht weiterzugeben wenn sie nicht für diesen Zweck sondern die Vertbreitung des Spiels gedacht sind, aber weil ihr mir mit diesem Code sehr geholfen habt schreib ich ihn hier rein. Ich bitte euch den Code nicht weiterzugeben.

Code:

DIM taste(128) AS INTEGER
DIM sterne(35, 2) AS INTEGER
DIM histerne(35, 2) AS INTEGER
SCREEN 9
x = 100
y = 100
ende = 0
sternerech = 1
DO
 sterne(sternerech, 1) = INT(RND * 400)
 sterne(sternerech, 2) = -100 * INT(RND * 10)
 sternerech = sternerech + 1
LOOP UNTIL sternerech > 20
sternerech = 1
DO
 histerne(sternerech, 1) = INT(RND * 400)
 histerne(sternerech, 2) = -100 * INT(RND * 10)
 sternerech = sternerech + 1
LOOP UNTIL sternerech > 35
schilde = 100
DO
 neutaste = INP(&H60)
 DEF SEG = 0
 POKE &H41A, PEEK(&H41C)
 DEF SEG
 IF neutaste < 128 THEN
  taste(neutaste) = -1
   SELECT CASE neutaste
    CASE 72
     IF taste(80) THEN taste(80) = 0
    CASE 75
     IF taste(77) THEN taste(77) = 0
    CASE 77
     IF taste(75) THEN taste(75) = 0
    CASE 80
     IF taste(72) THEN taste(72) = 0
   END SELECT
  ELSE
  taste(neutaste - 128) = 0
 END IF
 IF taste(72) THEN y = y - 6 'hoch
 IF taste(75) THEN x = x - 6 'links
 IF taste(77) THEN x = x + 6 'rechts
 IF taste(80) THEN y = y + 6 'runter
 seite = 1 - seite
 'zeichnen
 SCREEN 9, , 1 - seite, seite
 CLS
 PRINT "Schilde: " + STR$(schilde)
 CIRCLE (x, y), 10, 1
 sternerech = 1
 DO
  IF sterne(sternerech, 1) < 500 THEN
   CIRCLE (sterne(sternerech, 1), sterne(sternerech, 2)), 20, 14
  END IF
  sternerech = sternerech + 1
 LOOP UNTIL sternerech > 20
 sternerech = 1
 DO
  IF histerne(sternerech, 1) < 500 THEN
   CIRCLE (histerne(sternerech, 1), histerne(sternerech, 2)), 2, 14
  END IF
  sternerech = sternerech + 1
 LOOP UNTIL sternerech > 30

 'Berechnung
 y = y + 3
 IF y < 0 THEN
  y = 1
  schilde = schilde - 1
 END IF
 IF x < 0 THEN
  x = 1
  schilde = schilde - 1
 END IF
 IF x > 630 THEN
  x = 629
  schilde = schilde - 1
 END IF
 IF y > 340 THEN
  y = 339
  schilde = schilde - 1
 END IF
 sternerech = 1
 DO
  sterne(sternerech, 2) = sterne(sternerech, 2) + 3
  IF sterne(sternerech, 2) > 350 THEN
   sterne(sternerech, 2) = -10 * INT(RND * 50)
   sterne(sternerech, 1) = INT(RND * 600)
  END IF
  IF ABS(sterne(sternerech, 1) - x) < 20 AND ABS(sterne(sternerech, 2) - y) < 20 THEN
   schilde = schilde - 20
   IF schilde > 0 THEN y = y + 50
   sterne(sternerech, 2) = -10 * INT(RND * 50)
   sterne(sternerech, 1) = INT(RND * 600)
  END IF
  sternerech = sternerech + 1
 LOOP UNTIL sternerech > 20
 sternerech = 1
 DO
  histerne(sternerech, 2) = sterne(sternerech, 2) + 3
  IF histerne(sternerech, 2) > 350 THEN
   histerne(sternerech, 2) = -10 * INT(RND * 50)
   histerne(sternerech, 1) = INT(RND * 600)
  END IF
  sternerech = sternerech + 1
 LOOP UNTIL sternerech > 30
 IF schilde < 0 THEN
  ende = 1
 END IF
LOOP UNTIL ende = 1
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 QBasic. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2, 3
Seite 3 von 3

 
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