variablen problem feldverschiebung

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

xverbatimbasic

Betreff: variablen problem feldverschiebung

BeitragMi, Feb 16, 2005 15:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

würde mich über hilfe echt freuen Smile

folgendes Problem:
1) ich habe ein feldarray von der Größe 10*10 -->heißt feld(10,10), dieses wird mit Werten zufällig von 1 bis 3 gefüllt.
For x=1 To 10
For y=1 To 10
feld(x,y)=ZUFALLSWERT(1 bis 3)
Next
Next

2) jetzt habe ich eine Routine, in der ich an irgendeiner Position des Arrays, ein Feld auf 0 setze.



denke, bis hierhin ist es verständlich.


jetzt möchte ich, das wenn ich z.B. feld(1,5) auf 0 gesetzt habe, alle felder, genauer die felder
feld(1,10) bis feld(1,1) um eins nach unten gesetzt werden also auf feld(1,10) soll der inhalt von feld(1,9) auf feld(1,9) soll der inhalt von feld(1,8) usw. aber nur, wenn auch eine null noch da ist usw.


Es soll also eine Routine sein, die einfach die gesetzen Werte solange nach unten verschiebt, bis keine 0 mehr da ist.

zum besseren Verständnis, es soll so eine art tetris werden, habe 3 steine bzw. eine senkrechte reihe mit steinen und diese sollen einfach nach unten fallen, wenn ein zwischenraum ist (wert 0) ...

habe es so versucht aber ohne erfolg



For y=1 To 10
If feld(1,y )=0 Then feld(1,10-y)=feld(1,y-9)
Next



wäre über hilfe sehr dankbar

simi

BeitragMi, Feb 16, 2005 17:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, das machst du am Besten von hinten:
Code: [AUSKLAPPEN]

For y=10 To 1 step -1
  If feld(1,y)=0 Then feld(1,y)=feld(1,y-1)
Next


Hoffe habe das richtig verstanden...
 

xverbatimbasic

Betreff: geht leider nicht :-(((

BeitragMi, Feb 16, 2005 17:17
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,

erstmal danke, nur geht das so nicht, unten habe ich mal ein teil des codes !
ich habe ein feld 10*10 kugeln, in unterem beispiel soll eigentlich nur gehen, das wenn ich ein feld(eine kugel) in der ersten reihe lösche, alle anderen felder(kugeln in der reihe) nach unten wandern....

hat jemand eine idee ?

gruß
xvb



Code: [AUSKLAPPEN]
Global steingelb,steinrot,steingrün,figur,dummy,hintergrund,fntArial,schuss
Global mausx,mausy
Dim steinex(10), steiney(10)
Dim feld(10,10)
; setze 10*10 Feld mit 0 also leer
For x=1 To 10
For y=1 To 10
feld(x,y)=Rand(2,3)
Next
Next
lade_grafiken()
init_grafik()

; HAUPTPROGRAMM
   
Repeat
   
  Cls
DrawImage hintergrund,10, 0

setze_steine()
DrawImage steinrot,MouseX(),MouseY()
If MouseHit(2)=True Then pruefe_steine(); klick rechts prüfe erstmal reihe 1
If MouseHit(1)=True Then feld(MouseX()/32,MouseY()/32)=0; LÖSCHE FELD
Flip
Until KeyHit(28)
End
; ERSTAL NUR REIHE EINS PRÜFEN
Function pruefe_steine()
y=MouseY()/32


For y=10 To 1 Step -1
  If feld(1,y)=0 Then feld(1,y)=feld(1,y-1)
Next
 
End Function

Function setze_steine()
For y=1 To 10
For x=1 To 10
If feld(x,y)=1 Then DrawImage steinrot,x*32,y*32
If feld(x,y)=2 Then DrawImage steingrün,x*32,y*32
If feld(x,y)=3 Then DrawImage steingelb,x*32,y*32
Next
 Next
End Function

; Grafik neuzeichnen
;-------------------------------------

Function aktualisiere_grafik()
Color 255,115,25
SetFont fntArial
MaskImage figur,0,0,0
DrawImage figur,  mausx /32*32 ,  mausy/32*32
End Function

; Bereite Grafikausgabe vor INIT()
;-------------------------------------
Function init_grafik()
Graphics 1024,768,32,3
SetBuffer BackBuffer()
   fntArial=LoadFont("Arial",24,False,False,False)
ResizeImage hintergrund,600,600
End Function

simi

BeitragMi, Feb 16, 2005 17:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry, ich glaube so sollte es gehen....:
Zitat:

For y=9 To 1 Step -1
If feld(1,y)=0 Then feld(1,y)=feld(1,y+1)
Next
 

xverbatimbasic

Betreff: geht auch nicht :-(

BeitragMi, Feb 16, 2005 17:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
For y=9 To 1 Step -1
If feld(1,y)=0 Then feld(1,y)=feld(1,y+1):feld(1,2)=Rand(1,3)

Next 


nochmal hi,

nein, es geht auch nicht , wenn ich als test auf feld(1,2)=irgendwas setze, geht der inhalt nicht runter ....

;-((( wo ist denn bloss der fehler ???

help

simi

BeitragMi, Feb 16, 2005 17:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

For x=1 To 10
For y=9 To 1 Step -1
  If feld(1,y)=0 Then feld(1,y)=feld(1,y+1):feld(1,y+1)=0
Next
Next 


unschön, geht aber...
 

xverbatimbasic

Betreff: Danke simi :-)

BeitragMi, Feb 16, 2005 20:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Smile Du hast mein Abend gerettet Smile))))

läuft jetzt 1a


Gruß xvb

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group