Hi!
Um den Anfang zu machen, ich habe noch die Version 3.082 (glaube ich) auf meinem Rechner installiert!
Mir sind folgende Dinge aufgefallen:
1. DIM funktioniert nicht so ganz. Wenn ich versuche ein kurzes Programm zu schreiben...
DIM hui[50]
FOR a = 1 to 50
hui[a] = RND (100) + 1
NEXT
PRINT hui[23]
SHOWSCREEN
MOUSEWAIT
...bleibt das Ausgabefenster nicht aufrecht. Auch nicht im Vollbildmodus. Er startet und beendet gleich darauf wieder. Das ist sehr blöd, da ich nämlich mit DIM meine Sterne anpassen und die Anzahl dadurch variabel halten möchte.
2. X_SPRITE funktioniert nicht so richtig. Oder ich bekomme da etwas nicht hin. Auf jeden Fall habe ich ein kleines Bild (ca. 150 x 100 Pixel, *.bmp, 24 bit) gemalt und mit RGB (255, 128, 0) umrandet und habe es dann mit LOADSPRITE zugewiesen. Als ich es ausgeben wollte, war es "verkehrt". Ich weiß nicht wie der Ausdruck dafür heißt, aber jeder Farbwert wurde in sein Gegenteil gekehrt. Es sah aus wie ein Negativ. Beim 2. Versuch mit einem anderen Bild selber Größe wurde schließlich gar nichts mehr angezeigt...
(3.) Ist eher ein kleines Problemchen, das aber nicht wirklich von Belang ist. Wenn man X_LINE und/oder X_DOT vor dem Licht setzt, werde die Farben normal angezeigt, aber danach bleiben sie einfach nur grau. Ist das normal???
Hoffe ich habe nicht zu viel Arbeit gemacht...
GLG
W.
PS.: Bald habe ich meinen Internetzugang zuhause, dann kann ich endlich ein paar super Ergebnisse vorweisen!!!
DIM hui[50]
FOR a = 0 TO 49
hui[a] = RND (100) + 1
NEXT
PRINT hui[23], 0, 0
SHOWSCREEN
MOUSEWAIT
Feld hui[50] hat indizies: 0...49.
Print hat 3 Argumente: text, x, y
2. Das ist nicht gut. Bitte Bild und Beispiel mailen.
3. Ist ein Fehler. Mach ich sofort 'raus.
SPRITE: Habe den Baum aus dem Bumpmapping Sample versucht! Funktioniert aber irgendwie nicht...
DIM: Egal in welches Programm ich es versuche einzubauen, er lädt und bricht wieder ab. Setze ich den DIM Teil unter Kommentar, funktioniert aber alles wieder.
Wenig Zeit. Versuche am Wochenende mehr zu schreiben...
GLG
W.
Hi WPShadow
1.
Speichere doch einfach vorher die Zahl in eine Variable.
Also z.B. Number=50 und dann zieh in der Zählschleife 1 ab. Da kann schon mal
nichts schief gehen.Außerdem brauchst du dann die Zahl nur einmal oben hinschreiben.
2.
Die Zahl die du mit Print ausgibst darf auch nicht größer oder gleich sein
als die Zahl im Dim Feld. Sonst beendet sich die Anwendung auch gleich wieder.
Vielleicht hast du da ja in deinen Programmen einen Fehler reingebracht.
Sonst bau halt einfach eine überprüfung ein.
Mach's lieber so:
Num_Max=50
DIM hui[Num_Max]
FOR a = 0 TO Num_Max-1
hui[a] = RND (100) + 1
NEXT
PRINT hui[23],100,100
SHOWSCREEN
MOUSEWAIT
Nimm mal das Beispiel hier.
Das muß gehen. Wenn nicht,sag ich nie mehr was.:D
Cheers
Das mit dem vordefinieren kann ich versuchen. Vielleicht funktioniert es dann...
Aber bisher hat er mir bei sämtlichen Programmen abgebrochen. Sowohl bei mousewait als auch bei Keywait. Auch wenn ich den wert mit "IF KEY() THEN END" angesetzt hatte, brach er ab. Ich bin wirklich etwas verzweifelt...
Danke für die Idee. Ich versuche mich vielleicht gegen Mittwoch zu melden. Mal sehen, vielleicht ergibt sich ja was...
GLG
W.
Habe vermutlich den Fehler gefunden.
Es sind die eckigen Klammern.
Wenn man hui[12] eingibt, bricht das Programm ab. bei DIM selbst aber nicht. Hilft das vielleicht ein bißchen???
GLG
W.
PS.: Vordefinieren hat nichts geholfen. Leider... :-(
Bitte komplettes Beispiel hier posten. Ich finde keinen Fehler...
Habe beispiel geschickt...
BITTE HILFE...
GLG
W.
PS.: Wie funktionieren *.ddw - Dateien???
.ddw geht noch nicht wirklich. Ich muss da noch basteln. Aber der Kern kann's schon (zumindest ist 99% der Arbeit 'drin).
In der .ddw steht nur:
[1]
obj="haus.ddd"
Tex1="haus.bmp"
[2]
obj="Baum.ddd"
tex1="baum.bmp§
tex2="baum_bump.bmp"
So im primzip...
Später macht man dann:
X_LOADOBJ "Welt.ddw", 0
X_DRAWOBJ 0,0
Easy, oder?
Hi!
Hat mein Beispiel schon was ergeben???
Brauche dringend Sterne. Ohne die sieht es im Weltraum nur halb so gut aus... =)
GLG
W.
Hab ich doch zurückgeschickt, oder?
Kein Bug ;)
DIM a[5]
a[5] = 100; // Hier schepperts!
// a[] ist definiert von a[0] bis a[4] (= 5 Stück)
Anbei meine Änderungen - Ich hab nur die Funktion "sterne" bearbeitet.
FUNCTION sterne: sterne1anzahl, sterne1farbe
// HOSSA!
// Du machst hier absichlich eine GLOBAL, die
// genauso heisst wie die Parameter hier oben.
// Die verwendest Du zwar nicht, aber...
GLOBAL createstars //, sterne1anzahl, sterne1farbe
GLOBAL sterneX[], sterneY[], sterneZ[], gross[]
GLOBAL farben[]
LOCAL farb
// Wenn die Feldgröße nicht passt:
IF BOUNDS(sterneX[],0)< sterne1anzahl
// Felder dimensionieren - nicht immer wieder
// einmal reicht, wenn sie (GLOBAL) die Größe
// haben, ist's ja super
DIM sterneX[sterne1anzahl]
DIM sterneY[sterne1anzahl]
DIM sterneZ[sterne1anzahl]
DIM gross[sterne1anzahl]
// Sterne zufällig platzieren
// Natürlich auch _nur_ wenn die Sterne
// "erschaffen" werden.
FOR u1 = 0 TO sterne1anzahl-1
// Da muss man sich was überlegen...
phi = RND(360)
alpha = RND(360)
radius = RND (2000) + 4000
gross[u1] = RND(2) + 1
sterneX[u1] = radius * SIN (phi) * COS (alpha)
sterneY[u1] = radius * SIN (phi) * SIN (alpha)
sterneZ[u1] = radius * COS (phi)
NEXT
ENDIF
DIM farben[5]
farben[0]=RGB(255,255,255)
farben[1]=RGB(255,0,0)
farben[2]=RGB(255,255,0)
farben[3]=RGB(0,255,0)
// ...
farb = farben[sterne1farbe]
// -1, weil sonst out-of-bounds
FOR u1 = 0 TO sterne1anzahl-1
// hier:
// Wenn sternx,y,z weiter von der Camera Entfernt als super_weit
// sternx,y,z von der anderen Seite wieder 'reinschieben'
// also:
// IF sterneX[u1] < cam_x-1000 THEN sterneX[u1] = cam_x+900
// IF sterneX[u1] > cam_x+1000 THEN sterneX[u1] = cam_x-900
// gruoss[u1] evtl. in Abhängigkeit: Abstand zur Kamera
// skalieren?
// statt gross musst Du hier gross[u1] schreiben
// gross macht keinen Fehler, liefert aber gross[0]...
X_DOT sterneX[u1], sterneY[u1], sterneZ[u1], gross[u1], farb
NEXT
createstars = 1
ENDFUNCTION
Hast Du wieder Internet?