Allgemeine Fragen

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

Hubsi

BeitragSa, Okt 09, 2004 12:20
Antworten mit Zitat
Benutzer-Profile anzeigen
PlayMusic ist genau das richtige Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Flux

BeitragSa, Okt 09, 2004 19:30
Antworten mit Zitat
Benutzer-Profile anzeigen
hm. bei mir kommt da aber kein sound, kein fehler, nix.
wenn ich aber keinen waitkey reinmach, sondern nur das playmusic, ist das programm 1sec. nach dem start schon fertig.

PlayMusic("music2.mid")

Hubsi

BeitragSa, Okt 09, 2004 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Poste mehr Code sonst kann man nur raten Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Chester

BeitragSa, Okt 09, 2004 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
ist es in der Hauptschleife?

Wenn ja mach es vor die Hauptschleife
 

Flux

BeitragSa, Okt 09, 2004 19:56
Antworten mit Zitat
Benutzer-Profile anzeigen
uff, eigentlich ist das schon alles was in der datei steht Confused
ich wollte ja nur mal versuchen ein midi abzuspielen Smile

wenn ich PlayMusic("sound.mp3") mach funzt es ja, aber bei midis is tote hose...

Hubsi

BeitragSa, Okt 09, 2004 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso, aber midis in einem anderen Player abspielen geht? Ist die Datei im richtigen Ordner? Ansonsten weiß ich mir keinen Rat Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Flux

BeitragSa, Okt 09, 2004 20:26
Antworten mit Zitat
Benutzer-Profile anzeigen
beides ja...
 

Roseman

BeitragSa, Okt 09, 2004 22:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Flux hat Folgendes geschrieben:
ehm, ich hätte jetzt nochmal 2 fragen:
zum einen kapiere ich diese funktion nicht:

damit wir die übersicht verliehren, schränken wir das erstmal auf einen abschnitt ein (beim roten bin ich ratlos, bez. der funktionsweise):
Zitat:

If KeyDown(links) Then ;Falls links gedrückt wird
If map(Player_pos_x /32,(Player_pos_y /16) /32)=0 Then
;wenn Spielerposition / 32, weil die Tiles 32 * 32 groß sind
;PosY +16 um die Mitte zu bestimmen
;If Bedinung wird nur ausgeführt, wenn kein Tile neben der Figur ist.
Player_pos_x = Player_pos_x -4 ; X-Position -4
If Player_pos_x =< 0 Then Player_pos_x = 1 ;Rand überprüfen
EndIf



Code: [AUSKLAPPEN]
map(Player_pos_x /32,(Player_pos_y /16) /32)=0

müsste eigentlich
Code: [AUSKLAPPEN]
map(Player_pos_x /32,(Player_pos_y +16) /32)=0

heißen.

So, jetzt die Erklärung:
Im Map Array werden die Daten einer Karte abgespeichert.
Sagen wir jetzt einfach mal unterschiedliche Terrrainarten bekommen unterschiedliche Werte zugewiesen, z.B. Wasser=1, Erde=2, Wald=3.
Dann könnte eine Karte so aussehen:

1111111111111111
1112222222222111
1112222333222111
1112222222222111
1111111111111111 16*5

Diese Karte ist 16*5 Felder groß.
Um diese Werte irgendwo zu speichern, kannst du jetzt z.B. ein Array nehmen, daß entweder 16*5=80 Einträge hat, oder besser einfach ein 2D Array erstellen.
Das sähe dann so aus: Beispiel_Karte(15,4)
Dieses Array könnte man jetzt einfach mit For...Next Schleifen und den obigen Werten füttern, und hinterher auch wieder auslesen.

Soviel zur Theorie, jetzt zu deinem konkreten Problem:
map(Player_pos_x /32,(Player_pos_y +16) /32)=0
Du hast das Array Map(x,y), in welchem die Karte gespeichert ist.
Du hast die Tilegröße 32.
Du hast die Playerkoordinaten.
Und du weißt, in welche Richtung sich der Playerbewegen soll.
Um nun zu überprüfen, ob sich der Spieler überhaupt in die gewünschte Richtung bewegen darf (kann ja z.B. ein Fels im Weg sein), guckst du in deinem Array, ob an der Stelle der Karte passierbares Terrain ist.
Wenn z.B an der Stelle 1,1 eine 1 steht (siehe meine Beispielkarte), dann ist dort Wasser und der Spieler kann die Terrain nicht passieren.
Um nun die Bildschirmkoordinaten in deine Feldkoordinaten umzurechnen, brauchst du nur die Spielerposition(X und Y) durch die Tilegröße zu dividieren. (Player_pos_x /32)
Wenn du zu den Playerkoords noch bestimmte Werte hinzuaddierst oder subtrahierst, dann kannst du die Felder um den Spieler herum prüfen. ((Player_pos_y + 16) / 32)
Im Beispiel wird also geprüft, ob das Feld unterhalb des Spielers begehbar ist, also hierbei im Array eine 0 steht.
Nur dann bewegt sich der Spieler nach unten.

Kurz gesagt:
Das Feld unterhalb des Spielers wird auf seinen Wert geprüft (soll 0 sein).

Hoffe es war nicht zuviel Text Embarassed

Mfg
Roseman
 

Flux

BeitragSo, Okt 10, 2004 1:23
Antworten mit Zitat
Benutzer-Profile anzeigen
danke, war eine sehr gute erklärung, jetzt check ichs Smile))

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group