Warum vermisst das keiner..???

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

x-pressive

Betreff: Warum vermisst das keiner..???

BeitragDi, Jan 13, 2004 4:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, ich will ja nichts sagen -aber nachdem ich von ActionScript auf Blitz umgestiegen bin, bin ich auf einige üble Mankos bei Blitz gestossen. Ich hoffe, da kann mich jemand eines besseren belehren:

1.) Einen Wert unter AS kann man auch so verändern:

meineVariable += 1
meineSumme *= 5.5

Warum geht das mit Blitz nicht?

2.) Ultra-Kurze If-Statements mit AS:
gameOver = (lives < 0)? 1 : 0

statt:

if (lives < 0) { gameOver = 1; } else { gameOver = 2; }

Geht wohl nicht mit Blitz, oder?

3.) Dynamische Variablen- und Objektnamen.
Dies ist der schlimmste Verlust (es tut so weh! Crying or Very sad ). Mit AS lassen sich Variablen- Objekte- und sogar Funktionsnamen dynamisch zusammenbasteln. Nehmen wir mal an, ich möchte 100 Raketen um einen Pixel nach oben bewegen:

for (i = 1; i <= 100; i++)
{
eval("Rakete" + i)._y ++;
}

So einfach ist das! Zack! Mit Blitz bleibt aber wohl nix anderes übrig, als die langsamen und umständlichen Types zu benutzen, oder die zwar schnelleren, aber ebenso umständlicheren DIMs, oder wie?

Wenn, ja WENN mann doch unter Blitz nur dynamische Ausdrücke verwenden könnte (z.B. eval() -gibt's ja sogar unter JavaScript ) -wieviel Arbeit würde das ersparen, das Leben um wie vieles einfacher machen... Crying or Very sad
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Suco-X

Betreff: .....

BeitragDi, Jan 13, 2004 5:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Sei gegrüßt.
zu 1 : Da hast du recht Das geht mit BB nicht so. Muss halt Variable = variable+1. Ich denke aber es ist nicht so das Problem ein Wörtchen mehr zu schreiben.

Zu 2 : So habe ich das eigentlich noch bei keiner Programmiersprache geshen. Action Script kenne ich auch nicht. Aber ein :
If lives<0
GameOver = 1
else
GameOver = 2
endif
Wird dir wohl auch nicht die Fingerchen vor schreibarbeit brechen. Frage mich auch warum du auf einmal noch mit C++ Code hier anfängst!?

zu 3: Jo, da wirst du wohl mit dims oder Types arbeiten müssen. Normal sollte das auch kein Problem darstellen. BB ist eine Programmiersprache, kein scripting Zeugs. Du hast zwar die éin oder andere möglichkeit die dir fehlt, BB ist aber schnell und logisch.
Desweiteren bezweifel ich noch das es so ne script sprache überhaupt ansatzweise in sachen nutzen und schnelligkeit mit BB types oder dims aufnehmen kann. Wird dir wohl nichts anderes übrig bleiben als solche sachen zu nutzen, ansonsten bleib bei deinem Action Script.
bye
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB
 

Edlothiol

BeitragDi, Jan 13, 2004 8:21
Antworten mit Zitat
Benutzer-Profile anzeigen
1 und 2 gibts beide in C++ (daher kommen sie). 3 geht bei BB nicht, weil BB nicht interpretiert wird. Ich finde, es gibt schlimmere Mankos.
 

René Meyer

BeitragDi, Jan 13, 2004 9:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
for (i = 1; i <= 100; i++)
{
eval("Rakete" + i)._y ++;
}

So einfach ist das! Zack! Mit Blitz bleibt aber wohl nix anderes übrig, als die langsamen und umständlichen Types zu benutzen, oder die zwar schnelleren, aber ebenso umständlicheren DIMs, oder wie?


Ja, in Basic ist das alles sehr viel aufwendiger. :)

Code: [AUSKLAPPEN]
For i=1 To 100
 Rakete(i,1) = Rakete(i,1) + 1
Next
www.blitzbasic.de | Das Buch zu Blitz Basic: www.schreibfabrik.de/txt/bbb
 

BIG BUG

BeitragDi, Jan 13, 2004 10:18
Antworten mit Zitat
Benutzer-Profile anzeigen
2. Ultrakurze If-Statements gehen auch in BB(allerdings nur mit Rückgabe 0(Falsch) & 1(Wahr)):
gameOver = (lives<0)
Ist sogar kürzer als bei Dir Smile

Außerdem heisst kürzer nicht unbedingt besser. Meistens leidet da die Lesbarkeit eines Codes...
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

x-pressive

BeitragDi, Jan 13, 2004 11:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Klar, mit längeren IFs kann ich leben, so flexibel bin ich noch Smile -aber gerade das Fehlen von ausgewerteten Variabel- und Objektnamen macht mir schwer zu schaffen.

Mein Problem: ich wollte einen kleinen Partikel-Emitter mit B3D basteln (die Partikel sind kleine Entities, nur so zum Test). Also habe ich mal versucht, in einem Array Referenzen zu jedem dieser Partikel abzulegen:

Dim particles(9999)

for i = 0 to 100
particles (i) = createSphere()
next

Das gibt aber einen Memory Violation Error. Wie kann ich denn sonst durch meine Objekte loopen bzw. Referenzen zu jedem Objekt so ablegen, daß ich sie per Schleife durchgehen kann?
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL
 

Omenaton_2

BeitragDi, Jan 13, 2004 11:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin froh, daß das so nicht geht.
Der große Vorteil von BASIC ist die Übersichtlichkeit und gute Verständlichkeit des Codes. BASIC ist mehr an menschliche Sprache orientiert. Das ist ein wesentlicher Punkt.

Die Zeilen die du in AS geschrieben hast sind deutlich weniger übersichtlich und verständlich als in BlitzBasic.

Das mag bei 1-2 Zeilen keine große Sache sein, aber in einem sehr großen Code an Stellen wo was wirklich Kompliziertes gemacht wird(sagen wir mal tief verschachtelte Pathfinding-Rutine oder Gruppenbewegung in ein Echtzeitstrategiespiel) - noch mehr wenn es um Fehlersuche geht - ist das schon ein gewaltiger Unterschied und Vorteil zu Gunsten von Basic.
 

Omenaton_2

BeitragDi, Jan 13, 2004 11:40
Antworten mit Zitat
Benutzer-Profile anzeigen
"Wie kann ich denn sonst durch meine Objekte loopen bzw. Referenzen zu jedem Objekt so ablegen, daß ich sie per Schleife durchgehen kann?"

- benutze TYPEs dafür. Damit geht das. Gib jedem TYPE-Objekt einen (einmaligen) ID-Nummer und dann beziehe dich darauf.

bruZard

BeitragDi, Jan 13, 2004 11:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Stichwort: Types

Machen sich hervorragend für variable Datenmengen wie sie Partikel darstellen.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

x-pressive

BeitragDi, Jan 13, 2004 11:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Bäh -die sind von der Syntax her so schrecklich umständlich... kann man denn Objekt-Referenzen in Types ablegen? Gibt es auch andere Möglichkeiten, oder MUSS ich hier Types benutzen?
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

bruZard

BeitragDi, Jan 13, 2004 11:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Type tPartikel
  Field x#,y#,z#  ; Partikelposition
  Field obj  ; Handle (kann ein Sprite oder ein Objekt sein)
  Field dir#[2]  ; Richtungsvektor
  Field alpha#  ; ausblenden
End Type
Global part.tPartikel

Function CreateParticle(count)
  For i=0 To count
    part.tPartikel = New tPartikel
    ; hier die Eigenschaften festlegen
    ; -> part\x# = x#
    ;
  Next
End Function

Function UpdateParticles()
  For part.tPartikel=Each tPartikel
    ; Eigenschaften jedes Partikels verändern
    ; part\alpha#=part\alpha#-0.01
    ; If part\alpha#<=0 Then Delete part
  Next
End Function

Ich finde nicht dass das Type-Handling unübersichtlich oder kompliziert ist ... alles sehr übersichtlich.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

TheShadow

Moderator

BeitragDi, Jan 13, 2004 19:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
meineVariable += 1


Das ist GIFT in meinen Augen - weder logisch, noch gut lesbar - einziger Vorteil: kürzerer Code

Aber freu dich auf BBmax - da soll sowas gehen:

meineVariable+1

Zitat:
gameOver = (lives < 0)? 1 : 0


Das ist auch Schrott - unlogisch, schlecht lesbar - typisches C-Stuff eben

gameOver = (lives < 0)

ist logisch und gut lesbar - aber ist nicht das selbe - ich weiß

Zitat:
Dynamische Variablen- und Objektnamen.


Das wirst du in kaum einer Sprache finden - finde dich damit ab...

Was du vorhast, das lässt sich in BB in X versch. Varianten lösen... Warum willst du dann sowas "komplizier"
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

DivineDominion

BeitragDi, Jan 13, 2004 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Dynamische Variablennamen gibt es in einigen Sprachen - sogar PHP Wink
 

OJay

BeitragDi, Jan 13, 2004 19:48
Antworten mit Zitat
Benutzer-Profile anzeigen
php wird aber ebenfalls interpretiert Wink

nö, ich bin im allgemeinen recht zufrieden mit bb. könnte ein paar mehr funktionen geben...was stringverarbeitung etc angeht, aber das kann man in aller regel auch selbst erstellen (wenn auch nicht mit der performance wie "harte" funktionen).

x-pressive

BeitragDi, Jan 13, 2004 20:38
Antworten mit Zitat
Benutzer-Profile anzeigen
TheShadow hat Folgendes geschrieben:
meineVariable += 1
Das ist GIFT in meinen Augen - weder logisch, noch gut lesbar - einziger Vorteil: kürzerer Code

gameOver = (lives < 0)? 1 : 0



Ich programmiere so nun schon seit fast einem halben Jahrzehnt, und gerade WEIL Code dadurch übersichtlicher, kürzer und besser lesbar wird, habe ich mich gänzlich darauf umgestellt. Zeilen werden dadurch erheblich kürzer, der 'Zeichensalat' verringert sich deutlich, Code ist einfacher zu warten, da er auch schneller zu lesen ist. Natürlich erscheint es einem zuerst ungewohnt, deshalb verstehe ich deine Ansicht. Aber lass' dich mal darauf ein, dann wirst du die Vorzüge schon erkennen.

Ich vergleiche das immer gerne mit Deutsch und Englisch. Wofür man im Deutschen gerne einen superausführlichen Satz samt Nebensatz braucht, wird im Englischen klar und kurz, meist durch ein treffendes Schlagwort ausgedrückt.
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Master C

BeitragDi, Jan 13, 2004 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Dafür musst du aber erst mal alle Schlagwörter wissen -> größerer Lernaufwand

"meinevariable+=1" finde ich auch gewöhnungsbedürftig, "meinevariable+1" wäre übersichtlicher (ich nehme an, das "meinevariable+=1" einfach eine 1 zu meinevariable addiert? ). Im Übrigen: Warum sollte BB jetzt der Syntax von AS angepasst werden? Genauso kann man gleich auf C-Syntax umsteigen. Jede Sprache hat halt ihre Vorteile Wink

x-pressive

BeitragDi, Jan 13, 2004 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Na, meinetwegen - meineVariable+1 ist auch okay Smile Da wollen wir mal nicht kleinlich sein. Mich nervt es halt, jedesmal ganze Aufsätze schreiben zu müssen, wenn ich nur eine Variable inkrementieren möchte. Das geht eindeutig auf die Zeit. Ich neige dann auch automatisch dazu, möglichst kurze Variablennamen zu benutzen, damit die Zeilen nicht endlos lang und wuselig werden.

Aber das ist Kleinkram. Was mir wirklich höllisch abgeht, ist die dynamische Auswertung von Variabel-, Objekt- und Funktionsnamen. Das ist so schön effizient. Aber damit werde ich dann wohl leben müssen... seufz Crying or Very sad
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Travis

BeitragDi, Jan 13, 2004 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Also nix für ungut, aber da ist mir das gute alte x = x + 1 auch lieber. Über die Andere Form würde ich mich todärgern weil sie, zwar etwas kürzer, aber unlogisch ist.

Variable+ = 1 (Variable und ...[ja was denn]... ist gleich 1) "Expecting expression" Rolling Eyes
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.

Jolinah

BeitragDi, Jan 13, 2004 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich wär froh wenn es neben den Types noch sowas wie Klassen geben würde, mit eigenen Methoden usw.

Aber sonst mit Syntax bin ich auch recht zufrieden.

bruZard

BeitragDi, Jan 13, 2004 21:27
Antworten mit Zitat
Benutzer-Profile anzeigen
myVar+=Value finde ich extrem nützlich und ist auch sehr einfach zu lesen ... auch so Sachen wie Methoden in Types vermisse ich schmerzlich. Was ich aber jeden Tag verfluche ist, warum gibt es kein myVar++ / myVar-- / ++myVar / --myVar ????
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group