Funktionen erklären
Übersicht

aave13Betreff: Funktionen erklären |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi,
ich habe das mit den funktionen noch nicht verstanden. könnte mir da jemand vielleicht etwas auf die sprünge helfen und mir erklären, wie eine funktion "funktioniert" und für was sie da ist. wäre echt nett mfg aave13 |
||
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo aave13!
Also Eine Function ist ein unterprogrammteil in dem du alle Variablen die nicht Global sind noch einmal Benutzen kannst. Du kannste mehrere Parameter übergeben |
||
aave13 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke! ![]() und was bringen die in spielen (da in den hauptschleifen)? wie z.b bei stranded: Code: [AUSKLAPPEN] ;-----Functions
;Intro Function intro() Local unso, unso2 Local timer Local alpha# Local ms Local sound Local light HideEntity earth HideEntity water HideEntity sky HideEntity gui_kompass HideEntity gui_kompass_z For i = 0 To 5 HideEntity lens_flare(i) Next sound=LoadSound("sfx/unrealsoftware.mp3") unso=LoadSprite("gfx/unrealsoftware.bmp", 4) ScaleSprite unso,300,30 EntityAlpha unso,0 PositionEntity unso,0,0,opt_sx/2 alpha#=0 timer=0 ms=MilliSecs() FlushKeys FlushMouse CameraRange camera, 1, (opt_sx/2)+1000 CameraFogMode camera, 0 PlaySound sound While timer<450 If MilliSecs()-ms>=10 ms=MilliSecs() timer=timer+1 If timer>50 And timer<150 Then alpha#=alpha#+0.01 EntityAlpha unso, alpha# EndIf If timer>220 And timer<320 Then alpha#=alpha#-0.01 EntityAlpha unso, alpha# EndIf EndIf Cls RenderWorld Flip If GetKey()>0 Then timer=450 If GetMouse()>0 Then timer=450 Wend FreeEntity unso FreeSound sound CameraFogMode camera, 1 ShowEntity earth ShowEntity water ShowEntity sky End Function ;Beenden Function quit(quick=0) FlushKeys FlushMouse If quick=1 Then End Local cachesfx, cachegfx, ms cachesfx=LoadSound("sfx/quit.wav") cachegfx=LoadImage("gfx/b3dlogo.jpg") MidHandle cachegfx StopChannel sfx_chan PlaySound cachesfx ms=MilliSecs() While MilliSecs()-ms<3000 Cls SetFont font_menu Color 255,255,255 Text opt_sx/2,opt_sy/2-82, "Stranded wurde programmiert in",1,1 DrawImage cachegfx, opt_sx/2,opt_sy/2 Text opt_sx/2,opt_sy/2+82, "THX 4 Playing!",1,1 If GetKey()>0 Then ms=0 If MouseHit(1) Or MouseHit(2) Then ms=0 Flip Wend End End Function da ist in einer funktion eine schleife und in der anderen auch... |
||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] ;kleines additionsbeispiel local a% = 10 local b% =20 local c% = 0 c% = add(a,b) print "a + b=" + c% waitkey() end ;Additionsfunktion function add(a%, b%) local c% c% = a% + b% return c% end function Hier: im Hauptprogramm definieren wir 3 variablen a, b und c, wobei c das ergebnis von a + b seien soll, a und b übergeben wir an die funktion ADD, wo diese addiert werden a, b und c sind in der Funktion local, d.h. sie haben keine auswirkung auf die vorher definierten variablen, genauso gut hätte ich auch x, y und z nehmen können es wäre das gleiche. Funktionen werden dazu benutzt um wiederkehrende Programmteile auszulagen, dies erhöht die übersichtlichkeit und der Code lässt sich leichter pflegen. [Edit] in deinem geposteten Beispiel erfüllt es eine etwas andere Funktion, wir haben eine hauptschleife, die eine Funktion ausführt, welche durch eine Variable bestimmt wird, um einen kreislauf zu haben, je nachdem welcher Programmteil ausgeführt werden soll. In diesen jeweiligen Funktionen sind wieder schleifne untergebracht, so zb. das Menü oder das Spiel an sich, wenn man sich also im Hauptmenü befindet und auf starten klikt, springt man aus der Funktion Menü raus und die Hauptschleife leitet den Spieler ins eigentliche Spiel. so kann man einfach neue Programmteile anfügen, ohne die übersichtlichkeit des bestehenden Codes zu verschlechtern, natürlich könnte man das alles in eine Hauptschleife packen, aber dann hast du bei der Fehlersuche ein kleines Problem, weil du viel mehr Zeit opfern musst, um den Fehler zu finden, und das führt zu unmotiviertheit und zur Aufgabe des Projektes |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
- Zuletzt bearbeitet von skey-z am Di, Jul 18, 2006 19:19, insgesamt einmal bearbeitet
![]() |
PSY |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hoi,
Funktionen sind Unterprogramme. Sie werden z.B. gerne benutzt, wenn man an verschiedenen Stellen im Programm gleiche Berechnungen durchführen will. Funktionen kannst Du - im Gegensatz zu Gosubs - Werte übergeben, und Funktionen können ebenso Werte zurückliefern. Beispiel: Du brauchst an verschiedenen Stellen das Volumen eines Quaders. Anstatt das jedesmal getrennt auszurechnen, erstellst Du Dir einfach eine Funktion und übergibst ihr an den verschiedenen Stellen im Programm einfach Länge, Breite und Tiefe, und die Funktion liefert Dir das Volumen zurück. Code: [AUSKLAPPEN] Print volumen(2,4,3)
WaitKey Print volumen (3,3,3) WaitKey end Function volumen(l,b,t) Local vol vol=l*b*t Return vol End function Variablen, die Du aus dem Hauptprogramm benutzen willst, musst Du global deklarieren, damit die Funktion diese auch benutzen kann, ansonsten werden alle in Funktionen benutzen Variablen lokal (nur in dieser Funktion) behandelt. Dabei musst Du lokale Variablen, die Du in Deiner Funktion benutzt, nicht unbedingt mit local deklarieren. Das dient nur der Übersichtlichkeit und hilft später beim Fehlerfinden. Obige Funktion würde also auch folgendermassen funktionieren: Code: [AUSKLAPPEN] Function volumen(l,b,t)
Return l*b*t End function Funktionen kannst Du übrigens auch ein eine Datei auslagern und mit dem include-Befehl darauf zugreifen. Bei grossen Projekten kann das die Übersichtlichkeit enorm erhöhen! Du kopierst einfach Deine Funktionen in eine Datei, die Du z.B. "meine_funktionen.bb" nennst. In Deinem Hauptprogramm rufst Du Diese "Library" dann folgendermassen auf: Include("meine_funktionen.bb") Sämtliche in dieser Datei enthaltenen Funktionen kannst Du dann ganz normal in Deinem Programm nutzen ![]() L8er, PSY (EDIT) Bäh. Kaum schreibt man nen Beitrag und guckt gleichzeitig nen Film, haben auch schon 3 Dutzend Leute vor dir gepostet ![]() |
||
aave13 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
sehr herzlichen dank an alle! ![]() also habe ich das richtig verstanden, das functionen keine "pflicht" in dem sinne ist, dass man sie unbedingt braucht für manche sachen? eher jetzt zur übersichtlichkeit gedacht oder?! ![]() mfg aave13 |
||
![]() |
ChaosCoder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, so ungefähr könnte man das sagen, übersichtlicher und kompakter wird dein Code dadurch, jedenfalls wenn du Functionen richtig benutzt ![]() Pflicht ist es nicht aber auf jedenfall zu empfehlen! |
||
Projekte: Geolaria | aNemy
Webseite: chaosspace.de |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
nicht nur für die übersicht! einmal kannst du so die allzeit beliebte rekursion benutzten ( das sind funktionen die sich immer wieder selbst aufrufen, bis etwas bestimmtest passiert ist sehr nützlich) und zweitens kannst du dir damit einiges einfacher machen! Stell dir vor du musst 10 mal in deiner haupt schleife eine zahl durch 2 teilen +5 rechnen und dann mal 4 nehmen dann ists doch viel kürzer zu schreiben:
Code: [AUSKLAPPEN] while 1 neu=mathe(zahl) neu2=mathe(zahl2) ;usw. wend function mathe(zahl) return (zahl/2+5)*4 end function als Code: [AUSKLAPPEN] while 1 neu=(zahl/2+5)*4 neu2=(zahl2/2+5)*4 ;usw. wend mh... verdammt ist das beispiel schlecht... hioffe du weisst trozdem was ich meine! MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
Lunatix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Matthias hat Folgendes geschrieben: Hallo aave13!
Also Eine Function ist ein unterprogrammteil in dem du alle Variablen die nicht Global sind noch einmal Benutzen kannst. Du kannste mehrere Parameter übergeben nich ganz - wenn man Code: [AUSKLAPPEN] Global XYZ = 5 Function Blubb() Local XYZ = 0 end function macht, kann man diese variable XYZ nochmal benutzen. (korrigiert mich wenns falsch is, aber bei mir ging das immer) |
||
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen... |
![]() |
Christoph |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du musst aber die Funktion aufrufen sonst klappt es nicht
Code: [AUSKLAPPEN] Global XYZ = 5
Blubb Function Blubb() Local XYZ = 0 end function |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Im Prinzip sind Functions nichts anderes als eine Erweiterung des Befehlssatzes nach eigenem Bedarf.
Wenn Du z.B. mit drawimage name,x,y ein Bild auf den Bildschirm zeichnest, macht das nichts anderes als eine "Bordfunktion" von Blitz aufzurufen. Funktionen halten den Code übersichtlich und auch viel spreicherplatzsparender, da man nicht immer wieder die selben Codezeilen neu eingeben muss. Funktionen sind somit ein sehr mächtiges Mittel und ich kann Dir nur empfehlen Dich audführlich mit ihnen zu befassen, da sie Dir das Leben sehr erleichtern können. Stell Dir vor Du hast einen 200 Zeilen langen Block Code den Du 20 mal in Deinem Programm stehen hast, wie aufgebläht der Code dann wird. Wenn dann noch beim Eintippen eines dieser minimal angepassten Codeblöcke ein Fehler auftritt: Mahlzeit. Packst Du das Zeug allerdings in eine Funktion reicht eine Zeile für den Gleichen Effekt. Du sparst dir also 3980 Zeilen Code und verringerst die Gefahr von Fehlern die sich einschleichen... |
||
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 |
aave13 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
super danke@all, ich denke ich sollte das verstanden haben. sollte diesbezüglich doch noch mal eine frage bestehen, werde ich mich an euch wenden. ![]() mfg aave13 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group