"Duplicate identifier" obwohl nichts geändert wurd

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

M0rgenstern

Betreff: "Duplicate identifier" obwohl nichts geändert wurd

BeitragMo, März 29, 2010 21:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leute.
Ich hab ein Problem (mal wieder) mit BMax.

Ich habe folgende Klasse:
BlitzMax: [AUSKLAPPEN]
Type TBase Abstract 'The basis Class for the Bases
Global AllBases:TList = New TList

Field sFraction:String 'Name of the Fraction
Field iX:Int, iY:Int 'Coordinates of the Base
Field iRed:Int, iGreen:Int, iBlue:Int 'Colours of the Base
Field iMonsterAmount:Int 'Amount of Monsters in the Base
Field fStrength:Float 'Strength of the Base
Field iLevel:Int
Field tiMainImage:TMyImage, tiSelectedImage:TMyImage, tiDrawnImage:TMyimage
'Images which are used

'Method New() Abstract

Method Destroy()
AllBases.Remove(Self)
End Method

Method Draw()
SetColor iRed, iGreen, iBlue
DrawImage tiDrawnImage.tiImage, iX, iY
SetColor 255, 255, 255
End Method


End Type


UNd ich bekomme wenn ich mein Hauptprogrammstarten will die Fehlerbeldung "Duplicate identifier", und der Fehler wird in dieser Zeile angezeigt: BlitzMax: [AUSKLAPPEN]
Type TBase Abstract 'The basis Class for the Bases


Aber ich habe in dieser Klasse nichts geändert.
Das einzige was ich gemacht habe, ist in eine vererbte Klasse (ausgehend von TBase) eine Methode eingefügt und in der Hauptschleife etwas verändert.

Das wäre das:

BlitzMax: [AUSKLAPPEN]
	Method Attack(pBase:TBase)
If SteadySelected = 1 Then
If (pBase <> Self) Then
For i:Int = 0 To iMonsterAmount / 2
Local M:TMonster = TMonster.Create(Self, Monster1, tmpBase)
Next
EndIf
End If
End Method


Und hier: BlitzMax: [AUSKLAPPEN]
For Local Base:TBase = EachIn TBase.AllBases

If TPlayerBase(Base) Then
TPlayerBase(Base).SetImage(MH)
If MHR Then
For tmpBase:TBase = EachIn TBase.AllBases
If (Pythagoras(tmpBase.iX, tmpBase.iY, MouseX(), MouseY()) <= 34) Then
TPlayerBase(Base).Attack(tmpBase)
EndIf
Next
EndIf
End If

Base.Draw()

Next


Das hinzugefügt:
BlitzMax: [AUSKLAPPEN]
If MHR Then
For tmpBase:TBase = EachIn TBase.AllBases
If (Pythagoras(tmpBase.iX, tmpBase.iY, MouseX(), MouseY()) <= 34) Then
TPlayerBase(Base).Attack(tmpBase)
EndIf
Next
EndIf



Das ist sicher wieder ein total blöder Fehler, aber ich hoffe, mir kann jemand helfen.

Lg, M0rgenstern

mpmxyz

BeitragMo, März 29, 2010 23:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Dazu fällt mir eine Frage ein:
Wo hast du noch eine Variable oder einen Type "TBase" deklariert?
Daher kommt nämlich die Fehlermeldung.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

M0rgenstern

BeitragDi, März 30, 2010 11:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, das Problem liegt bei meinen Klassen, leider komme ich nicht dahinter, wo genau:

Wenn ich die Datei wo meine Base-Klassen sind die Datei für meine Monster-Klassen include (import) dann kommt oben genannte Fehlermeldung.
Tu ich das nicht, so bekomme ich keinen Fehler (außer den, dass er TMonster nicht kennt, wenn ich das aber auskommentiere, dann gehts).

Hier mal die Datei für die Monster:

BlitzMax: [AUSKLAPPEN]
Import "SmallerClasses.bmx"
Import "BaseClasses.bmx"

Type TMonster
Global AllMonster:TList = New TList

Field sFraction:String
Field iLevel:Int
Field iX:Int
Field iY:Int
Field iDestX:Int
Field iDestY:Int
Field iSpeed:Int
Field iRed:Int
Field iGreen:Int
Field iBlue:Int
Field fStrength:Float
Field tmDrawnImage:TMyImage

Method Delete()
AllMonster.Remove(Self)
End Method

Method Draw()
SetColor iRed, iGreen, iBlue
DrawImage tmDrawnImage.tiImage, iX, iY
SetColor 255, 255, 255
End Method

Method New()
AllMonster.AddLast(Self)
End Method

Function Create:TMonster(pBase:TBase, pIMage:TImage, pOtherBase:TBase)
Local M:TMonster = New TMonster

M.sFraction = pBase.sFraction

M.iRed = pBase.iRed
M.iGreen = pBase.iGreen
M.iBlue = pBase.iBlue

M.iX = pBase.iX
M.iY = pBase.iY

M.iSpeed = 1

M.iLevel = pBase.iLevel
M.fStrength = pBase.fStrength * M.iLevel

M.tmDrawnImage = TMyImage.Create(pIMage, 1, 0)

M.iDestX = pOtherBase.iX
M.iDestY = pOtherBase.iY

Return M
End Function

Method Move()
If iX > iDestX Then iX:-iSpeed
If iX < iDestX Then iX:+iSpeed

If iY > iDestY Then iY:-iSpeed
If iY < iDestY Then iY:+iSpeed
End Method

End Type


Und hier nochmal der Anfang der Base-Datei:

BlitzMax: [AUSKLAPPEN]
Import "Maths.bmx"
Import "SmallerClasses.bmx"
Import "MonsterClasses.bmx"

Type TBase Abstract 'The basis Class for the Bases
Global AllBases:TList = New TList


Also, es kann anscheinend nur an der Monster-Klasse liegen, aber ich sehe leider nicht wo. An der Variablenübergabe bei "Create" dürfte es ja eigentlich nicht liegen, oder?

Lg, M0rgenstern

mpmxyz

BeitragDi, März 30, 2010 12:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Fehler liegt auf alle Fälle nicht nur bei dieser Deklaration sondern auch vorher!
Schaue dir mal deine gesamte Codestruktur an und denke nicht nur, dass die eine Zeile dran Schuld ist.
Übrigens: Nutze SuperStrict! Das macht das Leben noch einmal leichter.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group