position setzen...

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Colius

Betreff: position setzen...

BeitragMi, März 15, 2006 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo
habe vor nicht altzulanger zeit von einem fertigprogrammierten Editor mir eine map hergestellt und nun hab ich sie in mein spiel geladen...
ich habees die karte unten links gebastelt habe aber festgestellt dass blitzbasic nicht weiß wo er hin muss auf die position um das und das anzuzeigen könntet ihr mir helfen?




;- Bildschirmlänge
Graphics 640,480,0,2

;- Flammer
SetBuffer BackBuffer ()




frametimer = CreateTimer (30) ; um auf allen rechnern gleichschnell ablaufen zu lassen.

;- Farbe fürs löschen des bildschirms
ClsColor 0,0, 255 ;farbe mit dem der bildschirm gelörscht wird

;-Gfx Laden

Global hans = LoadImage ("hans.bmp") ;Die Spielfigur laden und ebenfalls die Transparente Farbe setzen.
MaskImage hans, 255, 0, 255

;- Steuerung
;Variablen und Constante bestimmen
Global Player_pos_x = 20
Global Player_pos_y = 400



Const rauf = 200, runter = 208, rechts = 205, links = 203, space = 57



;neuen level laden
map=ReadFile("Map1.map")
For y=0 To 158
For x=0 To 158
Next
Next

;-Hauptschleife
Repeat
Cls ;Bildschirm löschen
WaitTimer (frametimer) ;Den gewählten Zeitgeber warten
DrawImage hans,Player_pos_x,Player_pos_y ;Figur zeichnen
If KeyDown(links) Then Player_pos_x = Player_pos_x -4
If KeyDown(rechts) Then Player_pos_x = Player_pos_x+4
Flip ;Bildschirm tauschen

Until KeyHit (1)
End
 

Schnuff

BeitragMi, März 15, 2006 18:23
Antworten mit Zitat
Benutzer-Profile anzeigen
du liest die Map ja garnicht richtig ein
Code: [AUSKLAPPEN]
;neuen level laden
map=ReadFile("Map1.map")
For y=0 To 158
For x=0 To 158
;hier muss die map ausgelesen werden!
Next
Next
Programmers dont die. They gosub without return...
 

Colius

BeitragMi, März 15, 2006 18:28
Antworten mit Zitat
Benutzer-Profile anzeigen
oh okey Smile schnell fehler gefunden Embarassed
könntest du mir sagen dan wie ich das richtig lade?
 

Schnuff

BeitragMi, März 15, 2006 18:30
Antworten mit Zitat
Benutzer-Profile anzeigen
welchen mapeditor benutzt du?
gucke mal in den Mapeditor ordner da müsstest du ne hilfe datei finden!
Programmers dont die. They gosub without return...
 

Colius

BeitragMi, März 15, 2006 18:31
Antworten mit Zitat
Benutzer-Profile anzeigen
ist ein mapeditor von einem freund der das programmiert hat
(den editor)
 

Schnuff

BeitragMi, März 15, 2006 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
dann musst du ihn fragen, wie man das läd!

es gibt immer unterschiedliche methoden!
Programmers dont die. They gosub without return...
 

Colius

BeitragMi, März 15, 2006 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist der Mapeditor
mpx%=0 ;aktuelle mausposition
mpy%=0 ;aktuelle mausposition
npx%=0 ;mausposition raster
npy%=0 ;mausposition raster
mt1%=0 ;maustaste links
mt2%=0 ;maustaste rechts
tpx%=10 ;tilemapscrollposition
tpy%=140 ;tilemapscrollposition
fpx%=0 ;maus auf feldposition
fpy%=0 ;maus auf feldposition
swp%=0 ;swap map [0/1]

Graphics 1024,768,32,1
SetBuffer BackBuffer()

Global blocks=LoadAnimImage ("GrafikplatteLostWarrior.bmp",64,64,0,96)


Dim vgm%(159,159)

;neuen level laden
file=ReadFile("rohling.map")
For y=0 To 159
For x=0 To 159
vgm(x,y)=ReadByte(file)
Next
Next




;hauptprogramm
While Not KeyHit(1)

;variablen
mpx=MouseX()
mpy=MouseY()
npx=Int(mpx/64)*64
npy=Int(mpy/64)*64
mt1=MouseDown(1)
mt2=MouseDown(2)

;tastaturabfrage
If KeyDown(203) Then tpx=tpx-1:If tpx<000 Then tpx=000
If KeyDown(205) Then tpx=tpx+1:If tpx>148 Then tpx=148
If KeyDown(200) Then tpy=tpy-1:If tpy<000 Then tpy=000
If KeyDown(208) Then tpy=tpy+1:If tpy>148 Then tpy=148
If KeyDown(31) Then SaveImage
If KeyDown(38) Then LoadImage
If KeyHit(57) Then swp=1-swp

;variablen
fpx=tpx+(mpx/64)
fpy=tpy+(mpy/64)

;map zeichnen
For y=0 To 11
For x=0 To 11
If vgm(x+tpx,y+tpy)>0 Then DrawImage blocks,x*64,y*64,vgm(x+tpx,y+tpy)
Next
Next

;fadenkreuz mitte map
Rect 5119-tpx*64,5060-tpy*64,2,120
Rect 5060-tpx*64,5119-tpy*64,120,2

;menü zeichnen
For y=0 To 11
For x=0 To 3
DrawImage blocks,768+x*64,y*64,x+y*8+swp*4
Color 0,0,0:Rect 768+x*64,y*64,64,64,0
Next
Next

;bildschirmauswahl
If mpx<768 Then
Color 0,0,0
Rect npx,npy,64,64,1
DrawImage blocks,npx,npy,auswahl
If mt1=1 Then vgm(fpx,fpy)=auswahl
If mt2=1 Then auswahl=vgm(fpx,fpy)
Else
DrawImage blocks,npx,npy,(npx/64)-12+(npy/8)+swp*4
If mt1=1 Then auswahl=(npx/64)-12+(npy/8)+swp*4
If mt2=1 Then auswahl=(npx/64)-12+(npy/8)+swp*4
End If

;mousecursor
Color 255,255,255
Rect mpx-12,mpy-1,25,3
Rect mpx-1,mpy-12,3,25
Rect npx,npy,64,64,0

;scrollbalken
Color 255,255,255
Rect tpx*4.8,0,58,1
Rect tpx*4.8,767,58,1
Rect 767,tpy*4.8,1,58
Rect 0,tpy*4.8,1,58

;Delay 30
Flip
Cls
Wend
End

;level speichern
Function SaveImage()
SetBuffer FrontBuffer()

WritePixel 0,0,0
For y=0 To 767 Step 2
For x=0 To 1023 Step 2
WritePixelFast x+1,y+1,0
WritePixelFast x,y,0
Next
Next

FlushKeys
Color 255,255,255
Text 100,128,"dateinamen zum speichern der map eingeben"
Text 100,144,"drücken sie einfach [ENTER] um zurück zu kommen"

Locate 100,160
name$=Input$("dateiname: ")

If Not name$="" Then
newfile=WriteFile(name$)

For y=0 To 159
For x=0 To 159
WriteByte(newfile,vgm(x,y))
Next
Next
End If

SetBuffer BackBuffer()
End Function




;neuen level laden
Function LoadImage()
SetBuffer FrontBuffer()

WritePixel 0,0,0
For y=0 To 767 Step 2
For x=0 To 1023 Step 2
WritePixelFast x+1,y+1,0
WritePixelFast x,y,0
Next
Next

FlushKeys
Color 255,255,255
Text 100,128,"dateinamen zum laden der map eingeben"
Text 100,144,"drücken sie einfach [ENTER] um zurück zu kommen"

Locate 100,160
name$=Input$("dateiname: ")

If Not name$="" Then
newfile=ReadFile(name$)

For y=0 To 159
For x=0 To 159
vgm(x,y)=ReadByte(newfile)
Next
Next
End If

SetBuffer BackBuffer()
End Function
 

Schnuff

BeitragMi, März 15, 2006 18:36
Antworten mit Zitat
Benutzer-Profile anzeigen
da stehts doch drinne
Colius hat Folgendes geschrieben:

;neuen level laden
file=ReadFile("rohling.map")
For y=0 To 159
For x=0 To 159
vgm(x,y)=ReadByte(file);<------------ Hier Cool
Next
Next


Zitat:

;neuen level laden
Function LoadImage()
SetBuffer FrontBuffer()

WritePixel 0,0,0;----------------
For y=0 To 767 Step 2;--------
For x=0 To 1023 Step 2;-------
WritePixelFast x+1,y+1,0;----- Wofür ist das?
WritePixelFast x,y,0;-----------
Next;-----------------------------
Next;-----------------------------

FlushKeys
Color 255,255,255
Text 100,128,"dateinamen zum laden der map eingeben"
Text 100,144,"drücken sie einfach [ENTER] um zurück zu kommen"

Locate 100,160
name$=Input$("dateiname: ")

If Not name$="" Then
newfile=ReadFile(name$)

For y=0 To 159
For x=0 To 159
vgm(x,y)=ReadByte(newfile)
Next
Next
End If

SetBuffer BackBuffer()
End Function
Programmers dont die. They gosub without return...
 

Colius

BeitragMi, März 15, 2006 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
ich verstehe nicht ganz wie ich das da dann laden kann
wenn ich


;neuen level laden
map=ReadFile("Map1.map")
For y=0 To 159
For x=0 To 159
vgm(x,y)=ReadByte(map)

Next
Next

mache kommt bei mir dan das ich ein ( vergessen hätte
 

Colius

BeitragMi, März 15, 2006 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist zum laden einer map beim dem editor nur hab ich sowas im spiel nicht sondern der soll das dan gleich laden

Ps: sry wegen doppelpost Rolling Eyes
 

Schnuff

BeitragMi, März 15, 2006 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
dfür gibts den Edit button Wink

du musst erst nach()zu anfang
Code: [AUSKLAPPEN]
dim vgm(höhe der karte,Breite der karte)

angeben
und ersetze einfach das input durch die zu ladene Datei
Programmers dont die. They gosub without return...
 

Colius

BeitragMi, März 15, 2006 18:51
Antworten mit Zitat
Benutzer-Profile anzeigen
du meinst so?

;-Kartendateien lesen
;neuen level laden
Dim vgm (159,159)
file=ReadFile("Map1.map")
For y=0 To 158
For x=0 To 158
vgm(x,y)=ReadByte(file)


Next
Next
 

Schnuff

BeitragMi, März 15, 2006 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
und dann musst du in der Schleife nurnoch alles ausgeben
Code: [AUSKLAPPEN]
;hauptprogramm
While Not KeyHit(1)

;variablen
mpx=MouseX()
mpy=MouseY()
npx=Int(mpx/64)*64
npy=Int(mpy/64)*64
mt1=MouseDown(1)
mt2=MouseDown(2)

;tastaturabfrage
If KeyDown(203) Then tpx=tpx-1:If tpx<000 Then tpx=000
If KeyDown(205) Then tpx=tpx+1:If tpx>148 Then tpx=148
If KeyDown(200) Then tpy=tpy-1:If tpy<000 Then tpy=000
If KeyDown(208) Then tpy=tpy+1:If tpy>148 Then tpy=148
If KeyDown(31) Then SaveImage
If KeyDown(38) Then LoadImage
If KeyHit(57) Then swp=1-swp

;variablen
fpx=tpx+(mpx/64)
fpy=tpy+(mpy/64)

;map zeichnen
For y=0 To 11
For x=0 To 11
If vgm(x+tpx,y+tpy)>0 Then DrawImage blocks,x*64,y*64,vgm(x+tpx,y+tpy)
Next
Next
Programmers dont die. They gosub without return...
 

Colius

BeitragMi, März 15, 2006 18:55
Antworten mit Zitat
Benutzer-Profile anzeigen
dies wird ein jump and run game deshalb lass ich ma die mouse raus Smile
nun da ich so wies aussieht die map wohl geladen habe wie kann ich die position angeben wo man zum anfang sieht
 

Schnuff

BeitragMi, März 15, 2006 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
proier mit tpx und tpy
Programmers dont die. They gosub without return...
 

Colius

BeitragMi, März 15, 2006 19:00
Antworten mit Zitat
Benutzer-Profile anzeigen
ich bin noch nich so gut im umgang mit variablen wie kann sowas zb aufsehen ich kann wohl schlecht am anfang nur die
tpx%=10 ;tilemapscrollposition
tpy%=140 ;tilemapscrollposition
variable angeben oder doch?
 

Schnuff

BeitragMi, März 15, 2006 19:08
Antworten mit Zitat
Benutzer-Profile anzeigen
doch, kannst du Laughing
außerdem kannst du die % zeichen weg lassen(übernimmt bb auch selber)
Programmers dont die. They gosub without return...
 

Colius

BeitragMi, März 15, 2006 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
nun hab ich die variable reingesetzt aber ist noch immer schwarz ...
warum?

;- Bildschirmlänge
Graphics 640,480,0,2

;- Flammer
SetBuffer BackBuffer ()



frametimer = CreateTimer (30) ; um auf allen rechnern gleichschnell ablaufen zu lassen.

;- Farbe fürs löschen des bildschirms
;ClsColor 0,0, 255 ;farbe mit dem der bildschirm gelörscht wird

;-Gfx Laden

Global hans = LoadImage ("hans.bmp") ;Die Spielfigur laden und ebenfalls die Transparente Farbe setzen.
MaskImage hans, 255, 0, 255

;- Steuerung
;Variablen und Constante bestimmen
Global Player_pos_x = 20 ;Spielekoordinaten setzen. Um die Variablen in den Routinen benutzen zu
Global Player_pos_y = 120 ;können, müssen diese Globalisiert werden


tpx =10 ;tilemapscrollposition
tpy =60 ;tilemapscrollposition

Const rauf = 200, runter = 208, rechts = 205, links = 203, space = 57




;neuen level laden
Dim vgm (159,159)
file=ReadFile("Map1.map")
For y=0 To 158
For x=0 To 158
vgm(x,y)=ReadByte(file)

Next
Next




;-Hauptschleife
Repeat
Cls ;Bildschirm löschen
WaitTimer (frametimer) ;Den gewählten Zeitgeber warten
DrawImage hans,Player_pos_x,Player_pos_y ;Figur zeichnen
If KeyDown(links) Then Player_pos_x = Player_pos_x -4
If KeyDown(rechts) Then Player_pos_x = Player_pos_x +4
Text 0,0,Player_pos_x
Text 100,0,Player_pos_y
Flip ;Bildschirm tauschen

Until KeyHit (1)
End

skey-z

BeitragMi, März 15, 2006 19:53
Antworten mit Zitat
Benutzer-Profile anzeigen
zuerst mal musst du die Tiles laden, wenn sie alle in einer datei stehen:
tiles=loadanimimage(Datei$, breite des Tiles, höhe des Tiles, anzahl Tiles, startposition(meist 0)

Falls die Tiles alle einzeln gespeichert sind, noch ein Dim-Array anlegen und dort alle Bilder drin speichern

in der Hauptschleife musst du sie natürlich auch noch zeichnen:


for y = 0 to 159
for x = 0 to 159
Drawimage bildvariable, positionX, positionY, vgm(x,y) ; 1.Methode
Drawimage bildvariable(index), positionX, positionY ; 2. Methode
next
next


zusätzlich noch der Verweis auf die Onlinehilfe

und Robsite(gute Tutorials)
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
 

Colius

BeitragMi, März 15, 2006 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
zuerst mal musst du die Tiles laden, wenn sie alle in einer datei stehen:
tiles=loadanimimage(Datei$, breite des Tiles, höhe des Tiles, anzahl Tiles, startposition(meist 0)

Falls die Tiles alle einzeln gespeichert sind, noch ein Dim-Array anlegen und dort alle Bilder drin speichern

in der Hauptschleife musst du sie natürlich auch noch zeichnen:


for y = 0 to 159
for x = 0 to 159
Drawimage bildvariable, positionX, positionY, vgm(x,y) ; 1.Methode
Drawimage bildvariable(index), positionX, positionY ; 2. Methode
next
next


wie meinst du das mit hauptschleife ?
kanst du "Draw image Bildvariable ..." mir erklären falls das nicht so große umstände bereitet? denn das mit vgm(x,y) fersteh ich nicht

du zeichnest doch nur das bild dann auf mit drawimage in einer position nur wenn der computer die karte in der mitte anzeigt und ich sie dann unten links hab kann ich leider die grafiken dan noch immer nicht sehen Confused

Ps :habe alle bilder als tiles

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group