nix passiert
Übersicht

EisrabeBetreff: nix passiert |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also, ich habe mein blitz basic heute bekommen und probiere etwas rum, um die befehle und deren funktion auszutesten.
das folgende kleine programm soll (erstmal) 20 pixel auf den screen bringen, die mit zufälligem simplen muster aneinander liegen. Code: [AUSKLAPPEN] Graphics 500, 200, 16, 2
SeedRnd seed Dim x(200),y(200) x(1)=200: y(1)=100 Plot x(1), y(1) x(2)=201: y(2)=101 For c=2 To 200 Color 255,0,0 Plot x(c), y(c) If x(c)=499 Then Goto ende If y(c)=199 Then Goto ende If x(c)=1 Then Goto ende If y(c)=1 Then Goto ende If c>20 Then Color 0,0,0 Plot x(c-20), y(c-20) EndIf z=Rnd(1,4) If z=1 Then x(c+1)=x(c)-1 If z=2 Then y(c+1)=y(c)-1 If z=3 Then x(c+1)=x(c)+1 If Z=4 Then y(c+1)=y(c)+1 Next .ende Color 0,255,0 Text 450,180,"ende" WaitKey End nun, leider wird ausser den ersten 2 startpixeln kein weiterer gezeichnet. das ab .ende dient nur der kontrolle. was ist falsch? ich komm irgendwie nicht drauf... |
||
ich habe einCode: [AUSKLAPPEN] GOTO und ich bin bereit es einzusetzen!
|
![]() |
BigSnake |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ehrlichgesagt kommt mir das ganze Programm sehr suspekt vor. Das fängt schon bei den beiden Arrays an. Sinnvoller wäre das :
Code: [AUSKLAPPEN] Const Items = 20 ; Anzahl der Pixel Dim Coord(Items,2) Vor allem hast du ja 400 Variablen für 20 Pixel. Sehr großer Aufwand Und für ein völlig zufälliges Muster wäre folgendes ausreichend Code: [AUSKLAPPEN] Graphics 800,600,32,2 SetBuffer FrontBuffer() SeedRnd MilliSecs() For CurItem = 1 to 20 Step 1 Color Rnd(0,254),Rnd(0,254),Rnd(0,254) Plot Rnd(0,800),Rnd(0,600) Next WaitKey() |
||
Eisrabe |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
schau dir das listing nochmal genau an.
es sollen 200 pixel erscheinen (erstmal). der array soll nur zum speichern der alten coords sein, da sie ja auch wieder rückwärts gelöscht werden bzw in hintergrundfarbe überschrieben listing update Code: [AUSKLAPPEN] Graphics 500, 200, 16, 2
SeedRnd MilliSecs() Dim x(200),y(200) x(1)=200: y(1)=100 Plot x(1), y(1) x(2)=201: y(2)=101 For c=2 To 200 Color 255,0,0 Plot x(c), y(c) If x(c)=499 Then Goto ende If y(c)=199 Then Goto ende If x(c)=1 Then Goto ende If y(c)=1 Then Goto ende If c>20 Then Color 0,0,0 Plot x(c-20), y(c-20) EndIf z=Rnd(1,4) If z=1 Then x(c+1)=x(c)-1 If z=2 Then y(c+1)=y(c)-1 If z=3 Then x(c+1)=x(c)+1 If Z=4 Then y(c+1)=y(c)+1 Next .ende Color 0,255,0 Text 450,180,"ende" WaitKey End geändert: seedrnd seed in seedrnd millisecs() |
||
ich habe einCode: [AUSKLAPPEN] GOTO und ich bin bereit es einzusetzen!
|
![]() |
Hip Teen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab mir mal den Code angesehen. Sieht sehr umständlich aus. Hab mal angefangen durch logs an das Problem zu kommen. Was ich merke ist das sich die Variablen immer um 0,0 bewegen. Nur weiss ich nicht wiso die variablen auf 0 gesetzt werden. Führe mal den Code aus, vielleicht helfen dir die logs
Code: [AUSKLAPPEN] Graphics 500, 200, 16, 2
SeedRnd MilliSecs() datei = WriteFile("log.txt") datei2 = WriteFile("log2.txt") datei3 = WriteFile("log3.txt") Dim x(200),y(200) x(1)=200: y(1)=100 Plot x(1), y(1) x(2)=201: y(2)=101 For c=2 To 200 Color 255,0,0 Plot x(c), y(c) WriteLine datei, "x(c) ist " + x(c) WriteLine datei, "y(c) ist " + y(c) WriteLine datei, "" If x(c)=499 Then Print "If 1":Goto ende If y(c)=199 Then Print "If 2":Goto ende ;If x(c)=1 Then Print "If 4":Goto ende ;If y(c)=1 Then Print "If 3":Goto ende If c>20 Then Color 0,0,0 Plot x(c), y(c) EndIf z=Rnd(1,4) WriteLine datei2, "Nummer " + c + ": Vorher: X " + x(c) + " und Y " + y(c) WriteLine datei3, "C ist " + c If z=1 Then x(c+1) = x(c)-1 If z=2 Then y(c+1) = y(c)-1 If z=3 Then x(c+1) = x(c)+1 If Z=4 Then y(c+1) = y(c)+1 WriteLine datei2, "Nummer " + c + ": Nachher: X " + x(c) + " und Y " + x(c) WriteLine datei2, "z ist " + z WriteLine datei2, "" WriteLine datei3, "Nun ist C " + c WriteLine datei3, "" Next .ende Color 0,255,0 Text 450,180,"ende" Text 450,160, c WaitKey End |
||
Eisrabe |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja, die logs sind ne super idee. werd ich mir mal merken für meine zukünftigen programme.
die logs haben mir gezeigt, dasss c korrekt hochzählt oder merkwürdigerweise x(c) und y(c) prötzlich auf null gehen. ka warum |
||
ich habe einCode: [AUSKLAPPEN] GOTO und ich bin bereit es einzusetzen!
|
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
liegt wohl daran, dass du immer nur den einen wert vom letzten abhängig machst und der andere wie im array üblich 0 ist... so bist du nach wenigen durchläufen unter garantie am 0punkt... | ||
MrKeks.net |
Eisrabe |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hehe, Inarie, endlich mal jemand, der es herausfidnet. thx. ich wusste doch das es ein einfaches prob ist.
ich bin kurz vorher auch drauf gekommen, durch die logfiles Plot x(c)+200, y(c)+100 sollte das problem lösen. die werte werden zwar nicht verändert oder verändert angezeigt. die hauptsache. im richtigen programm würd eichs natürlich anders machen ganz so wars nicht, das neue funktionierene listing Code: [AUSKLAPPEN] Graphics 500, 200, 16, 2
; es sollen 200 pixel gezeichnet werden, wobei das nächste ; immer am vorigen sein soll, mit zufälliger ausrichtung SeedRnd MilliSecs() Dim x(200),y(200) ; zum speichern der coords aller 200 pixel x(1)=200: y(1)=100 ; die 1. coords stehen fest = startpunkt For c=2 To 200 ; 200 pixel werden insgesamt gezeichnet x(c)=x(c-1): y(c)=y(c-1) ; die coords vom vorigen kommen in ; das neue z=Rnd(1,4) If z=1 Then x(c)=x(c)-1 ; der platz des nächsten pixels wird If z=2 Then y(c)=y(c)-1 ; ermittelt If z=3 Then x(c)=x(c)+1 If Z=4 Then y(c)=y(c)+1 Color 255,0,0 ; rote pixel auf schwarzes hintergrund Plot x(c), y(c) Delay 50 If x(c)=499 Then Goto ende ; verhindert dass der rand erreicht wird If y(c)=199 Then Goto ende ; auch wenns hier unnötig ist If x(c)=1 Then Goto ende If y(c)=1 Then Goto ende If c>20 Then ; ab 20 pixel wird immernoch zusätzlich Color 0,0,0 ; ein pixel gelöscht, so dass immer max Plot x(c-20), y(c-20) ; 20 pixel zu sehen sind EndIf ; gelöscht = mit hintergrundfarbe überschrieben Next .ende Color 0,255,0 Text 450,180,"ende" WaitKey End woran lags? die schlüsselstelle ist: Code: [AUSKLAPPEN] x(c)=x(c-1): y(c)=y(c-1)
damit werden die neuen arrays nicht null +-1 sondern nehmen als ausgangswert den wert des arrays davor. einfache lösung eigentlich |
||
ich habe einCode: [AUSKLAPPEN] GOTO und ich bin bereit es einzusetzen!
|
![]() |
Plasma(alt)Betreff: log files |
![]() Antworten mit Zitat ![]() |
---|---|---|
äh debuglog anyone ? | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group