hab anfänger prob mir dim.
Übersicht

![]() |
dominikBetreff: hab anfänger prob mir dim. |
![]() Antworten mit Zitat ![]() |
---|---|---|
(peinlich, peinlich) ![]() mal wieder für mein moorhunklon, also per zufall sollen die koords von den mänchen die man dann abschießen können soll festegelegt werden und in die dim felder gespeichert werden. sie werden aber seltsamerweise nicht gezeichnet. ich hatte des ganze voher schon mit typs da hats auch funtioniert jetzt hab ich nur die namen abgeänder(typs sind do unübersichtlich und umständlich) aber jetzt geht nix mehr. Code: [AUSKLAPPEN] Dim nr(50), art(50), frei(50) hauptschleife: Code: [AUSKLAPPEN] ;dim For md1 = 0 To 10 art(md1) = Rnd(1,7) nr(md1) = Rnd(1,10) If frei(md1) = 0 Then Gosub neuzeichnen Next unterprog: Code: [AUSKLAPPEN] .neuzeichnen mz = Rnd(1,7) If mz = 1 Then m = M1 If mz = 2 Then m = M2 If mz = 3 Then m = M3 If mz = 4 Then m = M4 If mz = 5 Then m = M5 If mz = 6 Then m = M6 If mz = 7 Then m = M7 If nr(md1) = 1 Then DrawImage m,xx + turm1X, yy + Turm1Y: frei(md1) = 1 if nr(md1) = 2 Then DrawImage m,xx + turm2X, yy + turm2Y: frei(md1) = 1 If nr(md1) = 3 Then DrawImage m,xx + Dach1X, yy + Dach1Y: frei(md1) = 1 If nr(md1) = 4 Then DrawImage m,xx + Dach2X, yy + Dach2Y: frei(md1) = 1 If nr(md1) = 5 Then DrawImage m,xx + Dach3X, yy + Dach3Y: frei(md1) = 1 If nr(md1) = 6 Then DrawImage m,xx + kturm1X, yy + kturm1Y: frei(md1) = 1 If nr(md1) = 7 Then DrawImage m,xx + kturm2X, yy + kturm2Y: frei(md1) = 1 If nr(md1) = 8 Then DrawImage m,xx + fenster1X, yy + fenster1Y: frei(md1) = 1 If nr(md1) = 9 Then DrawImage m,xx + fenster4X, yy + fenster4Y: frei(md1) = 1 If nr(md1) = 10 Then DrawImage m,xx + tuerX, yy + tuerY: frei(md1) = 1 Return End |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] If mz = 1 Then m = M1
If mz = 2 Then m = M2 If mz = 3 Then m = M3 If mz = 4 Then m = M4 If mz = 5 Then m = M5 If mz = 6 Then m = M6 If mz = 7 Then m = M7 DrawImage m... Das sollte man gar nicht machen. Mach aus m ein Dim-Feld und speicher darin die Imagehandles: Code: [AUSKLAPPEN] Dim m(6)
DrawImage m(mz-1)... Ich weiß nicht obs daran jetzt liegt, könnte auch mit dem frei(md) zusammenhängen, k.A. |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
dominik |
![]() Antworten mit Zitat ![]() |
---|---|---|
sorry aber des versth ich jetzt net so ganz wiso: "DrawImage m(mz-1)" ![]() wenn ich nur mz reinschreib dann fehlen da doch immernoch die koords und was macht des -1 da? |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
If frei(md1) = 0 Then Gosub neuzeichnen
hier wird es einmal zum zeichnen geschickt, nach dem einmaligen zeichnen setzt du aber diese auf 1 und wird dann nicht mehr gezeichnet ich denke das es daran liegt! Wofür steht M1 und mz, ist das der BilderHandle? |
||
[BB2D | BB3D | BB+]
|
![]() |
dominik |
![]() Antworten mit Zitat ![]() |
---|---|---|
0 sollte ja eingetlich nur bewirken das da noch kein mänchen stetht und wenn des mänchen dann 1 ist dann sollte es eingentlich immer gezeichnet werden.
wenn ich m in dim festlege dann bekomm ich aber die fehler meldunf 'identifyer may not be used like this' |
||
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Der erste Wert, der in der Hauptschleife für md1 durch For Next festgelegt wird ist "0".
Dann bei der Neuzeichnen Subrutine versäumst du gerade den ersten Wert, also Null zu checken und zu zeichnen. Du fängst zu zeichnen erst bei 1 an. Das kann das Problem sein. |
||
![]() |
dominik |
![]() Antworten mit Zitat ![]() |
---|---|---|
aber dann müssten die anderen ab 1 ja trotzdem zu sehen sein. | ||
![]() |
Ctuchik |
![]() Antworten mit Zitat ![]() |
---|---|---|
Imho liegt das Problem bei den Zufallszahlen!
Rnd(1,7) erzeugt ne Float-Zufallszahl zwischen 1 und 7 also auch zum Beispiel 5,768 oder 3,687! Benutz stattdessen Rand(1,7) dann sollte es gehn, denn Rand erstellt ganzzahlige Zufallszahlen! mfG Ctuchik |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Weil mz bei 1 beginnt und bei einem Dim-Feld kannst Du auch auf 0 zugreifen. So sparst Du Ram weil ein Dim m(6) vollig ausreicht. Anders bräuchtest Du Dim m(7). Die Drawimage-Befehle haben hab ich einfach nicht komplett ausgeschrieben, war nur als Beispiel gedacht ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
dominik |
![]() Antworten mit Zitat ![]() |
---|---|---|
so alter fehler behoben ich hab des code jetzt soweit abgeändert:
allerdings werden die mänchen immernoch jeden durchlauf neugezeichnet, und es wird nicht wie es eingetlich sollte unter frei eine 1 gespeichert. zumindest funktionierts nich. Code: [AUSKLAPPEN] Dim nr(20), frei(50) hauptschleife: Code: [AUSKLAPPEN] ;dim For md1 = 1 To 13 If frei(md1) = 0 Then Gosub neuzeichnen If frei(md1) = 1 Then If mz = 1 Then m = M1 If mz = 2 Then m = M2 If mz = 3 Then m = M3 If mz = 4 Then m = M4 If mz = 5 Then m = M5 If mz = 6 Then m = M6 If mz = 7 Then m = M7 mz = Rnd(1,13) If mz = 1 Then DrawImage m, xx + 300, yy + 403 If mz = 2 Then DrawImage m, xx + 380, yy + 403 If mz = 3 Then DrawImage m, xx + 600, yy + 552 If mz = 4 Then DrawImage m, xx + 790, yy + 553 If mz = 5 Then DrawImage m, xx + 920, yy + 587 If mz = 6 Then DrawImage m, xx + 1200, yy + 475 If mz = 7 Then DrawImage m, xx + 1250, yy + 599 If mz = 8 Then DrawImage m, xx + 485, yy + 902 If mz = 9 Then DrawImage m, xx + 585, yy + 902 If mz = 10 Then DrawImage m, xx + 680, yy + 902 If mz = 11 Then DrawImage m, xx + 820, yy + 802 If mz = 12 Then DrawImage m, xx + 1020, yy + 807 If mz = 13 Then DrawImage m, xx + 1185, yy + 880 EndIf Next unterprog: Code: [AUSKLAPPEN] .neuzeichnen nr(md1) = Rnd(1,13) mz = Rnd(1,7) If mz = 1 Then m = M1 If mz = 2 Then m = M2 If mz = 3 Then m = M3 If mz = 4 Then m = M4 If mz = 5 Then m = M5 If mz = 6 Then m = M6 If mz = 7 Then m = M7 If nr(md1) = 1 Then DrawImage m,xx + turm1X, yy + Turm1Y: frei(md1) = 1 If nr(md1) = 2 Then DrawImage m,xx + turm2X, yy + turm2Y: frei(md1) = 1 If nr(md1) = 3 Then DrawImage m,xx + Dach1X, yy + Dach1Y: frei(md1) = 1 If nr(md1) = 4 Then DrawImage m,xx + Dach2X, yy + Dach2Y: frei(md1) = 1 If nr(md1) = 5 Then DrawImage m,xx + Dach3X, yy + Dach3Y: frei(md1) = 1 If nr(md1) = 6 Then DrawImage m,xx + kturm1X, yy + kturm1Y: frei(md1) = 1 If nr(md1) = 7 Then DrawImage m,xx + kturm2X, yy + kturm2Y: frei(md1) = 1 If nr(md1) = 8 Then DrawImage m,xx + fenster1X, yy + fenster1Y: frei(md1) = 1 If nr(md1) = 9 Then DrawImage m,xx + fenster4X, yy + fenster4Y: frei(md1) = 1 If nr(md1) = 10 Then DrawImage m,xx + tuerX, yy + tuerY: frei(md1) = 1: frei(md1) = 1 If nr(md1) = 11 Then DrawImage m,xx + fenstergrosX, yy + fenstergrosY: frei(md1) = 1 If nr(md1) = 12 Then DrawImage m,xx + fenster4X, yy + fenster4Y: frei(md1) = 1 If nr(md1) = 13 Then DrawImage m,xx + tuerX, yy + tuerY: frei(md1) = 1 Return End des kann doch nich sein das mir da gar keiner helfen kann. |
||
![]() |
Triton |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() Lies dir Tutorials/Bücher betreffs Arrays durch..bitte. |
||
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
probier mal stat dessen:
If frei(md1) = 0 Then Gosub neuzeichnen If frei(md1) = 1 Then das: If frei(md1) = 1 then Hier dein Wertangabe und DrawImage Code endif If frei(md1) = 0 Then Gosub neuzeichnen Außerdem beachte was jemand schon geschrieben hatte, nimm stat RND RAND, das ist ein großer Unterschied! |
||
![]() |
Ctuchik |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jau ich sags nochmal :
Code: [AUSKLAPPEN] mz = Rnd(1,13) If mz = 1 Then DrawImage m, xx + 300, yy + 403 If mz = 2 Then DrawImage m, xx + 380, yy + 403 If mz = 3 Then DrawImage m, xx + 600, yy + 552 If mz = 4 Then DrawImage m, xx + 790, yy + 553 If mz = 5 Then DrawImage m, xx + 920, yy + 587 If mz = 6 Then DrawImage m, xx + 1200, yy + 475 If mz = 7 Then DrawImage m, xx + 1250, yy + 599 If mz = 8 Then DrawImage m, xx + 485, yy + 902 If mz = 9 Then DrawImage m, xx + 585, yy + 902 If mz = 10 Then DrawImage m, xx + 680, yy + 902 If mz = 11 Then DrawImage m, xx + 820, yy + 802 If mz = 12 Then DrawImage m, xx + 1020, yy + 807 If mz = 13 Then DrawImage m, xx + 1185, yy + 880 Rnd(1,13) erzeugt ne Zufallszahl zwischen 1 und 13 aber die Chance dass diese Zahl genau 1,2,3,4...usw. wird ist dabei relativ gering, weil auch Zahlen wie 1,682 erzeugt werden und daher ist die Chance klein, dass überhaupt was gezeichnet wird... Rand hingegen erzeugt nur ganze Zahlen, also änder das mal! Ob noch andere Fehler drin sind weiss ich nicht! mfG Ctuchik |
||
![]() |
dominik |
![]() Antworten mit Zitat ![]() |
---|---|---|
also ich ahb des mit dem rnd in rand mal geänder war aber zimlich egal ich hatte ja nie das prob das garnix gezeichnet wird.
@ Omenaton_2: auf die idde mit dem reihen folge wechseln bin ich auch schon gekommen aber des veränder absolut garnix. irgentwie erkennt ernich wann frei(md1) = 1 und wann des 0 is. oder vll. speicher ers auch garnic erst. ?????? |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hast du denn schon mal mit dem Debugger gearbeitet und dir die Werte mal angesehen und ein paar stops eingebaut um zu überprüfen ob der Code überhaupt abgearbeitet wird ?
Damit läßt sich normal schnell was finden ! oder die werte der Arrays immer am moni anzeigen lassen Beispiel Code: [AUSKLAPPEN] For t= 0 To 50
Text 10, 10+ t*10, "nw: "+ nr(t) Text 100, 10+ t*10, "Art: "+ art(t) Text 200, 10+ t*10, "Frei: "+ frei(t) Next Das hilft fast immer! |
||
[BB2D | BB3D | BB+]
|
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Rnd(1,13) erzeugt ne Zufallszahl zwischen 1 und 13 aber die Chance dass diese Zahl genau 1,2,3,4...usw. wird ist dabei relativ gering, weil auch Zahlen wie 1,682 erzeugt werden und daher ist die Chance klein, dass überhaupt was gezeichnet wird... Rand hingegen erzeugt nur ganze Zahlen, also änder das mal! Ob noch andere Fehler drin sind weiss ich nicht! mfG Ctuchik Stimmt ![]() Aber in seinem Fall ist das nicht so schlimm. Weil die Variable ein Integer ist. Das heisst der Wert von Rnd wird in einen Integer konvertiert (komma stelle abgeschnitten). Bei Float wäre es aber so wie du sagst. Trotzdem stimm ich dir zu ![]() |
||
![]() |
dominik |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich hab des mit dem var. aufm bilds. ausgeben mal ausprobiert aber des stimmt alles deren status is immer wie er sein soll 1.
ich hab jetzt noch nen bischen was im code wegelöscht was mir unlogisch erschien und jetzt kommt immer ne fehlermeldung das ein bild fehlt "image does ...." aber des komt seltsamerweise wenn ich des bild grad malen will Code: [AUSKLAPPEN] If mz = 11 Then DrawImage m, xx + 820, yy + 802 des is doch irgentwie auch unlogisch wenn ich nen bild grad erst zeichnen will dann is doch klar das es noch net da is. oder heißt des das es niocht geladen wurde? ich hab davor noch ne zeile mit der per zufall festgelegt wir welches bild von insgesamt 7 gemalt werden soll Code: [AUSKLAPPEN] If mz = 7 Then m = M7 aber dadran kann ja nich liegen oder? |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das heißt nichts anderes als das das Bild nicht geladen werden konnte oder wurde. Überprüf einfach mal das Handle. Ist es 0 - alles klar ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
HOT-BITGast |
![]() Antworten mit Zitat |
|
---|---|---|
KOPFSCÜTTEL !!!
* If mz = 7 Then m = M7 * Welchen Wert hat M7 ? Welchen Wert hat nun m ? Eine Frage: Wie alt bist du ? Wenn unter 12 bist, brauchst nicht zu antworten ! Wenn schon älter bist, melde dich lieber nicht da drauf, denn sonst müsste ich dir sagen, daß du lieber die Finger vom programmieren lassen sollst ! Toni |
||
![]() |
dominik |
![]() Antworten mit Zitat ![]() |
---|---|---|
was soll dadran jetz bitte so schrecklich sein?
in m7 wurde das bild geladen und in mz wurde vorher die zahl 7 per zufall errechnet. wenn mz = 7 ist dann soll in m des bild von m7 gespeichert werden. wenn du genau ggelesen hättes was ich obe geschrieb nahbe dan hättes du das auch gleich gemerk da habe ich das nämlci auch schon stehen. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group