Zum Inhalt springen

marvin_hubert

Mitglieder
  • Gesamte Inhalte

    2
  • Benutzer seit

  • Letzter Besuch

  1. Hmm... hab da leider meine Schwierigkeiten im Umwandeln :/ soweit bekomme ich es ja noch hin: private function findIndexOfControl(Control parent, String key) as integer if parent.Controls.IndexOfKey(key) <> -1 then return parent.Controls.IndexOfKey(key) else dim gesuchterIndex as integer = -1 /*hier fängt es an zu hapern for (int i = 0; i < parent.Controls.Count && gesuchterIndex == -1; i++) { gesuchterIndex = findIndexOfControl(parent.Controls, key); /*hier hört es auf zu hapern return gesuchterIndex end function bitte um Hilfe :/ Gruß
  2. Guten Tag *Nicht zum Thema gehörend Ich bin zwar weder als Fachinformatiker tätig, noch werde ich demnächst meine Ausbildung in diese Fachrichtung beginnen. Ich bin gerade 17 Jahre alt und besuche derzeit die 10.Klasse eines Gymnasiums in Nordrhein-Westfahlen. Nach meinem Abi (vorraussichtlich 2013) strebe ich jedoch einen Beruf im IT-Bereich an. * Nicht zum Thema gehörend Nun aber zu meinem/n Problem/en: Zunächst einmal der Code um welchen sich alles dreht Form1.vb: Public Class Form1 Private Field As Game Dim position As String Dim wegfrei As Boolean Dim schritte As Integer = 0 Dim level As Integer = 1 Dim bausteine As New PictureBox Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Call stufen() End Sub Public Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown 'Links Select Case Field.Feld(Me.Controls(Me.Controls.IndexOfKey("roboter")).Location.X - 1, Me.Controls(Me.Controls.IndexOfKey("roboter")).Location.Y) Case 0 wegfrei = True Case 1 wegfrei = False Case 2 wegfrei = True Case 3 position = "links" End Select '' Start Try ' hier machst du was ' sollte dabei ein Fehler auftreten ' springt der Debugger automatisch zum Catch Block ' ohne eine Fehlermeldung dem User zu zeigen Catch ex As Exception ' hier kannst du im Falle eines Fehlers den Fehler bzw. die Exception (Ausnahmne) verarbeiten MsgBox(ex.Source & " : " & ex.InnerException.ToString & " : " & ex.Message) End Try '' Ende 'Rechts Select Case Field.Feld(Me.Controls(Me.Controls.IndexOfKey("roboter")).Location.X + 1, Me.Controls(Me.Controls.IndexOfKey("roboter")).Location.Y) Case 0 wegfrei = True Case 1 wegfrei = False Case 2 wegfrei = True Case 3 position = "rechts" Case 4 End Select 'Drunter Select Case Field.Feld(Me.Controls(Me.Controls.IndexOfKey("roboter")).Location.X, Me.Controls(Me.Controls.IndexOfKey("roboter")).Location.Y + 1) Case 0 wegfrei = True Case 1 wegfrei = False Case 2 wegfrei = True Case 3 position = "drunter" End Select 'Drüber Select Case Field.Feld(Me.Controls(Me.Controls.IndexOfKey("roboter")).Location.X, Me.Controls(Me.Controls.IndexOfKey("roboter")).Location.Y - 1) Case 0 wegfrei = True Case 1 wegfrei = False Case 2 wegfrei = True Case 3 position = "drüber" End Select Select Case e.KeyValue Case 37, 65 Select Case wegfrei Case True Me.Controls(Me.Controls.IndexOfKey("roboter")).Left -= 75 schritte = schritte + 1 schritte_ausg.Text = schritte Case False MsgBox("nicht möglich") End Select Case 38, 87 Select Case wegfrei Case True Me.Controls(Me.Controls.IndexOfKey("roboter")).Top -= 75 schritte = schritte + 1 schritte_ausg.Text = schritte Case False MsgBox("nicht möglich") End Select Case 39, 68 Select Case wegfrei Case True Me.Controls(Me.Controls.IndexOfKey("roboter")).Left += 75 schritte = schritte + 1 schritte_ausg.Text = schritte Case False MsgBox("nicht möglich") End Select Case 40, 83 Select Case wegfrei Case True Me.Controls(Me.Controls.IndexOfKey("roboter")).Top += 75 schritte = schritte + 1 schritte_ausg.Text = schritte Case False MsgBox("nicht möglich") End Select End Select If Field.Feld(Me.Controls(Me.Controls.IndexOfKey("roboter")).Location.X, Me.Controls(Me.Controls.IndexOfKey("roboter")).Location.Y) = 3 Then Call schieben() End If Call check() End Sub Private Sub schieben() With Me.Controls(Me.Controls.IndexOfKey("kiste")) Select Case position Case "rechts" Me.Controls(Me.Controls.IndexOfKey("kiste")).Left = Me.Controls(Me.Controls.IndexOfKey("kiste")).Left - 75 Case "links" Me.Controls(Me.Controls.IndexOfKey("kiste")).Left = Me.Controls(Me.Controls.IndexOfKey("kiste")).Left + 75 Case "drüber" Me.Controls(Me.Controls.IndexOfKey("kiste")).Top = Me.Controls(Me.Controls.IndexOfKey("kiste")).Top + 75 Case "drunter" Me.Controls(Me.Controls.IndexOfKey("kiste")).Top = Me.Controls(Me.Controls.IndexOfKey("kiste")).Top - 75 End Select End With End Sub Private Sub check() If Me.Controls(Me.Controls.IndexOfKey("roboter")).Left = Me.Controls(Me.Controls.IndexOfKey("ziel")).Left And Me.Controls(Me.Controls.IndexOfKey("roboter")).Top = Me.Controls(Me.Controls.IndexOfKey("ziel")).Top Then MsgBox("Stufe geschafft" & "Benötigte Schritte: " & schritte) level = level + 1 Me.Controls.Clear() Call stufen() Else End If End Sub Private Sub stufen() Select Case level Case 1 Field = New Game("C:\Users\Marvin\Desktop\Informatik2\Informatik-Sokoban-17.05.2010\Informatik-Sokoban-17.05.2010\LEVEL\1.txt") Case 2 Field = New Game("C:\Users\Marvin\Desktop\Informatik2\Informatik-Sokoban-17.05.2010\Informatik-Sokoban-17.05.2010\LEVEL\2.txt") Case 3 Field = New Game("C:\Users\Marvin\Desktop\Informatik2\Informatik-Sokoban-17.05.2010\Informatik-Sokoban-17.05.2010\LEVEL\3.txt") Case 4 Field = New Game("C:\Users\Marvin\Desktop\Informatik2\Informatik-Sokoban-17.05.2010\Informatik-Sokoban-17.05.2010\LEVEL\4.txt") Case 5 Field = New Game("C:\Users\Marvin\Desktop\Informatik2\Informatik-Sokoban-17.05.2010\Informatik-Sokoban-17.05.2010\LEVEL\5.txt") Case 6 MsgBox("Herzlichen Glückwunsch. Du hast das Spiel gewonnen. Das Programm wird nun beendet") Me.Close() End Select For x As Integer = 0 To 7 For y As Integer = 0 To 7 Dim baustein As New PictureBox Dim baustein2 As New PictureBox Select Case Field.Feld(x, y) Case 0 Me.Controls.Add(baustein) With baustein .Parent = Me .Name = "boden" & (x + (y * 2)) .Left = 75 * x .Top = 75 * y .Height = 75 .Width = 75 .BackgroundImage = My.Resources.Boden .SendToBack() End With Case 1 Me.Controls.Add(baustein) With baustein .Parent = Me .Name = "mauer" & (x + (y * 2)) .Left = 75 * x .Top = 75 * y .Height = 75 .Width = 75 .BackgroundImage = My.Resources.Mauer .SendToBack() End With Case 2 Me.Controls.Add(baustein) Me.Controls.Add(baustein2) With baustein .Parent = Me .Name = "boden" & (x + (y * 2)) .Left = 75 * x .Top = 75 * y .Height = 75 .Width = 75 .BackgroundImage = My.Resources.Boden .SendToBack() End With With baustein2 .Parent = Me .Name = "roboter" .Left = 75 * x .Top = 75 * y .Height = 75 .Width = 75 .BackgroundImage = My.Resources.Roboter .BringToFront() End With Case 3 Me.Controls.Add(baustein) Me.Controls.Add(baustein2) With baustein .Parent = Me .Name = "boden" & (x + (y * 2)) .Left = 75 * x .Top = 75 * y .Height = 75 .Width = 75 .BackgroundImage = My.Resources.Boden .SendToBack() End With With baustein2 .Parent = Me .Name = "kiste" & (x + (y * 2)) .Left = 75 * x .Top = 75 * y .Height = 75 .Width = 75 .BackgroundImage = My.Resources.Kiste .BringToFront() End With Case 4 Me.Controls.Add(baustein) With baustein .Parent = Me .Name = "ziel" & (x + (y * 2)) .Left = 75 * x .Top = 75 * y .Height = 75 .Width = 75 .BackgroundImage = My.Resources.Ziel .BringToFront() End With End Select Next Next 'end End Sub End Class Game.vb: Public Class Game Public Feld(,) As Integer Public Sub New(ByVal file As String) 'auslesen Dim inhalt As New List(Of String) inhalt.AddRange(IO.File.ReadAllText(file).Split(CChar(" "))) Dim k(7, 7) As Integer 'auswerten For x As Integer = 0 To 7 For y As Integer = 0 To 7 k(x, y) = CInt(CStr(inhalt(x)(y))) Next Next Feld = k End Sub End Class Mein derzeitiges Problem ist ein IndexOutOfRangeException-Fehler, welcher an folgender Stelle in der Form1.vb auftritt, wenn ich eine Pfeiltaste drücke (und somit das keydown Event anspreche) [...] Select Case Field.Feld(Me.Controls(Me.Controls.IndexOfKey("roboter")).Location.X - 1, Me.Controls(Me.Controls.IndexOfKey("roboter")).Location.Y) Case 0 [...] Ich stehe völlig auf dem Schlauch. Ich hab echt keine Ahnung wodurch der Fehler entsteht. Ich würde mich über eine Hilfreiche Antwort sehr freuen! Mit freundlichen Grüßen, marvin_hubert

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...