anders schreiben?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Quäiny

Betreff: anders schreiben?

BeitragFr, Mai 02, 2008 21:54
Antworten mit Zitat
Benutzer-Profile anzeigen
sollte ich das anders machen mit types und fiels???
hättet ihr das genauso geamacht?

Code: [AUSKLAPPEN]

Graphics 1024,768
SetBuffer BackBuffer()

;tileset
tileset = LoadAnimImage("tiles.png",16,25,0,11)
;figur
ich = LoadImage("ichkleinformat5.png")
ichhinten=LoadAnimImage("ichkleinformat.png",16,25,0,3)
ichrechts=LoadAnimImage("ichkleinformat2.png",16,25,0,3)
ichlinks=LoadAnimImage("ichkleinformat3.png",16,25,0,3)
ichvorne=LoadAnimImage("ichkleinformat4.png",16,25,0,3)
zimmer=LoadImage("meinzimmer.png")
schrank=LoadImage("schrank.png")
bett=LoadImage("bett.png")
tisch=LoadImage("tisch.png")
fenster=LoadImage("fenster.png")
fenster2=CopyImage(fenster)
fernseher=LoadImage("fernseher.png")
computer=LoadImage("computer.png")
sitzsaecke=LoadImage("sitzsäcke.png")
buecherschrank=LoadImage("bücherschrank.png")
sofa=LoadImage("sofa.png")
ichhintene=LoadImage("ichkleinformat6.png")
ichlinkse=LoadImage("ichkleinformat7.png")
ichrechtse=LoadImage("ichkleinformat8.png")

;px Variable des Spielers
px = 12
;py Variable des Spielers
py = 22
;Direckt move = 1 damit die Figur auch am Anfang sichbar ist
move = 1

MaskImage ich,32,156,0
MaskImage ichhinten,32,156,0
MaskImage ichrechts,32,156,0
MaskImage ichlinks,32,156,0
MaskImage ichvorne,32,156,0
MaskImage schrank,255,255,255
MaskImage bett,255,255,255
MaskImage tisch,255,255,255
MaskImage fernseher,255,255,255
MaskImage computer,255,255,255
MaskImage sitzsaecke,255,255,255
MaskImage sofa,255,255,255



 ;die map-array
Dim map(20,29)

;die Karte
; 0 = tapette
; 1 = teppich

timer=CreateTimer(5)

Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0
Data 6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7
Data 6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7
Data 6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7
Data 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7
Data 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7
Data 6,9,9,9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7
Data 6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7
Data 6,1,1,1,1,1,1,9,9,9,9,1,1,1,1,1,1,1,1,7
Data 0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0


;einlesen und die zahlen der Tiles in der array speichern
For y = 0 To 28
For x = 0 To 19
Read map(x,y)
Next
Next

Repeat

Cls

If KeyDown(1) Then End
CreateTimer(1)
;malt die karte. Die auf der map gespeicherten zahlen einfach als framezahl des tilesets nehmen 
For y = 0 To 29
For x = 0 To 20
DrawBlock tileset,x*16,y*25,map(x,y)
Next
Next
DrawImage schrank,16,510
DrawImage bett,16,640
DrawImage tisch,16,610
DrawImage fenster,85,500
DrawImage fenster2, 220,500
DrawImage fernseher, 140,527
DrawImage computer,200,527
DrawImage sitzsaecke,130,570
DrawImage buecherschrank,250,510

;einfach wenn tastendruck dann
If KeyDown(208) Then
;wenn die position des spielers (px,py+1) mit einem tile kollidiert, dass in der array einen höeren
;wert als 2 hat geht der if-satz nicht weiter und die figur bleibt stehen 
;die 2 ist gleichzeitig das frame des tilesets
If map(px,py+1) <2 Then
;die figur wird um ein tile bewegt
py = py+1
;überträgt die spielerkoordinaten auf die x und y variablen der map und malt unsere figur
 move = 1

End If
End If


If KeyDown(200) Then
If map(px,py-1) <2 Then
py = py -1
move =1

End If
End If


If KeyDown(203) Then
If map(px-1,py) <2 Then
px = px -1
 move = 1

End If
End If


If KeyDown(205) Then
If map(px+2,py) < 2 Then
px = px +1
 move =1


End If
End If
 

If KeyDown(208)=0 And KeyDown(200)=0 And KeyDown(203)=0 And KeyDown(205)=0 x = px * 16: y = py * 24 DrawImage ich,px+x,py+y


If KeyDown(205) n=(n+1) Mod 3 x = px * 16: y = py * 24 DrawImage ichrechts, px+x, py+y,n
If KeyDown(203)  n=(n+1) Mod 3 x = px * 16: y = py * 24 DrawImage ichlinks, px+x, py+y ,n
If KeyDown(200) n=(n+1) Mod 3 x = px * 16: y = py * 24 DrawImage ichhinten, px+x, py+y ,n
If KeyDown(208)  n=(n+1) Mod 3 x = px * 16: y = py * 24 DrawImage ichvorne, x+px, py+y ,n
;wenn move = 1 dann übertrage x auf px*32(*32 da die array so klein ist bei *1 oder *2 kommt schnell
;(array index out of bouds) und das wollen wir nicht wenn die koordinaten des spielers mit den
;koordinaten der map in verbindung gebracht worden sind, malen wir die figur
;auf der position x,y wir wollen die figur ja mit der map kollidieren lassen und nicht mit dem Nichts
;und da die map nun mal in die x und y koordinaten gespeichert wurden müssen wir das auch so
;berücksichtigen.

DrawImage sofa,120,648
If y>300 Then  DrawImage ichlinkse,321,600

WaitTimer(timer)
Flip 0
Forever

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Mai 02, 2008 22:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du die MAP meinst---
dann ist ein Array schon sinnvoll, da es eine feste Größe hat.
[BB2D | BB3D | BB+]

TimBo

BeitragFr, Mai 02, 2008 22:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

also wenn du die map meinst,
also ich schreib alles in den Win editor

Bsp
anzahl tiles x
anzahl tiles y
;jetz kommt die map
0011100
2200113
5566112

das kommt in meinen Converter

und das wird dann in einem Arry mit der größe
anzahl tiles x und anzahl tiles y
eingelesen ^^

hoffe ich konnte dir helfen

Viele Grüße
TimBo
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.
 

Hahninator

BeitragFr, Mai 02, 2008 22:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

Ein paar sachen die ich anders Gemacht hätte währen:

Code: [AUSKLAPPEN]

For y = 0 To 29
For x = 0 To 20
DrawBlock tileset,x*16,y*25,map(x,y)
Next
Next
DrawImage schrank,16,510
DrawImage bett,16,640
DrawImage tisch,16,610
DrawImage fenster,85,500
DrawImage fenster2, 220,500
DrawImage fernseher, 140,527
DrawImage computer,200,527
DrawImage sitzsaecke,130,570
DrawImage buecherschrank,250,510


also hier Zeichnest du deine Map und dannach noch ein Paar sachen in diese Map rein... Wäre es nicht besser diese paar sachen mit in die Map zu nehmen?

Code: [AUSKLAPPEN]

Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
...
Data 0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0


Naja ich denke es Währe besser du würdest es aus einer Externen Datei laden, da es so einfacher ist es nachträglich noch zu bearbeiten.
Falls du ein Größeres Projekt Vorhast würde ich dir dies hier empfehlen:
http://www.robsite.de/daten/tutorials/rpgtut4.zip


Meiner Meinung nach gehört CreateTimer vor die Hauptschleife...und sollte mindestens 50 Frames haben

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group