Bitte um Codeerklärung
Übersicht

![]() |
Pingu_KillerBetreff: Bitte um Codeerklärung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
Ich habe vor n paar monaten mit BlitzBasic angefangen und auch einen sehr schlecht programmierten spaceshooter geschrieben. Nun verstehe ich folgenden, für mich seehr wichtigen code aber nicht. Er dient der sprungdunktion von einem Jump'n'Run spiel und ich habe ihn aus den jumpn run tutorial von robsite. Ich würde mich sehr freuen, wenn einer von euch sich die Zeit nehmen würde um ihn mir genau zu erklären. Aber beachtet: ich bin nicht gerade ein Blitzmerker, also wäre eine erklärung für idioten klasse: hier ist der Code: [AUSKLAPPEN] ;falls Player nach oben gegen Mauer springt, fällt er zurück If map((Player_pos_x +16) /32,Player_pos_y /32)=1 And jump = True Then jump = False Player_pos_y = Player_pos_y +1 ;muß um eins tiefer gesetzt werden, da sonst die Figur hängen bleibt EndIf ;die eigentliche Sprungroutine If jump = True Then Player_temp_y = Player_temp_y -0.33 ;Die Temporäre Variable verringern Player_pos_y = Player_pos_y - Player_temp_y ; Position Y durch TempY veringern ; Solange Temp_y eine positive Zahl ist, bewegt sich unsere Figur hoch, ; andernfalls runter. If Player_temp_y =< 0 Then ; Sobald Temp_y den Wert 0 erreicht hat If map((Player_pos_x +16) /32,(Player_pos_y +32) /32)=1 Then ;überprüft, ob sich ein Tile unter dem Spieler befindet jump = 0 temp = Player_pos_y /32 ;\ Player_pos_y = temp *32 ;/ Setzt die genaue Y-Position, falls die Figur mitten im Tile steht EndIf EndIf EndIf |
||
------------------------------------------------------
Gründer und einziges Mitglied von "NoobTec Games" |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
player_temp_y ist die beschleunigung.
Diese wird beim absprung positiv gesetzt (er springt ja nach oben also in positive y richtung), wird jedoch durch die gravitation (hier 0.33) nach unten beschleunigt -> player_temp_y = player_temp_y - 0.33 Falls die beschleunigung negativ ist, wird wie im Kommentar beschrieben, überprüft ob eine plattform drunter ist. für zukünftige Coding Versuche würde ich empfehlen, Variablen nicht unsinnige Namen zu geben. Dann kann sowas nicht passieren. (oder codes nicht zu kopieren wenn sie nicht vollständig verstanden sind) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Pingu_Killer |
![]() Antworten mit Zitat ![]() |
---|---|---|
ah, vielen dank. Kannst du mir auch sagen was das mit map((player_temp_x bedeutet? es hat irgendetwas mit dem dim feld oder datafald unten und oben vom code zu tun. | ||
------------------------------------------------------
Gründer und einziges Mitglied von "NoobTec Games" |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das scheint eine Tile Map zu sein die sonst wo definiert ist im Code und die die benötigten Daten zur "Kollisionsüberprüfung" enthält. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Pingu_Killer |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich habe mich ma der suchfunktion bedient und eine Sprungfunktion von spidey (oder wie er heist) gefunden, welche mir wesentlich mehr zusagt.
Jedoch ist hier noch ein problem vorhanden: hier kann man eine art "doppelsprung anwenden, der aber nicht nur doppelt, sondern mehrfach und von gigantischem ausmasse ist. Was kann man da machen? Hier ist der Code: [AUSKLAPPEN] :
Graphics 800,600,0,2 boden = 500 : playery# = boden schwerkraft# = 0.1 sprungkraft = 5 speed = 2 SetBuffer BackBuffer() Repeat Cls If KeyDown(203) Then playerx = playerx - speed EndIf If KeyDown(205) Then playerx = playerx + speed EndIf If KeyHit(200) Then sprung = 1 playeryspeed# = playeryspeed - sprungkraft EndIf If sprung = 1 Then playeryspeed# = playeryspeed + schwerkraft playery# = playery + playeryspeed If playery > boden Then sprung = 0 playery = boden playeryspeed = 0 EndIf EndIf Oval playerx,playery,10,10,1 Flip Until KeyHit(1) |
||
------------------------------------------------------
Gründer und einziges Mitglied von "NoobTec Games" |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst eine Abfrage einbauen die die Sprungtaste für die Dauer des Sprunges sperrt.
Das nennt sich dann programmieren - Du solltest versuchen eine eigene Lösung zu finden, sonst wirst Du nichts lernen. Das 'was' weisst Du nun, das 'wie' ist Dein Job. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Pingu_Killer |
![]() Antworten mit Zitat ![]() |
---|---|---|
stimmt grins,
mir ist gerade etwas eingefallen thx deine aufforderung hat mich auf irgendeine Art motiviert lol thx @ you thx @ Dreamora |
||
------------------------------------------------------
Gründer und einziges Mitglied von "NoobTec Games" |
![]() |
Pingu_Killer |
![]() Antworten mit Zitat ![]() |
---|---|---|
noch eine kleine frage, wegen der ich keinen neuen Thread aufmachen will:
(Wie) Kann ich eine linie die ich gezeichnet habe transparent machen? Ich möchte diese als "zielvorichtung" für eine KI nehmen. (Wenn der player mit der linie kolidiert, soll der gegner schiesen) |
||
------------------------------------------------------
Gründer und einziges Mitglied von "NoobTec Games" |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Unter 2D wird das schwierig. Du könntest jeden einzelnen Pixel einzeln anhand der darunterliegenden Farbwerte berechnen, was aber aufwendig und langsam ist. Die Suche sollte hier helfen.
Allerdings benötigst Du das eigentlich nicht, wenn ich Dich richtig verstehe. Denn ob Du mit der Linie kollidierst ist eine rein mathematische Prüfung, dafür muss die Linie selbst ja nicht gezeichnet sein. (Die passenden Gleichungen sollten sich finden lassen, dürfte Mathe der Klassenstufe 6 oder 7 sein.) |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group