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/downlo...edaechtnis.pdf
Jetzt hab ich folgende Queltexte:
Vorlage.vb
und
KoordinatenSpeicher.vb
Jetzt bekomm ich bei den beiden stellen mit AndAlso in Vorlage.vb einen Syntaxfehler. Wiso? Schon mal danke im voraus.
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/downlo...edaechtnis.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">Zucker</param>
Public 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)
SpeicherKoordinate(obst.Id, 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()
If Ziel Is Nothing Then
If Me.Typ = "Sammler" Then
Dim koord As Zucker
koord = GibZucker()
If koord Is Nothing Then
GeheGeradeaus(Reichweite / 2 + 1)
Return
Else
If koord.Menge >= 10 Then
GeheZuZiel(koord)
Else
LoescheKoordinate(koord.Id)
GeheZuBau()
End If
End If
Else
Dim koord As Obst
koord = GibObst()
If koord Is Nothing Then
GeheGeradeaus(Reichweite / 2 + 1)
Return
Else
If BrauchtNochTräger(koord) Then
GeheZuZiel(koord)
Else
LoescheKoordinate(koord.Id)
GeheZuBau()
End If
End If
End If
End If
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
Public Shared Function GibObst() As IKoordinate
If KoordinatenSpeicher(Of Int32, IKoordinate).KoordinatenObst.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
Zuletzt bearbeitet: