VB.net Problem

Napstack

Grünschnabel
Ich habe im letzten Monat mit VB.net angefangen. Demzufolge bin ich noch nicht dermaßen gut das ich alles verstehe und koregieren kann.

Einige von euch kennen bestimmt ANT!Me. Zum spaß hab ich da ma was gemacht.
Ich habe nach diesem Tutorial gearbeitet: http://download.microsoft.com/downl...70-68a7cc71ce9a/Antme_GlobalesGedaechtnis.pdf


Jetzt hab ich folgende Queltexte:
Vorlage.vb
Code:
Imports AntMe

' Füge hier hinter AntMe.Spieler einen Punkt und deinen Namen ohne Leerzeichen
' ein! Zum Beispiel "AntMe.Spieler.AntonMüller".
Namespace AntMe.Spieler.Vorlage

    ' Das Spieler-Attribut erlaubt das Festlegen des Volk-Names und von Vor-
    ' und Nachname des Spielers. Der Volk-Name muß zugewiesen werden, sonst wird
    ' das Volk nicht gefunden.

    ' Das Typ-Attribut erlaubt das Ändern der Ameisen-Eigenschaften. Um den Typ
    ' zu aktivieren muß ein Name zugewiesen und dieser Name in der Methode 
    ' BestimmeTyp zurückgegeben werden. Das Attribut kann kopiert und mit
    ' verschiedenen Namen mehrfach verwendet werden.
    ' Eine genauere Beschreibung gibts in Lektion 6 des Ameisen-Tutorials

    <Spieler( _
        Name:="", _
        Vorname:="", _
        Nachname:="" _
    )> _
    <Typ( _
        Name:="", _
        GeschwindigkeitModifikator:=0, _
        DrehgeschwindigkeitModifikator:=0, _
        EnergieModifikator:=0, _
        LastModifikator:=0, _
        ReichweiteModifikator:=0, _
        SichtweiteModifikator:=0, _
        AngriffModifikator:=0 _
    )> _
    Public Class AmeiseVorlage
        Inherits Ameise

        ''' <summary>
        ''' Gibt dem Spieler die Möglichkeit, eigene Variablen zu initialisieren.
        ''' Wird vor jedem Spiel aufgerufen. Statische Variablen müssen hier
        ''' initialisiert werden!
        ''' </summary>
        Public Shared Sub Initialisiere()
            KoordinatenSpeicher(Of Int32, IKoordinate).KoordinatenObst.Clear()
            KoordinatenSpeicher(Of Int32, IKoordinate).KoordinatenZucker.Clear()
            KoordinatenSpeicher(Of Int32, IKoordinate).ObjekteGeloescht.Clear()



        End Sub


        ''' <summary>
        ''' Der Ameise Konstruktor.
        ''' </summary>
        ''' <param name="volk">Das Volk zu dem die neue Ameise gehört</param>
        ''' <param name="typ">Der Typ der neuen Ameise</param>
        Public Sub New(ByVal volk As Volk, ByVal typ As Integer)
            MyBase.New(volk, typ)
        End Sub

        ''' <summary>
        ''' Bestimmt den Typ einer neu zu erzeugenden Ameise.
        ''' </summary>
        ''' <param name="anzahl">Anzahl der vorhandenen Ameisen pro Typ</param>
        ''' <returns></returns>
        Public Shared Function BestimmeTyp(ByVal anzahl As Dictionary(Of String, Integer)) As String
            Return ""
        End Function

        ''' <summary>
        ''' Wird aufgerufen, wenn die Ameise nicht weiss wo sie hingehen soll.
        ''' </summary>
        Public Overrides Sub Wartet()
        End Sub

        ''' <summary>
        ''' Wird einmal aufgerufen, sobald die Ameise ein Drittel ihrer maximalen 
        ''' Reichweite überschritten hat.
        ''' </summary>
        Public Overrides Sub WirdMüde()
        End Sub

        ''' <summary>
        ''' Wird aufgerufen, wenn die Ameise einen Zuckerhaufen sieht.
        ''' </summary>
        ''' <param name="zucker">Zuckerhaufen</param>

        Public Overloads Overrides Sub Sieht(ByVal zucker As Zucker)
            SpeicherKoordinate(zucker.Id, zucker)
        End Sub

        ''' <summary>
        ''' Wird aufgerufen, wenn die Ameise ein Stück Obst sieht.
        ''' </summary>
        ''' <param name="obst">Obst</param>
        Public Overloads Overrides Sub Sieht(ByVal obst As Obst)
        End Sub

        ''' <summary>
        ''' Wird aufgerufen, wenn die Ameise einen Käfer sieht.
        ''' </summary>
        ''' <param name="käfer">Käfer</param>
        Public Overloads Overrides Sub Sieht(ByVal käfer As Käfer)
        End Sub

        ''' <summary>
        ''' Wird aufgerufen, wenn die Ameise eine Markierung sieht.
        ''' </summary>
        ''' <param name="markierung"></param>
        Public Overloads Overrides Sub Sieht(ByVal markierung As Markierung)
        End Sub

        ''' <summary>
        ''' Wird aufgerufen, wenn die Ameise mit einem Käfer kämpft.
        ''' </summary>
        ''' <param name="käfer">Käfer</param>
        Public Overrides Sub WirdAngegriffen(ByVal käfer As Käfer)
        End Sub

        ''' <summary>
        ''' Wird aufgerufen, wenn die Ameise bei einem Zuckerhaufen ankommt.
        ''' </summary>
        ''' <param name="zucker">Zuckerhaufen</param>
        Public Overloads Overrides Sub ZielErreicht(ByVal zucker As Zucker)
        End Sub

        ''' <summary>
        ''' Wird aufgerufen, wenn die Ameise bei einem Stück Obst ankommt.
        ''' </summary>
        ''' <param name="obst">Obst</param>
        Public Overloads Overrides Sub ZielErreicht(ByVal obst As Obst)
        End Sub

        ''' <summary>
        ''' Wird aufgerufen, sobald die Ameise gestorben ist. Zusätzliche Informationen über 
        ''' die Art des Todes werden mitgeliefert
        ''' </summary>
        ''' <param name="todesArt">Art des Todes</param>
        Public Overrides Sub IstGestorben(ByVal todesArt As TodesArt)
        End Sub


        ''' <summary>
        ''' Wird in jeder Runde aufgerufen.
        ''' </summary>
        Public Overrides Sub Tick()
        End Sub


        ''' <summary>
        ''' Wird genutz um Koordinaten in KoordinatenSpeicher.vb zu speichern.
        ''' </summary>
        Public Shared Sub SpeicherKoordinate(ByVal id As Int32, ByRef koordinate As IKoordinate)
            If TypeOf koordinate Is Zucker Then
                If Not KoordinatenSpeicher(Of Int32, IKoordinate).KoordinatenZucker.ContainsKey(id) Then
AndAlso Not KoordinatenSpeicher(Of Int32, IKoordinate).ObjekteGeloescht.Contains(id) Then 
                    KoordinatenSpeicher(Of Int32, IKoordinate).KoordinatenZucker.Add(id, koordinate)
                End If
            Else
                If Not KoordinatenSpeicher(Of Int32, IKoordinate).KoordinatenObst.ContainsKey(id) Then
AndAlso Not KoordinatenSpeicher(Of Int32, IKoordinate).ObjekteGeloescht.Contains(id) Then 
                    KoordinatenSpeicher(Of Int32, IKoordinate).KoordinatenObst.Add(id, koordinate)
                End If
            End If
        End Sub


        ''' <summary>
        ''' Wird genutz um Koordinaten in KoordinatenSpeicher.vb zu löschen.
        ''' </summary>
        Public Shared Sub LoescheKoordinate(ByVal id As Int32)
            KoordinatenSpeicher(Of Int32, IKoordinate).KoordinatenObst.Remove(id)
            KoordinatenSpeicher(Of Int32, IKoordinate).KoordinatenZucker.Remove(id)
            KoordinatenSpeicher(Of Int32, IKoordinate).ObjekteGeloescht.Add(id)
        End Sub


        ''' <summary>
        ''' Wird genutz damit sich die Armeisen Zucker-Koordinaten aus KoordinatenSpeicher.vb holen können.
        ''' </summary>
        Public Shared Function GibZucker() As IKoordinate
            If KoordinatenSpeicher(Of Int32, IKoordinate).KoordinatenZucker.Count > 0 Then
                For Each pair As KeyValuePair(Of Int32, IKoordinate) In KoordinatenSpeicher(Of Int32, IKoordinate).KoordinatenZucker
                    Return pair.Value
                Next
            End If
            Return Nothing
        End Function


    End Class

End Namespace

und
KoordinatenSpeicher.vb
Code:
Imports System.Collections.ObjectModel
Public Class KoordinatenSpeicher(Of K, V)
    Private Shared zuckerKoordinaten As New Dictionary(Of K, V)
    Private Shared obstKoordinaten As New Dictionary(Of K, V)
    Private Shared geloeschteObjekte As New Collection(Of Int32)


    Public Shared ReadOnly Property KoordinatenZucker() As Dictionary(Of K, V)
        Get
            Return zuckerKoordinaten
        End Get
    End Property
    Public Shared ReadOnly Property KoordinatenObst() As Dictionary(Of K, V)
        Get
            Return obstKoordinaten
        End Get
    End Property
    Public Shared ReadOnly Property ObjekteGeloescht() As Collection(Of Int32)
        Get
            Return geloeschteObjekte
        End Get
    End Property


End Class

Jetzt bekomm ich bei den beiden stellen mit AndAlso in Vorlage.vb einen Syntaxfehler. Wiso? Schon mal danke im voraus.
Code:
        ''' <summary>
        ''' Wird genutz um Koordinaten in KoordinatenSpeicher.vb zu speichern.
        ''' </summary>
        Public Shared Sub SpeicherKoordinate(ByVal id As Int32, ByRef koordinate As IKoordinate)
            If TypeOf koordinate Is Zucker Then
                If Not KoordinatenSpeicher(Of Int32, IKoordinate).KoordinatenZucker.ContainsKey(id) Then
AndAlso Not KoordinatenSpeicher(Of Int32, IKoordinate).ObjekteGeloescht.Contains(id) Then 
                    KoordinatenSpeicher(Of Int32, IKoordinate).KoordinatenZucker.Add(id, koordinate)
                End If
            Else
                If Not KoordinatenSpeicher(Of Int32, IKoordinate).KoordinatenObst.ContainsKey(id) Then
AndAlso Not KoordinatenSpeicher(Of Int32, IKoordinate).ObjekteGeloescht.Contains(id) Then 
                    KoordinatenSpeicher(Of Int32, IKoordinate).KoordinatenObst.Add(id, koordinate)
                End If
            End If
        End Sub
 

Neue Beiträge

Zurück