3Fehler im Code (Jump&Run) paar Zeilen, bitte mitsuchen!

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

rezoad

Betreff: 3Fehler im Code (Jump&Run) paar Zeilen, bitte mitsuchen!

BeitragMo, Aug 16, 2004 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo.
Im Folgenden Code stecken 3Fehler:
1) Einmal wird gesagt, dass "End Function" keine "Function" hat!
2) Der Spieler kann durch die "Balken" laufen
3) Wenn der Spieler runterfällt, kommt eine Fehlermeldung und ich weiß nicht, welche Zahl geändert werden muss!

| Grundlagen|
Tile2.bmp
Dude2.bmp

(Kann sie nicht hochladen, sind im Jump-Tutor(1) von Robsite!!)




Zitat:
; -| Adventure |-
;
;*************************************************
;
; _ _ __ ___ ___
;| | | \ \ / | |\ | --|-- | | |__| |
;|_| | | \ / |-- | \ | | | | | \ |--
;| | |_/ \/ |__ | \| | |__| | \ |__
;
;*************************************************

;Grundlagen
Graphics 1024,768, 32
Color 240,0,0
fontvariable = LoadFont("Verdana",12)
SetFont fontvariable

SetBuffer BackBuffer()
frametimer = CreateTimer (30)
ClsColor 255, 255, 255

;-------------------------------------------------





; --- Globals ---
Global hero = LoadAnimImage ("dude2.bmp", 32, 32, 0, 8)
MaskImage hero, 255, 0, 255

Global Balken = LoadImage ("tile2.bmp")
MaskImage Balken, 255, 0, 255


Global Player_pos_x = 200
Global Player_pos_y = 320
Global Player_temp_y# = 0
Global Player_Counter = 8, Player_Frame = 0 ;SpielerFrame
Global jump
Global jumptimer#

Dim map (20,15)
Restore mapdata
For y=0 To 14
For x=0 To 19
Read map(x,y)
Next
Next


; --- Const! ----



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

;---------------------------------------------------------------------




;! ! ! ! ! ! ! ! Die Hauptschleife ! ! ! ! ! ! ! ! ! ! ! ! ! !


Repeat

Cls
WaitTimer (frametimer)

Drawmap()
Movehero()
DrawPlayer()
Collision()
KlickAndSpeech()
DoJump()

Flip

Until KeyHit (1)
End

;---------------------------------------------------------------------


;Functionen

Function Drawmap()
For y = 0 To 14
For x = 0 To 19
If map(x,y) = 1 Then
DrawImage Balken, x*32, y*32
EndIf
Next
Next
End Function



Function Movehero()
If KeyDown(links) Then;links
Player_pos_x = Player_pos_x -4
If Player_Frame <4 Then Player_Frame = 4
Player_Counter = Player_Counter -1
If Player_Counter = 0 Then
Player_Counter = 8
Player_Frame = Player_Frame +1
If Player_Frame = 8 Then Player_Frame = 4
EndIf
If Player_pos_x =< 0 Then Player_pos_x = 1
EndIf

If KeyDown(rechts) Then;rechts
Player_pos_x = Player_pos_x +4
If Player_Frame >3 Then Player_Frame = 0
Player_Counter = Player_Counter -1
If Player_Counter = 0 Then
Player_Counter = 8
Player_Frame = Player_Frame +1
If Player_Frame = 4 Then Player_Frame = 0
EndIf
If Player_pos_x => 608 Then Player_pos_x = 607

EndIf
End Function



Function DrawPlayer(); Spieler soll dargestellt werden
DrawImage hero, Player_pos_x, Player_pos_y,Player_Frame
End Function


Function Collision(); Der Spieler soll nicht gegen die "Balken" laufen dürfen!
If ImagesCollide (Balken, mapdata, mapdata, 0, hero, Player_pos_x, Player_pos_y, 0) Then
Print "moep. Das tut weh, oder ! DIE AERZTE SIND COOOOOOOOL!"
EndIf


If jump = False Then
If map((Player_pos_x +16) /32,(Player_pos_y +32) /32)=0 Then ; Sollte kein Tile unter dem Spieler sein
jump = True ; Sprungfunktion weiter ausführen
Player_temp_y = 0 ; Temp_y = 0, weil diese einen negativen Wert berechnen soll
EndIf
EndIf

;sorgt dafür, das die Figur nicht aus den Himmel schießt
If Player_pos_y =< 0 Then
Player_pos_y = 1
jump = True
Player_Temp_y = 0
EndIf

If Player_pos_y => 448 Then
Player_pos_y = 448
jump = False
EndIf

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


End Function






;|Spieler soll fallen

Function DoJump()
If jump = True Then
Player_temp_y = Player_temp_y -2.33
Player_pos_y = Player_pos_y - Player_temp_y
If Player_temp_y =< 0 Then
If map((Player_pos_x +16) /32,(Player_pos_y +32) /32)=1 Then
jump = 0
temp = Player_pos_y /32
Player_pos_y = temp *32
EndIf
EndIf
EndIf

If jump = False Then
If map((Player_pos_x +16) /32,(Player_pos_y +32) /32)=0 Then
jump = True
Player_temp_y = 0
EndIf
EndIf


;was hier vorne steht, ist damit er runterfällt
;die eigentliche Sprungroutine
If jump = True Then
Player_temp_y = Player_temp_y -0.33
Player_pos_y = Player_pos_y - Player_temp_y


End Function; HIER IST DOCH EINE FUNCTION! DA OBEN! "Function Dojump()" !!






Function KlickAndSpeech(); Sobald man mit der Maus auf eine bestimmte Stelle geht,
; erscheint ein Text!
;---| Für Balken in Sichthöhe |---
If MouseX() > 310
If MouseX() < 350
If MouseY() > 280
If MouseY() < 320 Then
Text 20,30, "Mmh, ich müsste näher drangehen um es genau erkennen zu können."
Text 20,40, "So, mmh... es scheint der gleiche simple Balken zu sein,wie auf dem"
Text 20,50, "ich hier stehe, oder? Aber man darf ja nichts unterschätzen, denn"
Text 20,60, "es könnte ja ein hochentwickeltes ... ääh ..."
Text 20,70, "ein hochentwickeltes ... puh .... ... ääh ... Dingsbums ... ach.."
Text 20,80, "ES IST EIN BALKEN, MANN!"
EndIf
EndIf
EndIf
EndIf
;---| Ende : für balken | ---
End Function

;-------------------------------------------------------------------------

;|MAPDATA|
.mapdata
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,1,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0
Data 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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


; --- Probleme --- ;
; 1) Die Kollision funktioniert nicht!
; 2) Die Figur kann nicht komplett nach unten fallen!
; 3) Fehlermeldung!


Danke für eure Hilfe!
Bis denne,
Mathias



__________________________________________
AMD Athlon64 | Sapphire Radeon 9800 |
G.E.I.L. 512MByte PC3200 DDR |
Seagate S-ATA 80GByte | Windows 2000 Pro

D2006

Administrator

BeitragMo, Aug 16, 2004 15:39
Antworten mit Zitat
Benutzer-Profile anzeigen
ich will ja nicht spamen, aber hierfür ist jeder zweite Coder zu faul.

zu 1.)
Wo denn ?

zu 3.)
Was für eine Fehlermeldung ?

Denk' dran den Debug Modus einzuschalten.

MfG

Blitzer

Betreff: Vergessen!

BeitragMo, Aug 16, 2004 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
1)

Du hast Vergessen, bei If ein Endif!

Code: [AUSKLAPPEN]
If jump = True Then
Player_temp_y = Player_temp_y -0.33
Player_pos_y = Player_pos_y - Player_temp_y



End Function; HIER IST DOCH EINE FUNCTION! DA OBEN! "Function Dojump()" !!

2 und 3) musst du selber schaffen
Nichts ist mehr so wie es einmal war mit
------------------Blitzbasic------------------

Athlon 3000+, 1 GBRam DDR, Geforce FX 5500, 120 GB Fesplatte
Sempron 2200+, 512 MBRam DDR, Geforce FX 5200, 60 GB Festplatte
 

BasicTobi

BeitragMo, Aug 16, 2004 16:51
Antworten mit Zitat
Benutzer-Profile anzeigen
doch nicht Very Happy
Gruß Tobi

rezoad

BeitragMo, Aug 16, 2004 17:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo.
Ich bin Newbie und habe schon versucht, 2 und 3 zu schaffen, aber wenn ich es erfolgreich beendet hätte, würde ich hier ja nicht posten.
Deshalb helft mir bitte, ich weiß nicht, was ich machen muss.
Sagt es mir und ich lerne aus meinen Fehlern!

Danke,
Mathias
Bis denne,
Mathias



__________________________________________
AMD Athlon64 | Sapphire Radeon 9800 |
G.E.I.L. 512MByte PC3200 DDR |
Seagate S-ATA 80GByte | Windows 2000 Pro

Henry

BeitragMo, Aug 16, 2004 17:54
Antworten mit Zitat
Benutzer-Profile anzeigen
In den Beispiel Dateien, die mit BlitzBasic installiert werden, gibt es wenigstens zwei Beispiele zu der Thematik.
Schau sie Dir an, gehe die Beispiele durch und lerne daraus wie es die meisten hier auch gemacht haben.
Aiya Eärendil Elenion Ancalima!

All you have to decide is what to do with the time that is given to you.

Robsite.de ist eine Anlaufstelle für Tutorials und Tools, die Noobs das Leben leichter machen!
Forensuche ist nicht nur als Lückenfüller in den oberen Links gedacht!

rezoad

BeitragMo, Aug 16, 2004 23:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo.
Habe ich gemacht, habe ich sogar direkt verglichen die Codes, aber dass der immer noch durch die Balken laufen kann, versteh ich nicht.
Genauso, dass der nicht bis auf den Boden fällt... hab schon fast alle Zahlen geändert!!
BITTE HELFT MIR!

(Das mit der Function habe ich behoben)
Bis denne,
Mathias



__________________________________________
AMD Athlon64 | Sapphire Radeon 9800 |
G.E.I.L. 512MByte PC3200 DDR |
Seagate S-ATA 80GByte | Windows 2000 Pro
 

zocker2150

BeitragMo, Aug 16, 2004 23:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
2) Der Spieler kann durch die "Balken" laufen

Code: [AUSKLAPPEN]
Function Collision(); Der Spieler soll nicht gegen die "Balken" laufen dürfen!
If ImagesCollide (Balken, mapdata, mapdata, 0, hero, Player_pos_x, Player_pos_y, 0) Then
Print "moep. Das tut weh, oder ! DIE AERZTE SIND COOOOOOOOL!"
EndIf

Wird hier auch nicht verboten! Wink
Hier machst du ja nur etwas WENN er auf einem "Balken" steht.

Wenn du mal den Tabulator benützt wirst du den fehler auch sehen.

Bigmichi

BeitragMo, Aug 16, 2004 23:18
Antworten mit Zitat
Benutzer-Profile anzeigen
ich schau mri den code an wenn ich das Prog auch starten kann das heißt auch deine Grafiken udn bla ahb pack das alles machs zum download und ich mach mcih auf fehlersuche ich denke mal so würden dir auch direkt mehr helfen wen sie den code starten können =)

rezoad

BeitragMo, Aug 16, 2004 23:19
Antworten mit Zitat
Benutzer-Profile anzeigen
zocker2150 hat Folgendes geschrieben:
Zitat:
2) Der Spieler kann durch die "Balken" laufen

Code: [AUSKLAPPEN]
Function Collision(); Der Spieler soll nicht gegen die "Balken" laufen dürfen!
If ImagesCollide (Balken, mapdata, mapdata, 0, hero, Player_pos_x, Player_pos_y, 0) Then
Print "moep. Das tut weh, oder ! DIE AERZTE SIND COOOOOOOOL!"
EndIf

Wird hier auch nicht verboten! Wink
Hier machst du ja nur etwas WENN er auf einem "Balken" steht.

Wenn du mal den Tabulator benützt wirst du den fehler auch sehen.


Mmh, aber was muss ich dann machen? Ich seh da nicht raus, dass es nur horizontal gilt, oder geht es hier um das "if" ?

Bis denne,
Mathias
Bis denne,
Mathias



__________________________________________
AMD Athlon64 | Sapphire Radeon 9800 |
G.E.I.L. 512MByte PC3200 DDR |
Seagate S-ATA 80GByte | Windows 2000 Pro

rezoad

BeitragMo, Aug 16, 2004 23:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Bigmichi hat Folgendes geschrieben:
ich schau mri den code an wenn ich das Prog auch starten kann das heißt auch deine Grafiken udn bla ahb pack das alles machs zum download und ich mach mcih auf fehlersuche ich denke mal so würden dir auch direkt mehr helfen wen sie den code starten können =)


Ja, tut mir leid, bei meinem Webspace-Anbieter kann ich nur Daten mit max. 100kb hochladen und ich glaube die eine Datei ist größer als 100kb.
Sry, aber eventuel mach ichs bald bei tripod.de
Bis denne,
Mathias



__________________________________________
AMD Athlon64 | Sapphire Radeon 9800 |
G.E.I.L. 512MByte PC3200 DDR |
Seagate S-ATA 80GByte | Windows 2000 Pro

Bigmichi

BeitragMo, Aug 16, 2004 23:40
Antworten mit Zitat
Benutzer-Profile anzeigen
solltest mal dein Popup Blocker ausschalten un bei deeinenNachrichten mal schauen Wink
 

Timo

BeitragMi, Aug 18, 2004 9:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Möglichkeit zu der Kollision: Du musst dir die Richtung merken (in Variablen), in die der Spieler läuft und ein Feld vorher schon die Kollision testen!

Gruß Timo

Kabelbinder

Sieger des WM-Contest 2006

BeitragMi, Aug 18, 2004 13:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun, als ich Wokozz' Odysee gecodet habe, hatte ich auch oft mit solchen Problemen zu tun. Aber um die zu lösen reichen oft Beschreibungen nicht aus. Also wenn du die Möglichkeit hast, die Bilder und halt die ganzen Externen Detein des Programms ins Internet zu laden und dann als Download hierhin zu stellen, könnte man das Programm auch wirklich starten und sehen, was du meinst. Also ich denke, das würde die Fehlersuche etwas beschleunigen. Wenn du die Möglichkeit nicht hast, könntest du auch jemanden anheuern, der dirdie sachen hochläd (z.B. mich Smile )
<Wing Avenger Download> ◊◊◊ <Macrophage Download>

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group