types + funktionen = wirr warr
Übersicht

BobbleboyBetreff: types + funktionen = wirr warr |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
mir geht es darum endlich zu verstehen wie man vernünftig types und funktionen kombiniert.
hier mein problem als verkürzten code: Code: [AUSKLAPPEN] Type gegner Field x Field y Field hp Field e Field bild Field name Field speed Field rasse$ End Type While Not KeyDown(1) Cls drawmap() For i=1 To gegnermax g.gegner = spawngegner.gegner() Next For g = Each gegner drawgegner() movegegner() Next Wend End Function spawngegner() f.gegner = New gegner Return f End Function lauter fehlermeldungen, egal was ich versuche ich habe mir jetzt etliche tutorial durchgelesen, aber die erleuchtung lässt auf sich warten. kann mir jemand zu einem tutorial verhelfen, dass genau das beschreibt, oder es mir so erklären? |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schau in die FAQ und Tutorials
Das spezielle Problem hier ist, das die Funktion den passenden Rückgabetyp haben muss: BlitzBasic: [AUSKLAPPEN] Function spawngegner.gegner() |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Bobbleboy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wie gesagt ich habe da nachgesehen.
Code: [AUSKLAPPEN] Function spawngegner.gegner()
f.gegner = New gegner Return f.gegner End Function funktioniert. aber warum? |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe den exakten Code oben schon hingeschrieben ![]() Du musst in der Funktionsdefiniton den Rückgabetyp festlegen, bei der Anwendung hast du ja schon Code: [AUSKLAPPEN] spawngegner.gegner() stehen - da kann man dass auch weglassen;
Code: [AUSKLAPPEN] spawngegner()
Nachtrag: Siehe Function ![]() Oder auch zum selber probieren: Code: [AUSKLAPPEN] Print test1()
Print test2() Print test3() WaitKey() Function test1$() Return "1.055ABC" End Function Function test2#() Return "1.055ABC" End Function Function test3%() Return "1.055ABC" End Function |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Ana |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weiß zwar nicht wirklich wie Biltzbasic geschrieben ist, aber ich denke du musst das angeben, weil jeder Type eine Reservierung von Speicherplatz ist. Das geschieht jedesmal wenn New verwendet wird, je nach dem wie dein Type aufgebaut ist werden dann Platz für 2 Ints ein Float und eine Speicheradresse für Strings freigeräumt, oder wie er halt aussieht. Die Variable in dem du den Type dann speicherst enthält nur die Adresse wo der Eintrag des Types gespeichert ist. An diesen wird dann gesprungen und wenn du den 2 Int ansprechen willst wird von dem in der typevariable gespeicherten Wert so und so viel Bit weiter gegangen (32?).
Wenn du nun der Funktion nicht sagst wie sie den Rückgabewert interpretieren soll, dann macht sie das standard mäßig als Int. Da hast dann eine tolle Zahl, die neben ziemlich groß auch noch völlig unnütz ist. Das musst du übrigens und nebenbei ja auch bei Float oder Strings mit # oder $ tun. Zu Fehlern kommt es dann wenn du den "Eigentlich ein Type - Int " wert wieder als Type behandelst, und das ist auch ganz gut so. Verständlich? Und wie gesagt keine garantie dafür das nur irgendwas davon wirklich stimmt, aber die dinge verhalten sich so als ob, soweit ich das sehe^^ |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group