Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Ein paar Anfängerfragen
#1
Hallo,

ich habe vor kurzem angefangen, mir AmiBlitz etwas anzuschauen.

Beim Beispiel-Programmieren sind einpaar Fragen aufgekommen, vielleicht kann mir jemand Hinweise dazu geben:

1. Text:
Es war relativ leicht, einen Screen zu öffnen und ein paar Dinge reinzuzeichnen, unter anderem Text:

Screen 0,12  ; 25
ScreensBitMap 0,0  ; 8 hires + 4 bitplanes = 16 colors
RGB 1,15,0,0
...
Locate 20,20
Print"hello"+Chr$(10)+" world", Rnd(8), " und ", Int(Rnd(8))

Gibt es eine einfache Möglichkeit, den Text Pixelgenau zu setzen (ich glaube es gab in der Graphics-Library eine
Text() Funktion, aber vielleicht komme ich ja drumherum, mit Libs zu hantieren ... zumindest am Anfang)

2. Mouse:
Gibt es eine einfache Methode, die aktuelle Mausposition und den Button-Status abzufragen (ohne Libs/Events)?
Wenn ich mich richtig zurückerinnere, köennte ich wahrscheinlich einfach ein bestimmtes Bit in 0xbfe001 für die
linke Maustaste abfragen oder so (wahrscheinlich gibts ein peek), aber wie sieht es mit den absoluten Maus-Koordinaten aus?
Ich will möglichst keine Gadgets dafür nutzen ...

3. Pointer auf Array of Struct (Newtype):
Für eine eigene Priority-Queue Implementierung habe ich mir ein Struct Array definiert:

NEWTYPE .prioqueue
  map_2_info.w
  v.w
End NEWTYPE

Dim pq.prioqueue(20)
pq(0)\v = 55

Wie genau beschaffe ich mir dadrauf einen Pointer, Dinge wie

*pqp.prioqueue = pq(20)

scheinen nicht zu funktionieren. Ich will einen Pointer auf solche Structuren und Struct-Arrays, damit
ich den Pointer dann später als Parameter an eine Assembler-Funktion übergeben kann ...

Außerdem:
Kann ich mir sicher sein, daß wenn ich es schaffe, einen Pointer darauf an eine Assembler-Funktion zu übergeben,
daß das Layout dann so ist, wie man es erwarten würde, also Pointer zeigt dann in dem Beispiel auf:
16 bit map info[0], 16 bit v[0], 16 bit map info[1], 16 bit v[1], ..., 16 bit map info[20], 16 bit v[20]


Ohne irgendwas anderes dazwischen? Ich muss ja in Assember den genauen Aufbau kennen, damit ich dann damit
hantieren kann/davon lesen und darein schreiben kann...
Falls nein, ist irgendwo dokumentiert, wie BlitzBasic die Strukturen und Structarrays genau im Speicher aufbaut?


Danke schon mal, viele Grüße
Zitieren
#2
Hallo und willkommen!

zu 1. für pixelgenaues Texten müßtest du ein (unsichtbares) Fenster öffnen, dann kannst du WLocate (x,y) benutzen für Print.
Das ist im Prinzip dann das Benutzen der Systemfunktionen, wie du schon geschrieben hast mit Text() etc.
Dies ginge natürlich auch; dafür müßtest du dir den Rastport vom Screen oder Window holen.
Wohlgemerkt is dies alles für dein sstemkonformes Beispiel eines OS-Bildschirms; für hardwarenahes Texten ginge das so nicht.

zu 2. Du kannst Joyb(0) nehmen, um die Mousebuttons abzufragen.
das ist zwar hardwarenah, aber geht auch auf der Workbench, wenns denn unbedingt sein muß.

zu 3. Ja, Newtype Arrays liegen so im Speicher, wie du sie dimensionierst, AUSSER, du definierst sie als LIST, dann weiß man es nie.
Aber: Falls da Strings enthalten sind, dann ist da natürlich nur die Adresse des Strings drin, nicht der gesamte String.

Du kannst ja immer SizeOf. benutzen, um das notfalls als Offset mitgeteilt zu bekommen.

wenn du die Adresse einer Variablen suchst, dann machst du ein & davor, also

*pqp.prioqueue = &pq(0)  wäre dann die Startadresse des Arrays in einen Pointer.

Du kannst die Adresse natürlich auch einfach in einem Long ablegen, als normale Variable

temp.l = &pq(0)  zum Beispiel.
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste