amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Amiga, AmigaOS 4 > BlitzBasic-Quellcodes nach ASCII konvertieren? [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

27.11.2006, 17:51 Uhr

cgutjahr
Posts: 2779
[Administrator]
Ich habe hier ein paar BB-Sourcecodes, die ich gerne nach ASCII konvertieren würde um damit in Hollywood ein bisschen herumzuspielen.

BB scheint in typischer BASIC-Manier zwar einen ASCII-Text zu speichern, aber sämtliche Befehle durch Tokens zu ersetzen. Gibt es irgendeine Möglichkeit, sowas in reines ASCII zu konvertieren?

Im Aminet habe ich nichts gefunden, kann BB (bzw. AmiBlitz) selbst das erledigen (habe gerade keine funktionierende OS3-Partition, und unter OS4 läuft AmiBlitz nicht)?

Falls nicht, würde mir auch eine Liste der Tokens und der zugehörigen Befehle weiterhelfen, dann schreibe ich mir selbst ein Skript zur Konvertierung.
--
Gutjahrs Amiga Seiten

[ - Antworten - Zitieren - Direktlink - ]

27.11.2006, 18:25 Uhr

Blackbird
Posts: 634
Nutzer
@cgutjahr:

AmiBlitz2 funktioniert selbstverständlich unter OS4 ich benutze es selbst hier (wie du sicherlich weist)

In AmiBlitz2 kannst du alle Sourcen zu ascii text wandeln. Du brauchst dazu nur deinen Source als xxxx.ab2 zu speichern
--
regards
Blackbird

Have a look at:
http://www.blackbird-net.de

Skins for PlayCD OS3.9
BlackShoot, Zombies Apocalypse, GalagaWars
PerfectPaint

[ - Antworten - Zitieren - Direktlink - ]

27.11.2006, 22:48 Uhr

cgutjahr
Posts: 2779
[Administrator]
Zitat:
Original von Blackbird:
AmiBlitz2 funktioniert selbstverständlich unter OS4 ich benutze es selbst hier (wie du sicherlich weist)

Hm, stimmt - sorry. Hab' nochmal die aktuellste Distribution installiert, die funktioniert tatsächlich.

Wo wir gerade beim Thema sind: Kannst du mir sagen, was folgendes Konstrukt macht - ist das ein Tippfehler?

x+(Rnd(2)-1)


--
Gutjahrs Amiga Seiten

[ - Antworten - Zitieren - Direktlink - ]

28.11.2006, 02:07 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von cgutjahr:
Wo wir gerade beim Thema sind: Kannst du mir sagen, was folgendes Konstrukt macht - ist das ein Tippfehler?

x+(Rnd(2)-1)


Für mich sieht das nach x±1 aus...

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

28.11.2006, 03:51 Uhr

Bjoern
Posts: 1730
Nutzer
Zitat:
Original von Holger:
Zitat:
Original von cgutjahr:
Wo wir gerade beim Thema sind: Kannst du mir sagen, was folgendes Konstrukt macht - ist das ein Tippfehler?

x+(Rnd(2)-1)


Für mich sieht das nach x±1 aus...

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.


Könnte aber auch x+0 werden oder?

Gruß,
Björn

[ - Antworten - Zitieren - Direktlink - ]

28.11.2006, 11:09 Uhr

Blackbird
Posts: 634
Nutzer
@cgutjahr:

tja

x ist deine Variable die entweder 0 oder einen Wert enthält

der Rnd(2) Befehl wählt bei jedem Aufruf zwischen 0-2 zufällig eine Zahl (von der dann wieder 1 abgezogen wird)

könnte also folgendermassen aussehen:

x+(Rnd(2)-1) ->Rnd gibt 2 dann ist x=x+1
usw...

was sind denn das für Sourcen die du da hast ?
--
regards
Blackbird

Have a look at:
http://www.blackbird-net.de

Skins for PlayCD OS3.9
BlackShoot, Zombies Apocalypse, GalagaWars
PerfectPaint

[ - Antworten - Zitieren - Direktlink - ]

28.11.2006, 16:28 Uhr

cgutjahr
Posts: 2779
[Administrator]
Sorry Leute, hab mich wohl nicht ganz klar ausgedrückt - ich hab mich schon mit genug Programmiersprachen herumgeschlagen, um zu wissen was rnd() macht, oder wie ich ein paar Klammern interpretiere ;)

Das Problem ist, dass der komplette Ausdruck aus "x+(Rnd(2)-1)" besteht, d.h. in der Zeile steht sonst nichts mehr und die Zeilen darunter und darüber haben auch nichts damit zu tun.

Also entweder ist das ein Tippfehler - der Compiler gibt allerdings keine Fehlermeldung aus - oder irgendeine Blitz-eigene Kurzform (quasi ein Blitz-Equivalent zu "C++").

@Blackbird:

Nix wichtiges ("2dstrategy"), wollte mir nur mal ansehen ob so eine Konvertierung Sinn macht.
--
Gutjahrs Amiga Seiten

[ - Antworten - Zitieren - Direktlink - ]

28.11.2006, 17:43 Uhr

Blackbird
Posts: 634
Nutzer
@cgutjahr:

ach so, du meinst also die Zeile hat gar nix mit dem Source zu tun ?

ich kann mir nicht vorstellen das es einfach "so" drin steht...

sag halt, um welchen Source handelt es sich denn ?

wenn es "geheim" ist, kannst du mich ja auch mal privat anmailen...

hast du denn noch Sourcen rumliegen die nicht im Aminet sind ?

Ich hatte einen interessanten Thread im "Programmier-forum" gefunden wegen Skidmarks....

So alte Sourcen sind durchaus interessant. Schade das ACID nicht alles offengelegt hat ;-)
--
regards
Blackbird

Have a look at:
http://www.blackbird-net.de

Skins for PlayCD OS3.9
BlackShoot, Zombies Apocalypse, GalagaWars
PerfectPaint

[ - Antworten - Zitieren - Direktlink - ]

28.11.2006, 19:36 Uhr

Blackbird
Posts: 634
Nutzer
@cgutjahr:

das fällt mir jetzt erst auf, du willst ein altes BBSpiel auf Arexx konvertieren ? wie genau? So das es auch auf Graka läuft oder was meinst du ?
--
regards
Blackbird

Have a look at:
http://www.blackbird-net.de

Skins for PlayCD OS3.9
BlackShoot, Zombies Apocalypse, GalagaWars
PerfectPaint

[ - Antworten - Zitieren - Direktlink - ]

29.11.2006, 04:31 Uhr

cgutjahr
Posts: 2779
[Administrator]
Zitat:
Original von Blackbird:
ach so, du meinst also die Zeile hat gar nix mit dem Source zu tun ?

ich kann mir nicht vorstellen das es einfach "so" drin steht...

Hier ist der komplette Code-Block:

code:
For d=1 To 30
  x=Rnd(38)
  y=Rnd(mapheight)
  ;density of island
   For d2=1 To 12
   x+(Rnd(2)-1)
   y+(Rnd(2)-1)
   ;avoid land adjacent to map border
    If x>3 AND x<37 AND y>3 AND y<mapheight-1
    terrain(x,y)=1


Wie gesagt - BB compiliert das anstandslos.

Zitat:
sag halt, um welchen Source handelt es sich denn ?

wenn es "geheim" ist, kannst du mich ja auch mal privat anmailen...

LOL, da ist nichts geheim ;-) Wie ich bereits sagte: "2dstrategy" (das ist der Titel des *hüstel* Spiels, keine Beschreibung). War halt der erste BB-Code über den ich im Aminet gstolpert bin.

Zitat:
hast du denn noch Sourcen rumliegen die nicht im Aminet sind ?
Nein, leider nicht. Allerdings kursieren die BlitzBombers-Sourcen irgendwo, die wären ziemlich interessant...

Zitat:
das fällt mir jetzt erst auf, du willst ein altes BBSpiel auf Arexx konvertieren ? wie genau? So das es auch auf Graka läuft oder was meinst du ?
Hollywood, nicht ARexx. Mein erstes Projekt (ein Loderunner-Clone) ist an meinen eingeschlafenen "Reverse Engineering"-Fähigkeiten gescheitert (um die Original-Level benutzen zu können, müssen sich die Bösewichter exakt so wie im C64-Original verhalten), deswegen wollte ich mir als Fingerübung ein paar alte Sourcen ansehen. Und da es keine alten Hollywood-Sourcen gibt, nehme ich eben BB-Sachen und versuche die auf Hollywood (und damit automatisch auf Grafik- und Soundkarten) anzupassen.
--
Gutjahrs Amiga Seiten

[ - Antworten - Zitieren - Direktlink - ]

29.11.2006, 09:21 Uhr

whose
Posts: 2156
Nutzer
Zitat:
Original von cgutjahr:
Zitat:
Original von Blackbird:
ach so, du meinst also die Zeile hat gar nix mit dem Source zu tun ?

ich kann mir nicht vorstellen das es einfach "so" drin steht...

Hier ist der komplette Code-Block:

code:
For d=1 To 30
  x=Rnd(38)
  y=Rnd(mapheight)
  ;density of island
   For d2=1 To 12
   x+(Rnd(2)-1)
   y+(Rnd(2)-1)
   ;avoid land adjacent to map border
    If x>3 AND x<37 AND y>3 AND y<mapheight-1
    terrain(x,y)=1


Wie gesagt - BB compiliert das anstandslos.


Naja, und die von Dir genannte Zeile

code:
x+(Rnd(2)-1)


hat durchaus was mit dem Rest des Codes zu tun. Ich weiß zwar nicht, wofür der Original-Autor zu x noch zwölf Mal was zwischen -1 und 1 auf x aufaddiert, aber einen Sinn hat das garantiert ;)

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233


[ Dieser Beitrag wurde von whose am 29.11.2006 um 09:27 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

29.11.2006, 10:42 Uhr

Blackbird
Posts: 634
Nutzer
@whose:

na ja, sieht so aus als ob es eine Berechnung einer MAP oder eben der Gegner uaf der MAP ist...
Zumindest deuteten die variablen darauf hin I-)

oben im code generiert er ja auch x schonmal per RND(38)

zumindest scheint es wichtig zu sein :lach:
--
regards
Blackbird

Have a look at:
http://www.blackbird-net.de

Skins for PlayCD OS3.9
BlackShoot, Zombies Apocalypse, GalagaWars
PerfectPaint

[ - Antworten - Zitieren - Direktlink - ]

29.11.2006, 17:39 Uhr

Blackbird
Posts: 634
Nutzer
@cgutjahr:

>Nein, leider nicht. Allerdings kursieren die BlitzBombers-Sourcen irgendwo, die wären ziemlich interessant...

und du weist nicht zufällig wo ????? I-)
--
regards
Blackbird

Have a look at:
http://www.blackbird-net.de

Skins for PlayCD OS3.9
BlackShoot, Zombies Apocalypse, GalagaWars
PerfectPaint

[ - Antworten - Zitieren - Direktlink - ]

29.11.2006, 18:00 Uhr

cgutjahr
Posts: 2779
[Administrator]
Ich glaube fast ihr wollt mich missverstehen ;)

Natürlich ist der Code schlecht bis grausam (ihr solltet mal den Rest sehen), das ändert aber nichts an dem Problem, dass dort ein Ausdruck steht, dessen Ergebnis nicht weiterverarbeitet (einer Variable zugewiesen, einer Funktion übergeben, in einer Bedingung ausgewertet) wird.

Der nächste BB-Sourcode den ich mir angesehen habe, macht genau dasselbe ("speedx(a) * 1.5"), scheint also nicht so ganz ungewöhnlich zu sein. Ich gehe mal davon aus, dass das eine Kurzform von "speedx(a) = speedx(a) * 1.5" ist, aber ob das stimmt sehe ich erst wenn das Ding wieder durchkompiliert.

Zitat:
Original von Blackbird:
und du weist nicht zufällig wo ????? I-)

Doch, wollte die Tage eh mal nach einer Freigabe fragen.
--
Gutjahrs Amiga Seiten

[ - Antworten - Zitieren - Direktlink - ]

29.11.2006, 18:13 Uhr

Blackbird
Posts: 634
Nutzer
@cgutjahr:

sag mal, ich glaube bei dir ist das nicht wollen eher angebracht... 8)

Ich habe mir den Rest angesehen und es trifft zu was ich sage...
Der Teil generiert eine MAP oder zumindest die Gegnerpositionen auf der MAP...

sehe es einfach so, es spart Tipparbeit... Am ende kommt das selbe raus... als ob ich schreiben müßte x=x+1. Schreibe ich doch gleich x+1 ;)

>Doch, wollte die Tage eh mal nach einer Freigabe fragen.

das wäre natürlich das beste (wie bei vielen anderen Games die nicht mehr weiterentwickelt werden ) auch...

Meinst du ich bekomme das so ohne weiteres mit ? Der Source wird dann im Aminet veröffentlicht ?
--
regards
Blackbird

Have a look at:
http://www.blackbird-net.de

Skins for PlayCD OS3.9
BlackShoot, Zombies Apocalypse, GalagaWars
PerfectPaint

[ - Antworten - Zitieren - Direktlink - ]

29.11.2006, 19:36 Uhr

bruZard
Posts: 307
Nutzer
Öhm, war das nicht schon immer so dass BB ein x+1 gleich einem x = x + 1 interpretiert hat? Oder verstehe ich die Frage nicht?
Der o.g. Code generiert offensichtlich eine Map per Zufall und verwendet den Zufall (1 oder -1) um eine gewisse Unregelmäßigkeit auf der X und Y Achse zu erzeugen. In Timemill mache ich das ähnlich, nur dass es dort Variationen im Tileset gibt die diese Unregelmäßigkeiten erzeugen und per Rnd() auf die Tile-Vars angewendet wird.

Aber ich kann auch erfassen was hier empfunden wird: BB oder jetzt AB2 (respektive bald AB3) ist extrem unübersichtlich und grausam zu lesen. Da müsste der Rösch und der Honitos noch ein bisschen Anwenderkritik in die Hüfte bekommen damit sich das bessert.
Ich empfehle beiden einfach mal sich BMax anzusehen, das dortige Module-System würde sich sicher auf AB übertragen lassen wenn man einfach mal auf alles bisher dagewesene sch**sst.

Aber wahrscheinlich wäre ein Neuprogrammieren von AB in C++ mehr bringen ;)


--
Wer glaubt dass Volksvertreter das Volk vertreten, der glaubt auch dass Zitronenfalter Zitronen falten

[ - Antworten - Zitieren - Direktlink - ]

29.11.2006, 21:18 Uhr

cgutjahr
Posts: 2779
[Administrator]
Zitat:
Original von Blackbird:
sag mal, ich glaube bei dir ist das nicht wollen eher angebracht... 8)

Ich habe mir den Rest angesehen und es trifft zu was ich sage...

Arg! (/me rauft sich die Haare ;) )

Das einzige was mich interessiert hat, war wieso die Zeile "x+(Rnd(2)-1)" kein "=" enthält - alles andere ist mir völlig wurscht :) . Den Code habe ich nur gepostet um deutlich zu machen dass der Ausdruck tatsächlich alleine im Raum steht.

Aber inzwischen hab's sogar ich kapiert, danke für die Antworten.

Zitat:
Meinst du ich bekomme das so ohne weiteres mit ? Der Source wird dann im Aminet veröffentlicht ?
Klar.

--
Gutjahrs Amiga Seiten

[ - Antworten - Zitieren - Direktlink - ]

30.11.2006, 01:27 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Blackbird:
sehe es einfach so, es spart Tipparbeit... Am ende kommt das selbe raus... als ob ich schreiben müßte x=x+1. Schreibe ich doch gleich x+1 ;)

Also, auf gut deutsch, ein und derselbe Audruck bewirkt etwas völlig anderes, je nachdem, ob ich PRINT x+1 oder x+1 schreibe.

Hmm, da mögen sich dann alle die drauf stürzen, die schon C wegen der kryptischen Syntax ala x+=1 (spart gegenüber x=x+1 ein ganzes Zeichen!) oder x++ (spart ein weiteres ganzes Zeichen!) kritisiert haben.

Wer also dachte, kryptischer geht's nicht, wird jetzt eines besseren belehrt, und das ohne noch ein weiteres Zeichen zu sparen. Hätte x+ nicht eigentlich auch gereicht? Und was genau war noch mal der Vorteil von Basic gegenüber C?

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

30.11.2006, 01:30 Uhr

Holger
Posts: 8116
Nutzer
Was macht eigentlich dieser Basic-Dialekt, wenn ich x+y hinschreibe? Bzw. y+x?

mfg

[ - Antworten - Zitieren - Direktlink - ]

30.11.2006, 11:41 Uhr

whose
Posts: 2156
Nutzer
@Holger:

Soweit ich weiß, wird nur bei Konstanten so verfahren (also x + 1, y + 1 etc.). x+y ergäbe also das, was man erwartet, einen ausgewerteten Ausdruck, keine Zuweisung. Alles andere wäre auch herzlichst sinnlos. Sieh es einfach als Ersatz für x++ oder x+=2 o.Ä. an, mit Kürzeln hatten die Blitz-Autoren es sowieso ziemlich :D

Übrigens solltest Du Dir abgewöhnen, Blitz mit dem "herkömmlichen" BASIC gleichzusetzen, beiden haben nicht wirklich viel miteinander gemein. Blitz ähnelt wesentlich stärker C als BASIC. Sieht man schon daran, daß es Inkrement-Operationen u.Ä. gibt.

Und daran, daß es stellenweise noch krytischer in den Ausdrucksmöglichkeiten ist :D

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233

[ - Antworten - Zitieren - Direktlink - ]

30.11.2006, 12:03 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von whose:
Soweit ich weiß, wird nur bei Konstanten so verfahren (also x + 1, y + 1 etc.). x+y ergäbe also das, was man erwartet, einen ausgewerteten Ausdruck, keine Zuweisung. Alles andere wäre auch herzlichst sinnlos.


Hmm, als Beispiel wurde hier allerdings x+(Rnd(2)-1) genannt, das ist schonmal keine Konstante. Und cgutjahr zitierte speedx(a) * 1.5", was noch weiter über die Grenze des Verständlichen hinausgeht. Gut, der Leser mag sofort erkennen, dass speedx(...) wohl ein Array und keine Funktion sein muss. Aber warum sollte dann nicht auch x+y funktionieren und selbstverständlich etwas völlig anderes als y+x bewirken?
Zitat:
Übrigens solltest Du Dir abgewöhnen, Blitz mit dem "herkömmlichen" BASIC gleichzusetzen, beiden haben nicht wirklich viel miteinander gemein. Blitz ähnelt wesentlich stärker C als BASIC. Sieht man schon daran, daß es Inkrement-Operationen u.Ä. gibt.

Und daran, daß es stellenweise noch krytischer in den Ausdrucksmöglichkeiten ist :D

Vielleicht sollte man es dann in Blitz-C umbenennen? Oder Blitz-Brainfuck... Wobei mir ja whitespace als Programmiersprache besser zusagt, schon wegen dem ökonomischen Quelltextenausdrucken.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

30.11.2006, 12:23 Uhr

whose
Posts: 2156
Nutzer
Zitat:
Original von Holger:
Zitat:
Original von whose:
Soweit ich weiß, wird nur bei Konstanten so verfahren (also x + 1, y + 1 etc.). x+y ergäbe also das, was man erwartet, einen ausgewerteten Ausdruck, keine Zuweisung. Alles andere wäre auch herzlichst sinnlos.


Hmm, als Beispiel wurde hier allerdings x+(Rnd(2)-1) genannt, das ist schonmal keine Konstante. Und cgutjahr zitierte speedx(a) * 1.5", was noch weiter über die Grenze des Verständlichen hinausgeht. Gut, der Leser mag sofort erkennen, dass speedx(...) wohl ein Array und keine Funktion sein muss. Aber warum sollte dann nicht auch x+y funktionieren und selbstverständlich etwas völlig anderes als y+x bewirken?


Nun ja, genaues weiß ich selbst nicht (wie ich schon andeutete). Je nach Betrachtungsweise kann man einen Teilausdruck auch als Konstante werten und der Ausdruck oben würde wieder einen Sinn bekommen. Sofern die Zuweisung bei Allem außer Variablen gilt, haut es hin. Aber schlag mich nicht dafür, ich habe BB nicht erfunden und kann auch nicht wirklich damit umgehen :D

Zitat:
Zitat:
Übrigens solltest Du Dir abgewöhnen, Blitz mit dem "herkömmlichen" BASIC gleichzusetzen, beiden haben nicht wirklich viel miteinander gemein. Blitz ähnelt wesentlich stärker C als BASIC. Sieht man schon daran, daß es Inkrement-Operationen u.Ä. gibt.

Und daran, daß es stellenweise noch krytischer in den Ausdrucksmöglichkeiten ist :D

Vielleicht sollte man es dann in Blitz-C umbenennen? Oder Blitz-Brainfuck... Wobei mir ja whitespace als Programmiersprache besser zusagt, schon wegen dem ökonomischen Quelltextenausdrucken.

Naja, man kann über BB sicher trefflich streiten... trotzdem kann man etwas damit machen. Thilo (aka bubblebobble) zeigt das ja recht deutlich.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233

[ - Antworten - Zitieren - Direktlink - ]

30.11.2006, 13:05 Uhr

Blackbird
Posts: 634
Nutzer
@Holger:

> Also, auf gut deutsch, ein und derselbe Audruck bewirkt etwas völlig anderes, je nachdem, ob ich PRINT x+1 oder x+1 schreibe.

was soll den der Quark ? :O

was vermengst du denn da ? Du nimmst einen Zusäzlichen Befehl (Print) und gibst damit x+1 aus und setzt dieses gleich mit einer puren Rechenoperation ?

Nochmal ganz langsam.

x ist eine Variable (keine Konstante)
man kann schreiben x+1 oder eben x=x+1

speedx(...) ist ein Array, und per speedx(..) *1.5 multipliziere ich halt den Inhalt aus diesem * 1.5 wo ist das Problem ?


AmiBlitz2 ist wie whose schon erwähnt hat nicht gleich zu setzen mit Basic (da ist MaxxonBasic eher dafür geeignet)

EOT
--
regards
Blackbird

Have a look at:
http://www.blackbird-net.de

Skins for PlayCD OS3.9
BlackShoot, Zombies Apocalypse, GalagaWars
PerfectPaint

[ - Antworten - Zitieren - Direktlink - ]

30.11.2006, 15:55 Uhr

cgutjahr
Posts: 2779
[Administrator]
Zitat:
Original von Holger:
Und was genau war noch mal der Vorteil von Basic gegenüber C?

Ich glaube du tust Blitz unrecht, wenn du es mit heutigen Maßstäben misst. Blitz stammt aus einer Zeit, als die meisten BASIC-Programmierer daran gewöhnt waren, die Leerzeichen zwischen den Befehlen wegzulassen weil die Speicher verbrauchen... Und das "x+1" Verhalten ist mittlerweile ja auch nicht mehr dokumentiert (zumindest habe ich im Handbuch nichts gefunden).

Überhaupt ist Blitz heutzutage IMHO eine sehr merkwürdige Geschichte: Es gibt Unmengen von wahnsinnig mächtigen und anwenderfreundlichen Befehlen zur Grafik- und Sound-Steuerung - die aber alle nur die Custom-Chips unterstützen und dir deswegen nichts nutzen, wenn du für moderne Rechner programmieren willst.

Wenn du, so wie Blackbird, RTG-Anwendungen schreibst, bleibt von der ganzen Pracht von Blitz nichts übrig außer ein paar mathematischen Funktionen, einigen Schleifen-Typen und den Branch-Befehlen. Den Rest machst du genau wie in C mit Hilfe der Systembibliotheken, sogar der Datentyp "Pointer" existiert.
--
Gutjahrs Amiga Seiten

[ - Antworten - Zitieren - Direktlink - ]

30.11.2006, 16:34 Uhr

Blackbird
Posts: 634
Nutzer
@cgutjahr:

> Wenn du, so wie Blackbird, RTG-Anwendungen schreibst, bleibt von
> der ganzen Pracht von Blitz nichts übrig außer ein paar
> mathematischen Funktionen, einigen Schleifen-Typen und den Branch
> -Befehlen. Den Rest machst du genau wie in C mit Hilfe der
> Systembibliotheken, sogar der Datentyp "Pointer" existiert.

ja genau, mittlerweile ist AmiBlitz eher zu C gewandert. gerade deshalb tun sich manche auch etwas schwerer damit....

Gerade die Includes von Thilo Köhler ermöglichen es aber jedem Programmierer auch alles systemkonform zu lösen....
Damit ist dann auch die kryptische Syntax weg.!

Apropo RTG-Anwendung...
Gestern habe ich auf AmiForce eine öffentliche WIP-Version hochgestellt... Da kann sich jeder davon überzeugen was mit Blitz" (AmiBlitz2) zu machen ist....

Klar, manches läuft noch nicht so rund wie es sollte, aber das kommt schon noch (i hope so :lach: )
--
regards
Blackbird

Have a look at:
http://www.blackbird-net.de

Skins for PlayCD OS3.9
BlackShoot, Zombies Apocalypse, GalagaWars
PerfectPaint

[ - Antworten - Zitieren - Direktlink - ]

30.11.2006, 18:06 Uhr

bubblebobble
Posts: 707
Nutzer
Also das ist eigentlich ganz einfach:

In Amiblitz gibt es die Abkürzung, dass man eine Variable, die man inkrementell verändert nicht mit Gleichheitzeichen schreiben muss. Das ist analog zu C, wenn man x++ oder x-- schreibt, bei komplexeren Ausdrücken entspricht es dem x+=... oder x*= ... usw.

Z.B.
x+1 => x = x+1
x*2 => x = x*2
x+(RND(2)-1) => x = x+(RND(2)-1)
x+myFunction{a,b,c} => x = x+myFunction{a,b,c}

Semantisch bei dem konkreten Beispiel:
x wird um einen Zufallswert zwischen -1..+1 verändert, ausgehend von dem vorhergehenden Wert. Dabei wird vermutlich mit 32bit Fixpunkt gerechnet, wenn nichts anderes als Variablentyp angegeben ist.

Bei komplexeren Ausdrücken ist das zugegebenermassen etwas hässlich, aber niemand zwingt einen so zu proggen. Bei kurzen Schleifenzählern o.ä. finde ich es praktisch.

Zu Amiblitz2:
Blitzbasic2 hat fast nur CustomChip Befehle, das war auch richtig so zu der Zeit als es geschrieben wurde, weil es keine anderen Amiga ähnlichen Systeme gab. Nur so konnte man maximale Speed rausholen für sowas wie z.B. Toadies. Das wäre systemkonform niemals gegangen.

Heute hat man RTG und AHI, aber Blitzbasic2 ist ja nicht stehengeblieben. Amiblitz2 wurde so überarbeitet, dass der Editor und Compiler überall laufen (OS4, MOS, Amithlon).
Bei den Kompilaten verhält es sich so:
Man kann immer noch Amiga500 Games schreiben, die dort auch laufen, die laufen dann aber logischerweise nicht unter Graka. So ein Kandidat ist das 2DStategy vermutlich.

Der Befehlssatz wurde aber stark erweitert, anfangs durch neue Befehle (z.B. die NLibs), später durch die sog. Inlucdes, die einfach Funktionsbibliotheken sind die man am Anfang des Programs mit XINCLUDE einbindet. Sie verhalten sich genauso wie Basic Befehle, nur dass sie in einer anderen Farbe gehighlighted werden (wenn man will) und man den Sourcecode einsehen und manipulieren kann (wenn man will), oder mich um neue Features bitten kann, wenn was fehlt, oder selbst Hand anlegen. (alles Open Source)

Die Inlcudes decken fast alles ab, von RTG Grafik, AHI, Bilder und Audio Loaden/Speichern, TCP IP, CAMD/MIDI, Timer, 2D Game API, AREXX Schnittstelle, File Zugriff, ein GUI Toolkit (das was in HD-Rec verwendet wird) und vieles mehr.
Die Inlcudes sind alle mittlerweile recht gut debugged und laufen auch überall. So kann man sehr schnell eine App oder ein Game entwickeln, ohne sich mit Datatypes, ahi.device, OS Bitmaps etc. herumschalgen zu müssen. Das ist quasi alles schon gelösst und steht in einer so simplen API zur Verfügung (Wie man es in Basic eben wünscht), und wer es genau wissen will kann in die Befehle "hineingucken" um zu sehen was sie machen.

success = image_load{0,"DH0:MyPic.jpg"} ; laden
image_blit{0,x,y} ; auf das akutelle Windows blitten
image_save{0,"DH0:MyPic.png",@"PNG"} ; speichern

oder Sound:

success = ahi_loadsound{0,"DH0:Gong.wav"}
ahi_playsound{0}

Einfacher gehts nicht.
Die meisten Befehle haben noch optionale "Experten"
Paramter, mit denen man etwas feiner vorgehen kann,
z.B. für PNG Speichern das compressions level angeben etc.

Ich bin immer noch am Docu schreiben, leider fehlt noch einiges.
Deshalb muss man sich oft mit dem Sourcecode als Docu begnügen.
Aber ich arbeite dran.

Dass das ganze rund läuft könnt ihr ja an meinen Apps/Games sehen,
die basieren fast alle auf den Inlucdes.


--
Thilo Köhler, Author von:
HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, TKUnpacker
Homepage: http://www.hd-rec.de


[ - Antworten - Zitieren - Direktlink - ]

30.11.2006, 18:57 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Blackbird:
was vermengst du denn da ? Du nimmst einen Zusäzlichen Befehl (Print) und gibst damit x+1 aus und setzt dieses gleich mit einer puren Rechenoperation ?

So etwas wie eine "pure Rechenoperation" gibt es in Basic nicht (und auch in keiner anderen Programmiersprache. x+1 ist erstmal nur ein Ausdruck, der offenbar in Blitzbasic je nach Kontext etwas anderes bedeutet.
Den Ausdruck ohne Befehl hinzuschreiben, ist bereits eine Abkürzung in Basic, und zwar für den Befehl LET. Wenn also bei LET x+1 der Ausdruck etwas anderes bedeutet als bei PRINT x+1, ist das eben ziemlich Banane.
Ich könnt ja auch IF x+1 THEN x+1 hinschreiben, das wär dann genauso gültig (und nur bedingt verständlich). In anderen Basic-Dialekten würde das halt als GOTO x+1 interpretiert werden und nicht als LET x=x+1. Abkürzungen sind schon was feines...
Zitat:
AmiBlitz2 ist wie whose schon erwähnt hat nicht gleich zu setzen mit Basic (da ist MaxxonBasic eher dafür geeignet)
Das hat sich inzwischen schon rumgesprochen.

Zitat:
Original von cgutjahr:
Und das "x+1" Verhalten ist mittlerweile ja auch nicht mehr dokumentiert (zumindest habe ich im Handbuch nichts gefunden).

Das macht die Sache ja nicht besser, solange sie immer noch funktioniert. Eher schlechter...
Zitat:
Wenn du, so wie Blackbird, RTG-Anwendungen schreibst, bleibt von der ganzen Pracht von Blitz nichts übrig außer ein paar mathematischen Funktionen, einigen Schleifen-Typen und den Branch-Befehlen.
Das kann nur von Vorteil sein.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

30.11.2006, 19:49 Uhr

bubblebobble
Posts: 707
Nutzer
Holger, du Basic Hasser! :nuke:

Ok, es wäre esthetischer wenn man

x+=1
im Gegensatz zu
x+1

schreiben würde, damit der gleiche Term nicht in einem anderen Kontext etwas anderes bewirkt.
(Der Term wird eigentlich immer gleich ausgewertet, nur im stand-alone-fall wird eine Zuweisung zusätzlich durchgeführt).
Aber man muss sich ja nicht an jedem mini Ding so aufgeilen. In der Praxis ist das völlig egal, nach 5min Amiblitz proggen hat man das kapiert und es stört überhaupt nicht.
Und wer nicht will, muss ja nicht so proggen.
"x+1" schrieben finde ich ok, oder "ptr+BytePerRow" etc.
Komplexere Ausdrücke würde ich nicht so schreiben, das ist schlechter Stil. Aber in C kann man auch sehr hässlich proggen, wenn man es drauf anlegt oder keine Ahnung hat.

BTW, BlitzBasic2 hat sich noch nie als echtes (lamer's) "BASIC" verstanden, siehe original Anleitung. Dort steht "Mischung aus Basic, Pascal und C". Und genau das ist es eigentlich auch. Man kann mit wenigen Befehlen mal schnell ein kleines Script/Tool hinschludern, ohne zig Dateien anlegen zu müssen, man kann aber auch schön strukturiert und Typensicher in die Details gehen und bekommt auch die Speed von C als Belohnung, ohne dass man inline ASM (68K, PPC und x86!) bemühen muss (was man als letzten Joker aber auch noch drin hat). Eine Eierlegende Woll-Milch-Sau also, zumindest wenn man eine Maschine hat, die 68k ausführen kann. Für AROS executables müsste es erweitert werden, sofern AROS tatsächlich nie einen 68K JIT bekommen wird.

@cgutjahr:
Das Script zum selbst Konvertieren das du eingangs erwähnt hast wäre recht kompliziert, da du erstmal die Blitzlibs auslesen müsstest, und das ist ein Kunststück.
Aber AB2 hat ja eine ASCII export Funktion.

--
Thilo Köhler, Author von:
HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, TKUnpacker
Homepage: http://www.hd-rec.de


[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Amiga, AmigaOS 4 > BlitzBasic-Quellcodes nach ASCII konvertieren? [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.