Types in Function
Übersicht

![]() |
ChesterBetreff: Types in Function |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi@all
Kann mir mal jemand verraten warum das nicht funtzt: Code: [AUSKLAPPEN] Function CreateScelett(name,x,y) name.gegner = New gegner name\art = scelett End function Ich bekomme einen "VariablenType Mismatch" |
||
![]() |
simi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das heisst, dass du 2 Variablen mit dem gleichen Namen hast.
In deinem Beispiel hast du die Type variable und noch die Locale Variable name. In Code: Code: [AUSKLAPPEN] Function CreateScelett(name2,x,y) name.gegner = New gegner name\art = scelett End function cu simi |
||
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
tu mal en längeres code stück wo du die types und die variablen definierst | ||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn schon, dann als Rückgabewert:
Code: [AUSKLAPPEN] Type TEnemy
Field Name$ Field X Field Y ; usw. End Type MyEnemy.TEnemy = CreateEnemy("Test", 10, 20) Print MyEnemy\Name$ Print MyEnemy\X Print MyEnemy\Y WaitKey Function CreateEnemy.TEnemy(Name$, XPos, YPos) Local Enemy.TEnemy = New TEnemy Enemy\Name$ = Name$ Enemy\X = XPos Enemy\Y = YPos Return Enemy End Function mfg olli |
||
vertex.dreamfall.at | GitHub |
![]() |
Chester |
![]() Antworten mit Zitat ![]() |
---|---|---|
lol thx | ||
![]() |
Chester |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab jetzt das hier:
Code: [AUSKLAPPEN] Function CreateSkelettSword.gegner(x,y) Local enemy.gegner = New gegner enemy\art = skelett_sword enemy\x = x*64 enemy\y = y*48 enemy\maxenergie = 10 enemy\energie = 10 enemy\geh_speed = 1 enemy\minschaden = 2 enemy\maxschaden = 8 Return enemy End function Diese Function habe ich jetzt einmal als Globale am Anfang des Codes. Code: [AUSKLAPPEN] Global ske_sw1.gegner = createskelettsword(10,10)
Im Code will ich aber jetzt das hier machen: Code: [AUSKLAPPEN] Function UpdateSkelettSword() enemy\schaden = Rnd(enemy\minschaden,enemy\maxschaden) Return enemy End function Ich habe dann im Code stehen: Code: [AUSKLAPPEN] ske_sw1 = updateSkelettSword()
Ich bekomme aber einen "Illegal Type Conversion" Was mache ich falsch? |
||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Function UpdateSkelettSword()
enemy\schaden = Rnd(enemy\minschaden,enemy\maxschaden) Return enemy End function Was soll bitte schön das bringen? Eine Funktion gibt eine Instanz von einem Type zurück, ist aber nicht im Funktionskopf deklariert. Du greifst auf eine Instanz zu, die es anscheinend garnicht gibt, es gibt nur ske_sw1. Enemy wurde bei CreateSkelettSword als LOCAL dekaliert, nach dem die Funktion beendet wurde, ist Enemu in den unendlichen Weiten des Stacks. Ich vervollständige mal kurz mein Beispiel da oben. mfg olli |
||
vertex.dreamfall.at | GitHub |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
So hier das Beispiel:
Code: [AUSKLAPPEN] Type TEnemy
Field Name$ Field X Field Y Field Destruction ; usw. End Type Alien.TEnemy = CreateEnemy("Alien", 10, 20) Print GetEnemyName$(Alien) Print "X: "+GetEnemyX(Alien) Print "Y: "+GetEnemyY(Alien) Print "" SetEnemyPosition(Alien, 30, 40) Print "X: "+GetEnemyX(Alien) Print "Y: "+GetEnemyY(Alien) DeleteEnemy(Alien) : Alien = Null WaitKey End Function CreateEnemy.TEnemy(Name$, XPos, YPos) Local Enemy.TEnemy = New TEnemy Enemy\Name$ = Name$ Enemy\X = XPos Enemy\Y = YPos Enemy\Destruction = 0 Return Enemy End Function Function DeleteEnemy.TEnemy(Enemy.TEnemy) Delete Enemy End Function Function UpdateEnemy(Enemy.TEnemy) Enemy\Destruction = Enemy\Destruction+1 End Function Function SetEnemyPosition(Enemy.TEnemy, XPos, YPos) Enemy\X = XPos Enemy\Y = YPos End Function Function GetEnemyName$(Enemy.TEnemy) Return Enemy\Name$ End Function Function GetEnemyX(Enemy.TEnemy) Return Enemy\X End Function Function GetEnemyY(Enemy.TEnemy) Return Enemy\Y End Function Function GetEnemyDestruction(Enemy.TEnemy) Return Enemy\Destruction End Function Wenn du sauber Programmieren willst, sprich objektorientiert(so weit es in BlitzClassic überhaupt möglich ist), machst du das so, wie oben gezeigt. mfg olli |
||
vertex.dreamfall.at | GitHub |
![]() |
Chester |
![]() Antworten mit Zitat ![]() |
---|---|---|
Thx Vertex, hiermit ernenne ich dich zum Retter in der Not ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group