Dim map problem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Kaddy

Betreff: Dim map problem

BeitragFr, Sep 24, 2010 0:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Huhu,
Ich habe ein Problem und zwar soll eine Dim map von 2 dimensionen (19,14) mit einer zahl von 1 - 45 gefüttert werden soweit es möglich ist.
dazu habe ich folgenden Code aufgebaut

BlitzBasic: [AUSKLAPPEN]
For zaehlert = 0 To 44
roflpattern = zaehlert
For tilex = 0 To 19
For tiley = 0 To 14
tilemap(tilexe,tileye) = zaehlert
Next
Next


Jedoch ist egal im welchen index der wert 0 .

Habe ich hier irgendetwas falsch gemacht ?

würde mich auf eure hilfe, egal welcher form , freuen

MFG
Kaddy
Bin Aktuell auf der Suche nach einen Programmierer Team, ob Hobby Team oder Firma ist egal. Einfach eine PM an mich schreiben.
Bezahlung verlange ich NATÜRLICH keine Wink

Es gibt 10 arten von Menschen, die einen verstehen das Binärsystem , die anderen nicht SmileSmile

FireballFlame

BeitragFr, Sep 24, 2010 3:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich nehme mal an, weil du "tilex" und "tiley" als Zähler nimmst, und dann aber "tilemap(tilexe,tileye)" schreibst. Wink
Ich würde dir empfehlen, eine IDE wie IDEal zu benutzen und alle Variablen vor der Benutzung mit Local zu deklarieren. Dann kann sowas nicht passieren, weil Rechtschreibfehler sofort erkannt und markiert werden.
Du solltest deinen Code übrigens ganz dringend einrücken. Rolling Eyes
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit
  • Zuletzt bearbeitet von FireballFlame am Fr, Sep 24, 2010 3:05, insgesamt einmal bearbeitet

Lastmayday

BeitragFr, Sep 24, 2010 3:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

beim Programmieren ist es extrem wichtig die richtigen Variablennamen zu verwenden. Auch muss man diese unbedingt richtig initialisieren, da es sonst zu unerwünschtem verhalten des Programms kommt. Überprüfe deshalb nochmal akribisch deine Variablennamen.

BlitzBasic: [AUSKLAPPEN]
Dim tilemap%(20,15)
Local zaehler% = 100

For tilex = 0 To 19
For tiley = 0 To 14
tilemap(tilex,tiley) = zaehler
Next
Next

Print(tilemap(10,10))

WaitKey()
End


Lastmayday
 

Kaddy

BeitragFr, Sep 24, 2010 9:05
Antworten mit Zitat
Benutzer-Profile anzeigen
die Variabeln namen sind richtig nur ich habe sie hier falsch abetippt.
Bin Aktuell auf der Suche nach einen Programmierer Team, ob Hobby Team oder Firma ist egal. Einfach eine PM an mich schreiben.
Bezahlung verlange ich NATÜRLICH keine Wink

Es gibt 10 arten von Menschen, die einen verstehen das Binärsystem , die anderen nicht SmileSmile

Ana

BeitragFr, Sep 24, 2010 10:20
Antworten mit Zitat
Benutzer-Profile anzeigen
ich würde den zähler nicht mit einer For schleife machen, ansonsten wiederholst du den Schritt das Array zu füllen ja 44 mal, zwar jedes mal mit einer anderen Zahl, aber auch jedesmal das komplette array. Wenn du einfach nur die Zahlenfolge haben willst kannst du z.B so machen:

BlitzBasic: [AUSKLAPPEN]
Dim tilemap (19,14)

x = 0
For tilex = 0 To 19
For tiley = 0 To 14
x = x + 1
tilemap(tilex,tiley) = x
Next
Next

For tilex = 0 To 19
For tiley = 0 To 14
Print tilemap(tilex,tiley)
Next
Next
Don't only practice your art,
but force your way into its secrets,
for it and knowledge
can raise human to divine
 

CO2

ehemals "SirMO"

BeitragFr, Sep 24, 2010 14:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Für sowas ist (m)ein TileMapEditor gut (Showcase) Very Happy ...

Ich würde das noch andersser (Very Happy) machen:

Code: [AUSKLAPPEN]
For x = 0 To 14
          For y = 0 To 19
                    map(x, y) = ReadByte(tilemap)
                    DrawBlock tileset, x * 32, y * 32, map(x, y)
          Next
Next

WaitKey()
End


"tilemap" = Erstellte Datei mit den entsprechenden Werten
"tileset" = Bild mit entsprechenden Tiles

Hoffe ich konnte helfen,
mfG,
SirMO
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti
 

Kaddy

BeitragFr, Sep 24, 2010 16:28
Antworten mit Zitat
Benutzer-Profile anzeigen
SirMO hat Folgendes geschrieben:
Für sowas ist (m)ein TileMapEditor gut (Showcase) Very Happy ...

Ich würde das noch andersser (Very Happy) machen:

Code: [AUSKLAPPEN]
For x = 0 To 14
          For y = 0 To 19
                    map(x, y) = ReadByte(tilemap)
                    DrawBlock tileset, x * 32, y * 32, map(x, y)
          Next
Next

WaitKey()
End


"tilemap" = Erstellte Datei mit den entsprechenden Werten
"tileset" = Bild mit entsprechenden Tiles

Hoffe ich konnte helfen,
mfG,
SirMO



Nein dein Tileeditor kann mein problem defenitiev nicht lösen, da er nicht dazu gedacht ist codes zu überprüfen ;D und der code leider auch nicht da er nicht auf meinen aufbaut Wink

trotzdem danke

lg
Bin Aktuell auf der Suche nach einen Programmierer Team, ob Hobby Team oder Firma ist egal. Einfach eine PM an mich schreiben.
Bezahlung verlange ich NATÜRLICH keine Wink

Es gibt 10 arten von Menschen, die einen verstehen das Binärsystem , die anderen nicht SmileSmile

BladeRunner

Moderator

BeitragFr, Sep 24, 2010 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
ARGH! nicht den kompletten Vorpost zitieren, man!
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
 

CO2

ehemals "SirMO"

BeitragFr, Sep 24, 2010 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohh, sryy les es grade... Very Happy
Soll nicht wieder vorkommen ... versprochen
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti
 

primero

BeitragSa, Sep 25, 2010 23:25
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Ana
in dem Fall würden Were von 1-266 übergeben werden. wenn das Ziel ist nur Werte von 1-44 zu übergeben müsste x entweder immer wieder zurückgesetzt werden oder nur jeden soundsovielten Schrit erhöt (oder was ähnl.)

@ Kaddy
etwas wenig Code, mehr wäre wohl aufschlussreicher gewesen. Der Grund, weshalb in den Feldern immer Null überliefert wird, ist jedenfalls nicht zu finden. Nach dem Beispiel (ausgehend von der richtigen Schreibweise der Var) müsste jedes Feld den Wert 44 enthalten.

Was genau ist dein Ziel?
sollte ein zufälliger Wert übergeben werden sollte die var "zaelert" nicht über eine Schleife sondern über Rand definiert werden. etwa so:
Code: [AUSKLAPPEN]
for tilex=0 to 19
for tiley=0 to 14
zaelert=rand(1,44)
tilemap(tilex,tiley)=zaelert
;oder anstelle der vorherigen zwei zeilen nun einzeilig: tilemap(tilex,tiley)=rand(1,44)
next
next


wenn du die Felder aufsteigend nummerieren willst solltest du es so machen wie Ana es geschreiben hat. Sprich den Zähler in den beiden Schleifen hochsetzen. möglich ist dann ja auch ihn ab 44 wieder auf null oder eins zu setzen (if zaelert>44 then zaelert=1).

Alternativ würd ich raten dich an die Fehlerquelle heran zu tasten. dh. Abschnitte deines Qodes zu deaktivieren (";"), werte exakt zu deffinieren (zaelert=1 / tilemap(tilex,tiley)=1) und abzufragen. meist ist doch irgend wo ein vertipper drin, das Dimfeld wird iwo auf null gesetzt oder ähnliches.

hoffe das hilft, ansonsten etwas mehr code mind. bis zur stelle wo du den wert ausliest), zielgedanke genauer ausformulieren.

gruß Primero

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group