Funktionen schreiben

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen

 

gigi

Betreff: Funktionen schreiben

BeitragMo, Apr 23, 2007 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Kennt hier jemmand (oder kann mir das einer erklären) ein Tutorial für das funktionen schreiben? Worauf muss ich achten? Was ist wichtig für eine Funktion die ich auch in anderen Programmen benutzen kann?

p.s.:das spiel läuft immernochnicht....
Anfänger Tut von mir:
http://www.blitzforum.de/forum...hp?t=26185

StepTiger

BeitragMo, Apr 23, 2007 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist oftmals sinnvoll, Funktionen rekursiv zu schreiben.

Funktionen sind einfach nur Code, der mit Variablen arbeitet und oftmals diese verarbeitet und zurückgibt.

Sie haben eigene Variablenbereiche und somit ist jede ((noch) nicht globale) Variable erneut verwendbar.
Sie versauen den Code nicht so sehr wie Zehntausende If-Abfragen, die ineinander verschachtelt sind.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

gigi

Betreff: danke

BeitragMo, Apr 23, 2007 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Was muss denn noch beachtet werden? Wie fange ich am besten damit an?
(Ist eine ins-auto-einsteig Funktion gut zum lernen?
Anfänger Tut von mir:
http://www.blitzforum.de/forum...hp?t=26185

pixelshooter

BeitragMo, Apr 23, 2007 21:28
Antworten mit Zitat
Benutzer-Profile anzeigen
ehm, kommt jetzt drauf an was du damit meinst Wink
wenn das eine funktion ist, die meshes passend deformiert, NEIN
wenn das eine funktion ist, die die variable "ort$" in "auto" ändert, schon eher Wink

probier halt einfach ein bisserl rum mit globalen und lokalen parametern und rückgabewerten. zb eine die die 2 parameter addiert. so als bsp
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc
 

gigi

Betreff: hab mich beim einsteigen versucht

BeitragMo, Apr 23, 2007 21:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab nun eine Funktion(die natürlich nicht funktioniert) geschrieben.
Sie is schon sehr auf mein Programm abgestimmt(wegen cam).
Also hier:Code: [AUSKLAPPEN]
Function Einsteigen(auton)
PositionEntity player,EntityX(auton,0),EntityY(auton,0),EntityZ(auton,0)-10
player=auton
PointEntity(cam,auton)
EntityParent(cam,auton)
End Function

Was ist falsch? Als Fehlermeldung kommt denn:"Entity does not exist"
muss ich vorher auch schon sagen das auton=auto1 ist oder so?
Anfänger Tut von mir:
http://www.blitzforum.de/forum...hp?t=26185

StepTiger

BeitragMo, Apr 23, 2007 21:37
Antworten mit Zitat
Benutzer-Profile anzeigen
wie sollte sie auch?

Wenn du Player und Cam als global hast, ist das schonmal gar nicht gut.

Und wieso zerstörst du dir deine eigene player-Variable?
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Tankbuster

BeitragMo, Apr 23, 2007 21:38
Antworten mit Zitat
Benutzer-Profile anzeigen
mit "Global" sollte es gehn^^
EDIT:
zu spät wie immer =(
Twitter
Download Jewel Snake!
Windows|Android
  • Zuletzt bearbeitet von Tankbuster am Mo, Apr 23, 2007 21:39, insgesamt einmal bearbeitet
 

gigi

Betreff: ???

BeitragMo, Apr 23, 2007 21:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Question Surprised Question was jetzt? Warum???
Anfänger Tut von mir:
http://www.blitzforum.de/forum...hp?t=26185

StepTiger

BeitragMo, Apr 23, 2007 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Pass auf, eigener Variablen Bereich heißt, dass lokale Variablen im Programm (sowas wie player, cam u.s.w.) nicht mehr darin vorhanden sind.

Du müsstest deren Werte also entweder mit der Funktion als Parameter übertragen, oder diese global machen. Wobei das erstere wohl wesentlich näher am OOP ist, was durchaus sinnvoll ist, hällt nämlich den Code überschaulich.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Smily

BeitragMo, Apr 23, 2007 21:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Bevor du neue Dinge Praktisch anwendest, solltest du versuchen sie erstmal in ihren Grundzügen zu verstehen.

Code: [AUSKLAPPEN]

function addieren(parameter1,parameter2)
 ergebniss = parameter1 + parameter2
 return ergebniss
end function

function IstZahlGerade(zahl)
 if zahl mod 2
  return 0
 else
  return 1
 end if
end function


vlt hilft dir das ja im verständniss der Arbeitsweisen von Funktionen

Grußm Smily0412
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

Tankbuster

BeitragMo, Apr 23, 2007 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
also... du musst dir das so vorstellen, das dein Prog halt die Variable "irgendwas=1" hat!
wenn du in allen functionen diese Variable verwenden möchtest (genau wie im normalen code) musst du Global davorschreiben (nur einmal am anfang).
Jetzt hat sie in allen functionen den Wert 1"
wenn du das nicht machst, dann.....
sagen wir mal um es leichter zu machen (auch für mich)^^ ...
Alle Variablen, die nicht "Global" sind, existieren in der function garnicht, außer wenn du sie der funktion übergibst!
Twitter
Download Jewel Snake!
Windows|Android

the FR3AK

BeitragMo, Apr 23, 2007 21:45
Antworten mit Zitat
Benutzer-Profile anzeigen
So könnte das Vll aussehen...
Wenn man das mal ganz grob macht^^

Code: [AUSKLAPPEN]
Function Einsteigen(WagenTyp$)
   PositionEntity Player,EntityX(WagenTyp$),EntityY(WagenTyp$),EntityZ(WagenTyp$)
   EntityAlpha Player,0
   EntityParent Cam,WagenTyp$
   PointEntity Cam,WagenTyp$
End Function


Und die Funktion wendet man dann so an:
Code: [AUSKLAPPEN]

Einsteigen BMW

StepTiger

BeitragMo, Apr 23, 2007 21:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist schonmal falsch!
Außer der Wagentyp ist der Integer eines gespeicherten Objekts. Bei dir ist es ein String!

Außerdem ist hier wieder Player und Cam global, was gar nicht genannt wurde. Die Funktion ist sogar noch "falscher" als die von gigi.

Mach es mal so:

Code: [AUSKLAPPEN]
Function PositioniereEs(obj,x=0,y=0,z=0)
   PositionEntity obj,x,y,z
end function
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Tankbuster

BeitragMo, Apr 23, 2007 21:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Scheu dir mal das an^^
Zitat:

Global HALLO=5
LOL=5

WaitKey()

function1();Der Funktion wird nichts übergeben

WaitKey()

function2(LOL);Der Funktion wird LOL übergeben

WaitKey()
End


Function function1();Der Funktion wird nichts übergeben, also wird LOL (weil es nicht global ist) zu 0

Print "function1"
Print "LOL = "+LOL
Print "HALLO = "+HALLO
End Function

Function function2(LOL);Der Funktion wird LOL übergeben (siehe oben)
Print "function2"
Print "LOL = "+LOL
Print "HALLO = "+HALLO
End Function
Twitter
Download Jewel Snake!
Windows|Android
 

gigi

Betreff: gleicher Fehler

BeitragMo, Apr 23, 2007 21:54
Antworten mit Zitat
Benutzer-Profile anzeigen
gleicher Fehler,gleiche stelle(positionentity dingends)....
Anfänger Tut von mir:
http://www.blitzforum.de/forum...hp?t=26185

StepTiger

BeitragMo, Apr 23, 2007 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Wo ist ein Fehler? Du musst auch ein Objekt angeben, das ist klar, oder?
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Tankbuster

BeitragMo, Apr 23, 2007 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
hast du den "Player" auch global gemacht ??
Twitter
Download Jewel Snake!
Windows|Android

StepTiger

BeitragMo, Apr 23, 2007 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein! Global ist böse!
Das versaut einem bei vielen Globals total den Code!
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

the FR3AK

BeitragMo, Apr 23, 2007 22:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab hier mal eine Funktion gemacht...

Code: [AUSKLAPPEN]
Graphics 600,600,32,2
SetBuffer FrontBuffer()


While Not KeyHit(1)
X=MouseX()
Y=MouseY()

If MouseDown(1) Then
   Rechteck(X,Y,5,6,255,0,255)
End If

Flip
Wend

Function Rechteck(XPos#,YPos#,Breite#,Hoehe#,Rot#,Grün#,Blau#)

      Color Rot#,Grün#,Blau#
      Rect XPos#,YPos#,Breite#,Hoehe#,1

End Function


Hoffentlich ist das mal richtig...

Alsodie Funktion erstellt ein Rechteck mit beliebiger Größe,Farbe,Position^^

StepTiger

BeitragMo, Apr 23, 2007 22:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo, das scheint richtig zu sein =)

Aber Standart-Parameter könntest du setzen Wink
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group