bestimmter bereich in felder aufteilen in 50iger schritten
Übersicht

MiaBetreff: bestimmter bereich in felder aufteilen in 50iger schritten |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
will nen feld machen bei einer grafik von 800,600
das feld soll von 100,400 - 600,600 gehen und immer 50,50 großes einzelfeld haben da ichs entweder nicht versteh oder die funtion dim feld falsch verstanden hab und hier nix finde was ich verstehe frag ich einfach ma nach XD ja man könnte es mit einem kleinen schachbrett vergleichen hab natürlich auch schon nach schach gesucht um die funtion zu finden aber >.< ich will dann jedem einzeldem (50,50) feld ne variable zuordnen z.b. feld bei 100,400 das (50,50) groß is feld1 z.b. nur peil ichs nit wie XD naja ich schau ma ob ich was über objecte finde also vierecke vieleicht steht da ja was drin wie man bereiche zu variablen ordnen oder bereiche aufteilt |
||
2 jahre RO npcs gescriptet
1 jahr RO maps selbergemacht Text 250,250, "< 1 woche (Blitz) Basic geschrieben" |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du hast irgendwo mal geschrieben, dass du am besten mit Code umgehen kannst. Also nicht lange lesen, sondern gleich was zum 'anfassen'.
Was du - wie ich meine - suchst, nennt sich eine Tilemap bzw. einige nennen es auch Tilemapengine. Ich persönlich würde ~10 Zeilen Code nicht als Engine benennen, aber egal. Hier mal das einfachste und kürzeste was ich auf meiner Platte so finden konnte. Code: [AUSKLAPPEN] ;Grafikkramm
Graphics 320,320,32,2 SetBuffer BackBuffer() ;Variablen festlegen Dim xy%(29,29) ;Spielfeld mit 30^2 Tiles xp%=10 ;Start-X-Position im Spielfeld yp%=10 ;Start-Y-Position im Spielfeld ;ZufallsTiles For y=0 To 29 For x=0 To 29 xy(x,y)=Rand(0,255) Next Next ;Hauptroutine While Not KeyHit(1) ;Tastaturabfrage If KeyHit(203) Then xp=xp-1:If xp<0 Then xp=0 If KeyHit(205) Then xp=xp+1:If xp>20 Then xp=20 If KeyHit(200) Then yp=yp-1:If yp<0 Then yp=0 If KeyHit(208) Then yp=yp+1:If yp>20 Then yp=20 ;Tiles For y=0 To 9 For x=0 To 9 Color xy(xp+x,yp+y),0,0 Rect x*32,y*32,32,32,1 Next Next Flip Wend End Das Dim-Array ist bei mir zwei dimensional dim (x,y) - 1. Dimension x und 2. Dimension y. Jeweils jede Dimension habe ich mit einer Größe von 30 Felder bestückt 0 bis 29 ergibt 30... In folgenden Codezeilen werden nun alle 30x30 Felder mit einem Zufallswert belegt, damit man auch was erkennt, wenn man sich in dieser Map bewegt. Code: [AUSKLAPPEN] ;ZufallsTiles
For y=0 To 29 For x=0 To 29 xy(x,y)=Rand(1,6) Next Next In der Hauptschleife sollte die Tastaturabfrage klar sein. Interessant ist es erst da, wo nun die Map auf dem Bildschirm gezeichnet wird. Code: [AUSKLAPPEN] ;Tiles
For y=0 To 9 For x=0 To 9 Color xy(xp+x,yp+y),0,0 Rect x*32,y*32,32,32,1 Next Next Sieht zunächst kompliziert aus, ist es aber nicht. Erklärung: Graphics ist auf 320,320 gesetzt. Bei 32x32 großen Tiles (so nennt man die Grafikabschnitte/Kacheln) passen logischer weise 10x10 in Graphics rein. Das machen die beiden Schleifen For x=0 to 9 ergibt 10. Damit haben wir schon mal jeden Bereich des Bildschirmes ausgefüllt. Damit nun aber unsere zuvor per Zufall gezeichnete Map gesehen wird, muss diese auch korrekt ausgelesen werden. Das ginge zB so Color xy(x,y),0,0:Rect x*32,y*32,32,32,1 Somit hat jeder Bildschirmbereicht seine eigene Tile aus dem Dim-Array. Da wir aber noch das ganze bewegen wollen, packen wir einfach noch unsere Tastaturabfrage-Koordinaten mit ein. Color xy(xp+x,yp+y),0,0:Rect x*32,y*32,32,32,1 Wichtig! Ein Fehler den Anfänger ganz gerne mal machen bei sowas. Sie zeichnen oft die gesamte Map ein. Also auch die Bereiche, die sich ausserhalb des Bildschirmes befinden. Das kann bei großen Maps recht lahm werden. Bei der genannten Methode wird nur das sichtbare gezichnet. Überprüfen kannst das das, wenn du die beiden Schleifen nicht von 0 bis 9 sondern zB von 1 bis 8 zählen lässt. Als Erweiterung zu dieser Methode, gibt es noch eine Pixelgenaues Tilemapscrolling. Also bei Bewegung, nicht ganze Tiles springen, sondern beliebig Pixelganau. Die weitere Methode ist aber erheblich komplizierter und grad für den Anfang nicht sonderlich zu gebrauchen.^^ |
||
Mia |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wow danke dir ich probs direckt ma aus und hoffe ich kanns irgendwie gebrauchen für meinen zweck XD danke | ||
2 jahre RO npcs gescriptet
1 jahr RO maps selbergemacht Text 250,250, "< 1 woche (Blitz) Basic geschrieben" |
Mia |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
geht nit der lässt das nur auf einem punkt und dann wie ne karte scrollen ich will aber den bereich in kästchen aufteilen -.- | ||
2 jahre RO npcs gescriptet
1 jahr RO maps selbergemacht Text 250,250, "< 1 woche (Blitz) Basic geschrieben" |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
wieviele Kästchen möchtest du denn aufteilen? ambesten du Zeichnest mal ein beispiel in Paint und Postest es hier mal rein. EDIT: Ich hab mal schnell ein beispiel geschrieben: Code: [AUSKLAPPEN] Graphics 640,480
SetBuffer BackBuffer() ;Karte mit 9*9 Felder erstellen Dim Spielfeld(8,8) ;Die aktuelle karte setzen Restore map_data ;Karte lesen For y=0 To 8 For x = 0 To 8 Read Spielfeld(x,y) Next Next Repeat Cls ;Alle Felder durchgehen und zeichnen For y=0 To 8 For x = 0 To 8 map = Spielfeld(x,y) Color 128,0,0 If map = 1 Then Rect x*40+(x/3)*10,y*40+(y/3)*10,40,40,0 Next Next Flip Until KeyHit(1) End ;Die Daten der Karte .map_data Data 1,1,1,1,1,1,1,1,1 Data 1,1,1,1,1,1,1,1,1 Data 1,1,1,1,1,1,1,1,1 Data 1,1,1,1,1,1,1,1,1 Data 1,1,1,1,1,1,1,1,1 Data 1,1,1,1,1,1,1,1,1 Data 1,1,1,1,1,1,1,1,1 Data 1,1,1,1,1,1,1,1,1 Data 1,1,1,1,1,1,1,1,1 meinst du es vieleicht so in der art? MfG Andreas |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
Mia |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
den sand da wil ich in felder aufteilen so das ich da auf ein feld nen bild setzten kann
z.b. feld1 = das 100*100 groß ist links oben und dann nen anderes rechts oben in das feldX = 100* 100 das groß is |
||
2 jahre RO npcs gescriptet
1 jahr RO maps selbergemacht Text 250,250, "< 1 woche (Blitz) Basic geschrieben" |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was Hectic Dir geschrieben hat war durchaus ein passender Ansatz, er hatte nur eine Form der Bewegung dabei die Du nicht wolltest.
Nichts desto trotz speichert er Bilddaten in einer gekachelten Map (vgl. dein Ansatz des Schachbrettes). Wenn Du deinen Sand (der übrigens verdächtig nach Jutesack aussieht) in Kacheln unterteilen willst, zeichne ihn per drawimage ein und lege darüber als zweite Schicht die im Dim-Feld gespeicherte Map mit den Dingen (Häusern, was weiss ich) die du draufsetzen willst. Also schau dir den Code meiner Vorredner nochmal genau an und versuch ihn zu verstehen, denn er enthält alles was Du brauchst. |
||
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group