 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 05.12.2004, 12:50 Titel: |
|
|
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 |
|
 |
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 05.12.2004, 12:54 Titel: Also |
|
|
Also kann man die beiden nicht einfach vergleichen.
Wo gibts denn eigentlich die Library DKey oder so? |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 05.12.2004, 13:17 Titel: |
|
|
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 |
|
 |
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 05.12.2004, 15:49 Titel: Vergleichen |
|
|
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. 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 |
|
 |
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 05.12.2004, 16:03 Titel: Librarys |
|
|
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 |
|
 |
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 06.12.2004, 19:15 Titel: Hilfe |
|
|
Hilft mir bitte jemand?
Ich lade mir auch ne andere Library runter wenns nötig ist, bloß bitte helft mir mal! |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 07.12.2004, 13:03 Titel: |
|
|
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.  _________________ "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 |
|
 |
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 07.12.2004, 17:19 Titel: Klappt |
|
|
Soweit gehts. Aber wenn ich das Beispiel KPD.bas laden will kommt bei '$Include irgendwas.bi Datei nicht gefunden. |
|
Nach oben |
|
 |
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 07.12.2004, 17:25 Titel: Code |
|
|
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 |
|
 |
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 08.12.2004, 20:32 Titel: Erledigt |
|
|
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 |
|
 |
|
|
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.
|
|