dim problem mit tiles
Übersicht

![]() |
BlitzproggerBetreff: dim problem mit tiles |
![]() Antworten mit Zitat ![]() |
---|---|---|
wie kann man denn abfragen ob ein tile = 1 oder 0 ist? ich habe es so versucht:
Code: [AUSKLAPPEN] Graphics 800,600,16,1
SetBuffer BackBuffer() ClsColor 200,200,255 Color 0,0,0 baum = LoadImage("baum.bmp") wiese = LoadImage("wiese.bmp") x=0 y=0 Dim tile(299) tile(35) = 1 tile(150) = 1 tile(200) = 1 While Not KeyDown(1) For i=1 To 300 If tile() = 1 Then DrawBlock baum,x,y If tile() = 0 Then DrawBlock wiese,x,y x = x + 40 If x > 799 Then x = 0 y = y + 40 EndIf Next Flip Cls Wend End das geht aber eleider nicht ![]() mfg |
||
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/
Unfreiwilliger Gewinner des BAC# 115. ![]() |
Tritium |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: If tile() = 1 Then DrawBlock baum,x,y
Setz in tile() die Schleifenvariable ein, dann gehts. edit Und außerdem musst Du die Schleife dann von 0 bis 299 laufen lassen. |
||
![]() |
Blitzprogger |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich habs mit einer variable versucht (v), das sah dann etwa so aus:
Code: [AUSKLAPPEN] for i=1 to 300
if tile(v) = 1 then ..... if tile(v) = 0 then ..... v = v + 1 next das hat aber nicht funktioniert ![]() mfg |
||
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/
Unfreiwilliger Gewinner des BAC# 115. ![]() |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Deine Schleifenvariable ist ''i'' und nicht ''v''.
edit1: mom... Also dein ganzer Ansatz ist etwas Merkwürdig. Probier mal folgenden (on the fly) Code: [AUSKLAPPEN] Graphics 800,600,16,1
SetBuffer BackBuffer() ClsColor 200,200,255 Color 0,0,0 Dim bilder(1) bilder(0) = LoadImage("baum.bmp") bilder(1) = LoadImage("wiese.bmp") Dim tile(19,14) tile(14,1) = 1 tile(10,7) = 1 tile(10,9) = 1 While Not KeyDown(1) For y=0 To 14 For x=0 To 19 DrawBlock bilder(tile(x,y)),x*40,y*40 Next Next Flip Cls Wend End |
||
![]() |
Blitzprogger |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke hectic, es functioniert jetzt ![]() ![]() mfg |
||
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/
Unfreiwilliger Gewinner des BAC# 115. ![]() |
![]() |
Blitzprogger |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich hab zwar nun schon eine kleine landschaft gemalt (mit den tiles) aber nun kommt das problem mit der kollision. ich will ja nicht dass die spielfigur durch bäume und mauern geht und jede position mit "if x > 100 and x < 120 then ....." abfragen ist auch zimlich umständlich. deshalb frage ich euch wie ich das denn anstellen soll. bitte um schnelle hilfe.
mfg |
||
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/
Unfreiwilliger Gewinner des BAC# 115. ![]() |
![]() |
Caesium |
![]() Antworten mit Zitat ![]() |
---|---|---|
bei der bewegungsroutine musst du jeweils eine abfrage einbauen.
wenn du beispielsweise den spieler auf der x-achse um ein feld nach rechts bewegen möchtest, fragst du vorher ab, ob an der map position, zu der der spieler gelangen will, eine wand ist, oder nicht. ist dort eine, wird die bewegungsroutine nicht ausgeführt: Code: [AUSKLAPPEN] ;beispiel für bewegen nach rechts
If map(px + 1, py) <> "0" ;0 = wand, wenn da keine wand ist, wird der spieler bewegt px = px + 1 EndIf ;... usw. gruß, caesium |
||
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann. Das Gegenteil ist da schon schwieriger. ![]() |
![]() |
Blitzprogger |
![]() Antworten mit Zitat ![]() |
---|---|---|
irgendwie verstehe ich dein beispiel net ganz. soweit ich das verstanden habe testet es ob der pixel = 0 ist, oder ? fallls nicht entschuldige meine aussage. ich bitte hier nochmals um hilfe. kann mir einer sagen wie man das tile nebenan "abfragt" ob es in einem bestimmten bereich liegt? hoffe auf hilfe trotz meinen nervenden fragen ![]() mfg |
||
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/
Unfreiwilliger Gewinner des BAC# 115. ![]() |
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
If map(px + 1, py) <> "0"
warum hast du die 0 in "" gemacht? aber den Rest könnte ich mal versuchen zu erläutern ![]() also: deine Koordinate musst du wie auf einem Schachbrett vorstellen. ![]() ![]() wenn du dich auf der Koordinate (8|4) aufhälst und nach rechts gehen willst, dann muss du die Koordinate (9|4) Prüfen. Da (9|4) logischerweise rechts von (8|4) ist. sooo Zitat: Code: [AUSKLAPPEN]
If map(px + 1, py) <> 0 ;0 = wand, wenn da keine wand ist, wird der spieler bewegt
px = px + 1 EndIf If map(px + 1, py) ;prüft das Tile rechts neben dir px+1 bedeutet das tile eins rechts von dir If map(px+1,py) <> 0 ;es wird eine Aktion durchgeführt wenn das Tile neben dir nicht 0 ist <> = nicht px = px + 1 deine Koordinate wird versetzt, du bewegst dich also endif;müsste klar sein ^^ mfg Intel Quad-Core ViiV unmatched |
||
- Zuletzt bearbeitet von TimBo am So, März 30, 2008 15:16, insgesamt einmal bearbeitet
![]() |
Caesium |
![]() Antworten mit Zitat ![]() |
---|---|---|
*hust*... mein fehler. lese die maps als aus dateien per ReadLine und speichere sie dann in einem string-array.. war wohl iwie automatisch, dass ich die anführungszeichen da hin gemacht habe. danke fürs verbessern. ^^
gruß, caesium |
||
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann. Das Gegenteil ist da schon schwieriger. ![]() |
![]() |
Blitzprogger |
![]() Antworten mit Zitat ![]() |
---|---|---|
entschuldigt meine dummheit ![]() ![]() ![]() mfg |
||
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/
Unfreiwilliger Gewinner des BAC# 115. ![]() |
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nehmen wir an du hast 32x32 Tiles.
Dann kannst du Int(Spielerposition durch 32) machen, und hast die Position auf dem Tile. MfG Und um Maps zu speichern: Bau dir einen Editor. |
||
![]() |
Blitzprogger |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke für deine antwort the nici ![]() ![]() hier mein Code: [AUSKLAPPEN] Graphics 800,600,16,1
SetBuffer BackBuffer() ; das mit dem bilderladen ruhig überspringen :-) Dim bilder(18) bilder(0) = LoadImage("wiese.bmp") bilder(1) = LoadImage("weg1.bmp") bilder(2) = LoadImage("weg2.bmp") bilder(3) = LoadImage("weg3.bmp") bilder(4) = LoadImage("weg4.bmp") bilder(5) = LoadImage("weg5.bmp") bilder(6) = LoadImage("weg6.bmp") bilder(7) = LoadImage("mauerweg.bmp") bilder(8) = LoadImage("baum.bmp") bilder(9) = LoadImage("felsen.bmp") bilder(10) = LoadImage("mauer.bmp") bilder(11) = LoadImage("turm.bmp") bilder(12) = LoadImage("mauer2.bmp") bilder(13) = LoadImage("haus1.bmp") bilder(14) = LoadImage("haus2.bmp") bilder(15) = LoadImage("haus3.bmp") bilder(16) = LoadImage("haus4.bmp") bilder(17) = LoadImage("platz.bmp") bilder(18) = LoadImage("mausli.bmp") xxx = Input("geben sie bitte die menge x-tiles (max.20) ein: ") yyy = Input("geben sie bitte die menge y-tiles (max 15) ein: ") xxx = xxx - 1 yyy = yyy - 1 px = 0 py = 0 Dim tile(xxx,yyy) While Not KeyDown(1) xx = MouseX() yy = MouseY() mh = MouseHit(1) For y=0 To yyy For x=0 To xxx DrawBlock bilder(tile(x,y)),x*40,y*40 Next Next DrawImage bilder(18),xx,yy If mh Then px = ; was kommt hier hin ?????????? py = ; und hier ?????????? tile(px,py) = 8 EndIf Flip Cls Wend End wie muss ich das anpacken/rechnen ? mfg |
||
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/
Unfreiwilliger Gewinner des BAC# 115. ![]() |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei so vielen Bildern bei auch noch gleicher größe, würde ich diese in ein Bild packen und per LoadAnimImage laden.
Deine Positionierung ist folgende: Mapposition = ( Mausposition / Tilekantenlänge ) + Offset Wobei Offset nur benötigt wird, wenn die Map nicht links/oben vom Bildschirm anfängt. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Moep |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde dir empfehlen eines der vielen Tilemap tutorials anzuschauen. Es gibt ja genug davon@Suche.
mfg |
||
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42 Achtung: Suchtgefahr! moep123.ohost.de |
![]() |
Blitzprogger |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi nochmals
ich bastel nun an nem editor, das klappt alles gut bis auf das problem dass wenn ich in ein anderes fenster gehe ( das ich in einer function geschrieben habe) komm ich nicht mehr zurück zur benutzeroberfläche ( der editor den ich nicht in einer function geschrieben habe weil es sonst nicht geht). kennt ihr einen befehl der das programm zu einem früheren punkt im code führt? danke für die geduld ![]() mfg |
||
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/
Unfreiwilliger Gewinner des BAC# 115. ![]() |
![]() |
Caesium |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] code....
.marke code.... Goto marke code.... Goto springt zu einer marke, die vorher im code mit einem . vornedran definiert wurde. ist allerdings eine sehr unschöne lösung, da die übersichtlichkeit darunter leidet, vor allem im häufigeren gebrauch. gruß, caesium |
||
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann. Das Gegenteil ist da schon schwieriger. ![]() |
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
also ich verstehe das nicht, friert dein Prog ein? oder schau ma wenn du sowas hast Code: [AUSKLAPPEN] if fenster2 then fenster()
wenn du sowas in der art hast, musst du dafür sorgen, dass fenster2 wieder false wird. ansonsten kommst du doch raus wenigstens beim nächsten schleifendurchgang der main schleife. im Notfall kannst du doch GoTo und GoSub -> Blitzbase.de nachschauen ^^ mfg Intel ViiV Quad-Core |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und wieso gibt hier niemand ql:Return als Lösung an?
Wenn man in einer Funktion feststeckt nicht nur die eleganteste sondern auch die einfachste Lösung. mfG, Christoph |
||
![]() |
Blitzprogger |
![]() Antworten mit Zitat ![]() |
---|---|---|
return begreife ich nicht ![]() hier mal meinCode: [AUSKLAPPEN] Graphics 800,600,16,1
SetBuffer BackBuffer() Dim bilder(18) bilder(0) = LoadImage("wiese.bmp") bilder(1) = LoadImage("weg1.bmp") bilder(2) = LoadImage("weg2.bmp") bilder(3) = LoadImage("weg3.bmp") bilder(4) = LoadImage("weg4.bmp") bilder(5) = LoadImage("weg5.bmp") bilder(6) = LoadImage("weg6.bmp") bilder(7) = LoadImage("mauerweg.bmp") bilder(8) = LoadImage("baum.bmp") bilder(9) = LoadImage("felsen.bmp") bilder(10) = LoadImage("mauer.bmp") bilder(11) = LoadImage("turm.bmp") bilder(12) = LoadImage("mauer2.bmp") bilder(13) = LoadImage("haus1.bmp") bilder(14) = LoadImage("haus2.bmp") bilder(15) = LoadImage("haus3.bmp") bilder(16) = LoadImage("haus4.bmp") bilder(17) = LoadImage("platz.bmp") bilder(18) = LoadImage("mausli.bmp") Global xxx = Input("geben sie bitte die menge x-tiles (max.20) ein: ") Global yyy = Input("geben sie bitte die menge y-tiles (max 15) ein: ") Global xxxx = xxx - 1 Global yyyy = yyy - 1 Global px = 0 Global py = 0 Global aus = 8 If lol = 0 Then edit Dim tile(xxx,yyy) ;************************************************************************************************ Function edit() ; das war ein versuch das programm auf diese stelle zu bringen End Function While Not KeyDown(1) xx = MouseX() yy = MouseY() mh = MouseDown(1) md = MouseDown(2) For y=0 To yyyy For x=0 To xxxx DrawBlock bilder(tile(x,y)),x*40,y*40 Next Next If KeyHit(57) Then auswahl DrawImage bilder(18),xx,yy If mh Then px = xx / 40 py = yy / 40 tile(px,py) = aus EndIf If md Then px = xx / 40 py = yy / 40 tile(px,py) = 0 EndIf Flip Cls Wend ;***************************************************************************************************** Function auswahl() While Not KeyDown(1) xx = MouseX() yy = MouseY() mh = MouseDown(1) md = MouseDown(2) Rect 20,20,760,560 DrawBlock bilder(1),600,40 DrawBlock bilder(2),600,80 DrawBlock bilder(3),600,120 DrawBlock bilder(4),600,160 DrawBlock bilder(5),600,200 DrawBlock bilder(6),600,240 DrawBlock bilder(7),600,280 DrawBlock bilder(8),600,320 DrawBlock bilder(9),600,360 DrawBlock bilder(10),600,400 DrawBlock bilder(11),600,440 DrawBlock bilder(12),600,480 DrawBlock bilder(13),600,520 DrawBlock bilder(14),640,40 DrawBlock bilder(15),640,80 DrawBlock bilder(16),640,120 DrawBlock bilder(17),640,160 Text 600,40, "nr.0" Text 600,80, "nr.1" Text 600,120, "nr.2" Text 600,160, "nr.3" Text 600,200, "nr.4" Text 600,240, "nr.5" Text 600,280, "nr.6" Text 600,320, "nr.7" Text 600,360, "nr.8" Text 600,400, "nr.9" Text 600,440, "nr.10" Text 600,480, "nr.11" Text 600,520, "nr.12" Text 640,40, "nr.13" Text 640,80, "nr.14" Text 640,120, "nr.15" Text 640,160, "nr.16" Locate 30,30 aus = Input("Nr. : ") DrawImage bilder(18),xx,yy If KeyHit(57) Then edit Flip Cls Wend End Function End ist viel code ^^ ich hoffe ihr seht das problem mfg |
||
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/
Unfreiwilliger Gewinner des BAC# 115. ![]() |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group