Brauche Hilfe zu Variabeln

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Waveblue

Betreff: Brauche Hilfe zu Variabeln

BeitragSo, Nov 14, 2004 16:37
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo, ich bins mal wieder, euer Blitz3d- Dauerpatient Sad
ich brauch mal wieder hilfe!

Code: [AUSKLAPPEN]
Graphics 800, 600
SetBuffer=BackBuffer
Global held=LoadImage("ball.bmp")
Global level=LoadImage("level.bmp")
Global helda=100
Global heldb=300
Global heldc=100
Global heldd=300
Global a=0
Repeat
Cls
DrawImage level,1,1
DrawBlock held,helda,heldb
keys
collide
setzen
debug
a=0
Flip
b=b+1
Forever
Function keys()
If KeyDown(200) Then heldd=heldb-1
If KeyDown(208) Then heldd=heldb+1
If KeyDown(203) Then heldc=helda-1
If KeyDown(205) Then heldc=helda+1
End Function
Function collide()
If ImagesCollide(held,heldc,heldd,0,level,1,1,0) Then a=1

End Function
Function setzen()
If a=1 Then Goto i
heldb=heldu
helda=helde
.i
End Function
Function Debug()
Locate 100,1
Print helda
Print heldb
Print heldc
Print heldd
Print a
End Function

die Variablen helda und heldb werden 0, warum????
(level.bmp is nix weiter, als ein 800*600 großes Bitmap, auf dem die möglichen Wege schwarz gemalt sind!)
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name

simi

BeitragSo, Nov 14, 2004 16:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Mann Rück mal die Zeilen ein bisschen ein, so kann man den Fehler ja wirklich nicht finden....
Code: [AUSKLAPPEN]

Function setzen()
  If a=1 Then Goto i
    heldb=heldu
    helda=helde
  .i
End Function


Ich denke es liegt hier an heldU und helde, die sind nämlich immer null. Aber nicht getestet

Mooch

Betreff: ...

BeitragSo, Nov 14, 2004 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Probiers mal damit!

Code: [AUSKLAPPEN]

Graphics 800, 600, 32
SetBuffer BackBuffer()

Global held=LoadImage("ball.bmp")
Global level=LoadImage("level.bmp")
MaskImage Level, 0,0,0
Global helda=100
Global heldb=300
Global heldc=100
Global heldd=300
Global a=0

Repeat
  Cls
DrawImage held,heldc,heldd
  DrawImage level,1,1
 
 
  keys()
  collide()
  setzen()
  debug()
 
  a=1
  Flip
  b=b+1
Forever
 
Function keys()
  If KeyDown(200) Then heldd=heldd-1
  If KeyDown(208) Then heldd=heldd+1
  If KeyDown(203) Then heldc=heldc-1
  If KeyDown(205) Then heldc=heldc+1
End Function

Function collide()
  If ImagesCollide(held,heldc,heldd,0,level,0,0,0) Then
   a=0
   EndIf
End Function

Function setzen()
  If a=1 Then Goto i
   Heldd = 300
   Heldc = 100
 .i
End Function

Function Debug()
  Locate 100,1
  Print helda
  Print heldb
  Print heldc
  Print heldd
  Print a
End Function


Ciao,
Tristan.

PS: Simi hat recht! Wenn du deine Zeilen etwas einrückst, wird der Code übersichtlicher!
Pentium IV 3.0Ghz; nVidia Geforce 6800;
Microsoft Windows XP Home SP2; BlitzBasic 3D

.:: Sites ::.
.:: http://www.fl4sh-clan.de/ ::.


Waveblue

BeitragSo, Nov 14, 2004 19:17
Antworten mit Zitat
Benutzer-Profile anzeigen
naja, mooch, jetzt setzt es die Figur wieder an den ausgangspunkt zurück!
Ich will aber, das er an den Wänden stehen bleibt!
hat jemand einen Tipp für mich?

Edit:
Heureka!!!
ich hab nur heldu und helde.....quasi..im Code vergessen!
Habs repariert und nu funzts!

1Frage noch: das läuft irgendwie nich flüssig,woran liegt das?
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name

Mooch

Betreff: ...

BeitragSo, Nov 14, 2004 20:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach so,
dann lass die bewegung weg wenn er kollidiert!

Pseudocode:
Code: [AUSKLAPPEN]

Graphics 800, 600, 32
SetBuffer BackBuffer()

Global held=LoadImage("ball.bmp")
Global level=LoadImage("level.bmp")
MaskImage Level, 0,0,0
Global helda=100
Global heldb=300
Global heldc=100
Global heldd=300
Global a=0

Repeat
  Cls
DrawImage held,heldc,heldd
  DrawImage level,1,1
 
  collide()
  if a=1 Then keys()
  setzen()
  debug()
 
  a=1
  Flip
  b=b+1
Forever
 
Function keys()
  If KeyDown(200) Then heldd=heldd-1
  If KeyDown(208) Then heldd=heldd+1
  If KeyDown(203) Then heldc=heldc-1
  If KeyDown(205) Then heldc=heldc+1
End Function

Function collide()
  If ImagesCollide(held,heldc,heldd,0,level,0,0,0) Then
   a=0
   EndIf
End Function

Function setzen()
  If a=1 Then Goto i
   Heldd = 300
   Heldc = 100
 .i
End Function

Function Debug()
  Locate 100,1
  Print helda
  Print heldb
  Print heldc
  Print heldd
  Print a
End Function


nicht getestet!
Pentium IV 3.0Ghz; nVidia Geforce 6800;
Microsoft Windows XP Home SP2; BlitzBasic 3D

.:: Sites ::.
.:: http://www.fl4sh-clan.de/ ::.


Waveblue

BeitragSo, Nov 14, 2004 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
nächstes Problem:
Die Functions nehmen keine Variablen an!
ich lad den derzeitigen Status mal hier rein!
Code: [AUSKLAPPEN]
Graphics 800, 600
SetBuffer=BackBuffer
Global held=LoadImage("ball.bmp")
Global level=LoadImage("level.bmp")
Global helda=100
Global heldb=300
Global heldc=100
Global heldd=300
Global a=0
Global anzahl
Global geg=LoadImage("gegner.bmp")
Dim gegner (3,2)
gegner(0,0)=1
gegner(1,1)=400
gegner(1,2)=400
anzahl=gegner(0,0)
SeedRnd

Repeat ;Hauptschleife
Cls
DrawImage level,1,1
DrawBlock held,helda,heldb
collide
If a=0 Then keys
setzen
debug
a=0
For w=1 To anzahl
wertx=gegner(w,1)
werty=gegner(w,2)
Gegner(wertx,werty) ;<----hier sagt Blitz "expecting variable assignment"!!!!!!!!
next
Flip
Forever

;Funktionen:
Function keys()
If KeyDown(200) Then heldd=heldb-1
If KeyDown(208) Then heldd=heldb+1
If KeyDown(203) Then heldc=helda-1
If KeyDown(205) Then heldc=helda+1
End Function
Function collide()
If ImagesCollide(held,heldc,heldd,0,level,1,1,0) Then a=1

End Function
Function setzen()
If a=1 Then Goto i
heldb=heldd
helda=heldc
.i
End Function
Function Debug()
Locate 100,1
Print helda
Print heldb
Print heldc
Print heldd
Print a
End Function

Function Gegner(positionx,positiony)
DrawImage geg,positionx,positiony ;hier wird der gegner gemalt
Wuerfel=Rand(1,4)
   x=0
   y=0
   If Wuerfel=1 Then y=1
   If Wuerfel=2 Then X=1
   If Wuerfel=3 Then y=-1
   If Wuerfel=4 Then x=-1
If ImagesCollide(geg,positionx+x,positiony+y,0,level,1,1,0) Then End
End Function


es ist so gedacht, das die Gegner mithilfe der Tabelle durch die Gegner-Function gezeichnet und kontrolliert wird!
Dazu sollten die Positionsangaben im Hauptprogramm an die Function Gegner übergeben werden! klappt aber nich, warum?
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name
  • Zuletzt bearbeitet von Waveblue am Mo, Nov 15, 2004 16:29, insgesamt einmal bearbeitet

eXceptION

BeitragSo, Nov 14, 2004 22:38
Antworten mit Zitat
Benutzer-Profile anzeigen
du kriegst so viel hilfe, dass du dich daran gewöhnst... guck dir doch einfach die code noch einmal nach...
Norweger...

Spreche aber verdammt gut 8086

Waveblue

BeitragSo, Nov 14, 2004 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
hab ich, exception!
Da sind gar keine probleme mit dem Datenübergeben!
außerdem frag ich nur zeug, das ich und sämtliche Anleitungen mir nich erklären können!
wo soll ich sonst erfahren, warum Blitz3d "Expecting variable assignment" ausspuckt!

Ich brüte schon Stunden über dem Code, aber ich find keinen logischen Grund für den Fehler!
so ein mist nimmt einem den ganzen Spaß am proggen!

Is mir selbstverständlich auch peinlich, das der vorige Fehler so simpel war! Embarassed
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name
  • Zuletzt bearbeitet von Waveblue am Mo, Nov 15, 2004 16:22, insgesamt einmal bearbeitet

eXceptION

BeitragMo, Nov 15, 2004 0:00
Antworten mit Zitat
Benutzer-Profile anzeigen
selbsgebaute functionen die du aufrufst MUSS klammern haben:
Code: [AUSKLAPPEN]
...
collide
If a=0 Then keys
setzen
debug
...

stattdessen:Code: [AUSKLAPPEN]
...
;Global a=0 ist weggenommen
  .
  .
  .
  If (Not collide()) Then
    keys()
    setzen()
    debug()
  End If
  .
  .
  .
Function collide()
  Return ImagesCollide(held, heldc, heldd, 0, level, 1, 1, 0)
End Function

Function setzen()
  heldb = heldd
  helda = heldc
End Function
Norweger...

Spreche aber verdammt gut 8086

Waveblue

BeitragMo, Nov 15, 2004 16:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke exeption, jetzt sieht die Sache schon etwas besser aus, löst das Problem aber irgendwie nicht!
ich hab die Stelle im Code markiert, an der die Meldung kommt!
bitte helft mir, das macht einen echt wahnsinnig!
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name
 

Edlothiol

BeitragMo, Nov 15, 2004 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst die Funktion anders nennen, es gibt nämlich schon ein Array mit diesem Namen.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group