kleine frage

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen

 

Takashi Kenshin

BeitragMi, Sep 26, 2007 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
also seit dem letzten beitrag bis jetzt habe ich gegrübelt, gelesen, ausprobiert ich bin nicht drauf gekommen. kann mir jemand ein beispiel geben wie ich das dann wiedergeben kann?
Das Exponenzielle Volumen subterraner Agrarprodukte, steht in reziproker Relation zur geistigen Kapazität des kultivierenden Agronoms. Oder Kurz gesagt: Der dümmste Bauer hat die dicksten Kartoffeln.

BladeRunner

Moderator

BeitragDo, Sep 27, 2007 0:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Einfacher gefragt: wenn ich die allererste Zelle (Sterne(0,0)) auslesen will, wie geht das ?
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Takashi Kenshin

BeitragDo, Sep 27, 2007 6:49
Antworten mit Zitat
Benutzer-Profile anzeigen
ich schreibe
Code: [AUSKLAPPEN]
 print sterne(i,0)


ich hab das so ausprobiert aber da kam fehler "array is out of bounds"
dann hab ich das array verändert per ausprobieren weil ich nicht weiß wonach ich das richten muss und habs dann auf (1000,1000) gesetzt und dann wurden nur 2 nullen auf dem bildschirm angezeigt sonst nichts. auch keine fehlermeldung
Das Exponenzielle Volumen subterraner Agrarprodukte, steht in reziproker Relation zur geistigen Kapazität des kultivierenden Agronoms. Oder Kurz gesagt: Der dümmste Bauer hat die dicksten Kartoffeln.

BladeRunner

Moderator

BeitragDo, Sep 27, 2007 17:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Welchen Wert hat denn i bei deinem Beispiel ?
Und warum fragst Du auf i,0 ab ?
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Takashi Kenshin

BeitragDo, Sep 27, 2007 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Wert ist
Code: [AUSKLAPPEN]
 for i = 0 to 999
Das Exponenzielle Volumen subterraner Agrarprodukte, steht in reziproker Relation zur geistigen Kapazität des kultivierenden Agronoms. Oder Kurz gesagt: Der dümmste Bauer hat die dicksten Kartoffeln.

BladeRunner

Moderator

BeitragDo, Sep 27, 2007 17:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Damit gist du aber nicht eine Aus, sondern die ersten Tausend. Wink
Eine Bitte: wenn Du ein Problem mit Code hast und er nicht läuft wie er soll wäre es sinnig wenn Du die jeweils aktuelle Version mitpostest, denn so kann ich nur raten.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Takashi Kenshin

BeitragDo, Sep 27, 2007 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
ok das wäre der code mit den Dimensionen hab ich ein wenig geräzelt da nur (1000,1000) ging, bei allen anderen kam die fehlermeldung array out of bounds.
Code: [AUSKLAPPEN]
Graphics 640, 480
SetBuffer BackBuffer()

Dim sterne (1000,1000)
For i = 0 To 999
   sterne(i,0) = Rand(640)
   sterne(i,1) = Rand(480)
Next
Print sterne(i,0)
Print sterne(i,1)
Das Exponenzielle Volumen subterraner Agrarprodukte, steht in reziproker Relation zur geistigen Kapazität des kultivierenden Agronoms. Oder Kurz gesagt: Der dümmste Bauer hat die dicksten Kartoffeln.

BladeRunner

Moderator

BeitragDo, Sep 27, 2007 18:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann zerlegen wir mal deinen Code, Zeile für Zeile:
Graphics 640, 480 - ok
SetBuffer BackBuffer() -ok

Dim sterne (1000,1000) -hier wäre ein umdimensionieren nicht nötig gewesen, (999,1) gibt wie schon gesagt platz für tausend sternenkoordinatenpaare. Da der Fehler später auftrat muss das geänderte den Fehler enthalten, hier etwas zu ändern kaschiert den Fehler nur.

For i = 0 To 999 -ok, zählt die sterne von 0 - 999 durch.
sterne(i,0) = Rand(640) -ok, setzt die x-koord.
sterne(i,1) = Rand(480) -ok, setzt die y koord.
Next - ok, wiederhole.
Print sterne(i,0) - FEHLER: mach mal ein print i ein, und stelle erstaunt fest dass i = 1000 und somit größer als die erlaubten 999 sind. Wieso? Next erhöht i jedesmal wenn es aufgerufen wird. bei 999 wird also auf 1000 erhöht, dann stellt bb fest dass die schleife nichtmehr bearbeitet werden muss. i wird von BB vergessen, sprich: bleibt auf dem letzten Wert. Wenn Du also manuell auslesen willst darfst du i nicht verwenden, sondern musst den manuellen wert eintragen. oder aber du lässt i mit einer weiteren for-next neu durchzählen, falls du mehrere Werte ausgeben willst.
Print sterne(i,1) FEHLER, siehe oben.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Takashi Kenshin

BeitragDo, Sep 27, 2007 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, wenn ich aber diesen manuellen wert aber eintrage kommen trozdem nur zahlen auf dem bildschirm und zwar genau 2 links oben in der 1. und 2. zeile ich wollte mit dem code aber einen sternen himmel erstellen
Das Exponenzielle Volumen subterraner Agrarprodukte, steht in reziproker Relation zur geistigen Kapazität des kultivierenden Agronoms. Oder Kurz gesagt: Der dümmste Bauer hat die dicksten Kartoffeln.

BladeRunner

Moderator

BeitragDo, Sep 27, 2007 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Zahlen die Du mit print ausgibst sind die Koordinaten eines Sternenpaares. Der Trick liegt nun darin all diese Koordinaten abzurufen (for-next) und sie als Zahlen für plot zu verwenden. Da die koordinaten sich nicht mehr ändern - sie sind ja im Array gespeichert - kann man das beliebig oft wiederholen, was ja das ist was Du wolltest.
Der weg zu deinem Sternenhimmel läuft eben über eine Sammlung gespeicherter Positionsdaten.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Takashi Kenshin

BeitragDo, Sep 27, 2007 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm.. ich kriegs nicht hin, kennst du vllt. ein tutorial wo man das lernen kann?
Das Exponenzielle Volumen subterraner Agrarprodukte, steht in reziproker Relation zur geistigen Kapazität des kultivierenden Agronoms. Oder Kurz gesagt: Der dümmste Bauer hat die dicksten Kartoffeln.
 

Takashi Kenshin

BeitragDo, Sep 27, 2007 22:03
Antworten mit Zitat
Benutzer-Profile anzeigen
ok ich habs geschafft. ganz einfaches problem ich habe die falsche variable genommen also so das sie doppelt war. nun hab ich es so hinbekommen wie ich es wollte.
Code: [AUSKLAPPEN]
Graphics 1280, 1024
SetBuffer BackBuffer()

Dim sterne (999,1)
For i = 0 To 999
   sterne(i,0) = Rand(1280)
   sterne(i,1) = Rand(1024)
Next
;sternenhimmel in ein array gelegt.
For g = 0 To 999
   Plot sterne(g,0), sterne(g,1)
Next
;array ausgelesen um sternen himmel zu erstellen.

   xspeed=2
While Not KeyHit(1)
   x=x+xspeed
   Oval 800+x, 400, 150, 50, 1
   If x>330 Then xspeed=-2
   If x<0 Then xspeed=+2
   Flip
   Cls ;sehr wichtig sonst zieht sich das oval lang
   For g = 0 To 999
   Plot sterne(g,0), sterne(g,1)
Next ;nochmal auslesen sonst weg wegen cls.
Wend
Das Exponenzielle Volumen subterraner Agrarprodukte, steht in reziproker Relation zur geistigen Kapazität des kultivierenden Agronoms. Oder Kurz gesagt: Der dümmste Bauer hat die dicksten Kartoffeln.

BladeRunner

Moderator

BeitragFr, Sep 28, 2007 13:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Herzlichen Glückwunsch Smile
Schön dass Du hartnäckig geblieben bist. Übrigens kannst Du bei deinen Schleifen weiter i statt g verwenden, sobald man eine neue For-next macht wird der Wert automatisch auf den Startwert gesetzt.
Und das erste plotten ist nicht nötig, Du machst es ja in der Schleife.
Dann würde ich Dir noch raten Flip und CLS immer ANS ENDE der Schleife zu machen, damit vorher alles gezeichnet wird.
So wie Du es bislang hast geht es zwar, ist aber verwirrend, da Du in einem Schleifendurchlauf 2 Bildschirmaufbauten bearbeitest.
Solltest Du flip und Cls an das Ende schieben, würde ich das Plotten noch vor Oval und co setzen, denn Blitz zeichnet in der Reihenfolge in der es auf die Befehle tritt, und dann wären, lässt Du es unverändert, die Sterne vor dem Vordergrund Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Takashi Kenshin

BeitragSo, Sep 30, 2007 19:53
Antworten mit Zitat
Benutzer-Profile anzeigen
hi mal wieder. so ich hab jetzt mal ein mit den pfeiltasten steuerbares objekt erschaffen nur möcht ich jetzt nicht das sich das objekt bis auserhalb der grenzen des bildschirms bewegt. wie lautet denn der befehl den ich da einbauen muss ich habs versucht mit:

Code: [AUSKLAPPEN]
if x = 0 then stop


aber dann hat halt natürlich auch das ganze programm gestoppt. Very Happy
zum veranschaulichen was ich meine:

Code: [AUSKLAPPEN]
Graphics 1280, 1024, 32, 1
SetBuffer BackBuffer()

Dim sterne (999,1)                     ;array anlegen
For i = 0 To 999
   sterne(i,0) = Rand(1280)            ;x-achse
   sterne(i,1) = Rand(1024)            ;y-achse
Next
      
Global Oval_x = 565                     ;startposition ufo auf x-achse
Global Oval_y = 487                     ;startposition ufo auf y-achse
Global Oval2_x = 615                  ;startposition ufohaube auf x-achse
Global Oval2_y = 462                  ;startposition ufohaube auf y-achse

Repeat                               ;schleife wird eröffnet
Cls

If KeyDown(203) Then Oval2_x = Oval2_x -2   ;
If KeyDown(205) Then Oval2_x = Oval2_x +2   ;
If KeyDown(200) Then Oval2_y = Oval2_y -2   ;
If KeyDown(208) Then Oval2_y = Oval2_y +2   ;
                                 ; steuerung des ufos mit haube per pfeiltasten
If KeyDown(203) Then Oval_x = Oval_x - 2    ;
If KeyDown(205) Then Oval_x = Oval_x + 2   ;
If KeyDown(200) Then Oval_y = Oval_y - 2   ;
If KeyDown(208) Then Oval_y = Oval_y + 2   ;


Color 255, 255, 255
For i = 0 To 999
   Plot sterne(i,0), sterne(i,1)          ;array auslesen sodass sternenhimmel angezeigt wird
Next    


Color 255, 255, 0
Oval Oval2_x, Oval2_y, 50, 50, 1         ;ufohaube ausgeben

Color 100, 100, 255
Oval Oval_x, Oval_y, 150, 50, 1            ;ufo ausgeben


Flip
Until KeyHit(1)
Das Exponenzielle Volumen subterraner Agrarprodukte, steht in reziproker Relation zur geistigen Kapazität des kultivierenden Agronoms. Oder Kurz gesagt: Der dümmste Bauer hat die dicksten Kartoffeln.

Xeres

Moderator

BeitragSo, Sep 30, 2007 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Zwei kleine Hinweise von meiner Seite:
Du kannst mehrere Befehle in einer Zeile ausführen, wenn du sie mit einem Doppelpunkt trennst, z.B.
Code: [AUSKLAPPEN]
If KeyDown(203) Then Oval2_x = Oval2_x -2 : Oval_x = Oval_x - 2

Was das eigentliche Problem angeht; du musst natürlich die Bedingung mit dem Zeichnen bzw. den Koordinaten fürs Zeichnen verknüpfen, woher soll der Computer denn wissen, was er zu lassen hat?
WENN die x variable gleich oder kleiner null ist, DANN soll die x variable gleich ... (irgendwas, z.B. null) sein.
Natürlich musst du das für alle Richtungen festlegen, aber das solltest du schaffen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Takashi Kenshin

BeitragSo, Sep 30, 2007 21:43
Antworten mit Zitat
Benutzer-Profile anzeigen
ja hat funktioniert, war eigentlich ziemlich einfach.

Code: [AUSKLAPPEN]
Graphics 1280, 1024, 32, 1
SetBuffer BackBuffer()

Dim sterne (999,1)                     ;array anlegen
For i = 0 To 999
   sterne(i,0) = Rand(1280)            ;x-achse
   sterne(i,1) = Rand(1024)            ;y-achse
Next
      
Global Oval_x = 565                     ;startposition ufo auf x-achse
Global Oval_y = 487                     ;startposition ufo auf y-achse
Global Oval2_x = 615                     ;startposition ufohaube auf x-achse
Global Oval2_y = 462                     ;startposition ufohaube auf y-achse


Repeat                               ;schleife wird eröffnet
Cls

If KeyDown(203) Then Oval2_x = Oval2_x - 4   ;
If KeyDown(205) Then Oval2_x = Oval2_x + 4   ;
If KeyDown(200) Then Oval2_y = Oval2_y - 4    ;
If KeyDown(208) Then Oval2_y = Oval2_y + 4   ;
                                 ; steuerung des ufos mit haube per pfeiltasten
If KeyDown(203) Then Oval_x = Oval_x - 4   ;
If KeyDown(205) Then Oval_x = Oval_x + 4   ;
If KeyDown(200) Then Oval_y = Oval_y - 4   ;
If KeyDown(208) Then Oval_y = Oval_y + 4   ;


Color 255, 255, 255
For i = 0 To 999
   Plot sterne(i,0), sterne(i,1)          ;array auslesen sodass sternenhimmel angezeigt wird
Next    


Color 255, 255, 0
Oval Oval2_x, Oval2_y, 50, 50, 1            ;ufohaube ausgeben
If Oval2_x < 50 Then Oval2_x = 50
If Oval2_x > 1180 Then Oval2_x = 1180
If Oval2_y < 0 Then Oval2_y = 0
If Oval2_y > 950 Then Oval2_y = 950


Color 100, 100, 255
Oval Oval_x, Oval_y, 150, 50, 1            ;ufo ausgeben
If Oval_x < 0 Then Oval_x = 0
If Oval_x > 1130 Then Oval_x = 1130
If Oval_y < 25 Then Oval_y = 25
If Oval_y > 974 Then Oval_y = 974


Flip
Until KeyHit(1)


Das Exponenzielle Volumen subterraner Agrarprodukte, steht in reziproker Relation zur geistigen Kapazität des kultivierenden Agronoms. Oder Kurz gesagt: Der dümmste Bauer hat die dicksten Kartoffeln.

Xeres

Moderator

BeitragMo, Okt 01, 2007 13:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Noch ein weiterer Hinweis:
Du kannst die Hälfte der Variablen sparen, wenn du nicht vor hast, ihre Relative Position zueinander zu verändern. Du beginnst ja wie folgt:
Code: [AUSKLAPPEN]
Global Oval_x = 565                     ;startposition ufo auf x-achse
Global Oval_y = 487                     ;startposition ufo auf y-achse
Global Oval2_x = 615                     ;startposition ufohaube auf x-achse
Global Oval2_y = 462                     ;startposition ufohaube auf y-achse

Nun bleiben die Abstände ja konstant:
Oval_x - Oval2_x = -50
Oval_y - Oval2_y = +25
Also stellst du alle Berechnungen nur mit einem von beiden Variablenpaaren an, und zeichnest beide Kreise mit den obigen relativen Abständen:
Code: [AUSKLAPPEN]
Color 255, 255, 0
Oval Oval2_x, Oval2_y, 50, 50, 1            ;ufohaube ausgeben
Color 100, 100, 255
Oval (Oval2_x-50), (Oval2_y+25), 150, 50, 1            ;ufo ausgeben

und: Die abfrage, ob das Ufo gezeichnet werden soll, sollte der Ordnung halber vor dem zeichnen geschehen... dahinter ist es ja eigentlich schon zu spät...
Immer schön weitermachen Wink
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Takashi Kenshin

BeitragMo, Okt 01, 2007 19:37
Antworten mit Zitat
Benutzer-Profile anzeigen
jep ist übersichtlicher so

als nächstes, was braucht man den alles um das ufo schießén lassen zu können?
Das Exponenzielle Volumen subterraner Agrarprodukte, steht in reziproker Relation zur geistigen Kapazität des kultivierenden Agronoms. Oder Kurz gesagt: Der dümmste Bauer hat die dicksten Kartoffeln.

Xeres

Moderator

BeitragMo, Okt 01, 2007 20:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun, am Sinnvollsten wäre es, wenn du ein wenig mit Types umgehen könntest. Schau dir erst mal ein Paar Tutorials dazu an. Wenn du damit grundsätzlich klar kommst, kannst du das in deinen Code integrieren.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Takashi Kenshin

BeitragMo, Okt 01, 2007 20:07
Antworten mit Zitat
Benutzer-Profile anzeigen
gut wo find ich dazu tutorials? kenn bis jetzt nur den robs bb kurs 2
Das Exponenzielle Volumen subterraner Agrarprodukte, steht in reziproker Relation zur geistigen Kapazität des kultivierenden Agronoms. Oder Kurz gesagt: Der dümmste Bauer hat die dicksten Kartoffeln.

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group