Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 01:20

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Snake in VB.. brauche dringend hilfe!

Discussion on Snake in VB.. brauche dringend hilfe! within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Oct 2011
Posts: 33
Received Thanks: 3
Exclamation [VB]Brauche Hilfe

Hallo erstmal ...
also ich hab in VB ein Snake Spiel programmiert.

Diese Fehlermeldung kommt wenn ich m aufaddieren möchte wenn man ein rotes kästchen gegessen hat... wenn ich allerding unter Class Dim m as Integer = 10 setze dann laufn mir direkt 10 felder hinterher...
Quote:
FEHLER:
Eine nicht behandelte Ausnahme des Typs "System.IndexOutOfRangeException" ist in Snake.exe aufgetreten.

Zusätzliche Infos: der Index war ausßerhalb des Arraybereichs
Ausserdem brauche ich Hilfe bei einem CollisionsCode (mit der Schlange selbst). Wer mir helfen will und das testen möchte bitte dran denken bei Spiel.vb die DoubleBufferd Eigenschaft auf True setzen sonst funkts nicht...

Code:
Public Class Spiel
    Dim r As New System.Random
    Dim m As Integer = 1
    Dim p(m) As Point
    Dim eat As Integer = 1
    Dim punkt(eat) As Point
    Dim k As Keys
    Dim pause As Boolean = False
    Dim xachse As Integer
    Dim yachse As Integer
    Dim xa As Integer
    Dim ya As Integer
    Dim Punkte As Integer
    Dim musikan As Boolean = False

    Public Sub merweitern()
        m = m + 1
        Me.Refresh()

    End Sub

    Public Sub Randoumfunktion()

        xachse = r.Next(0, 255)
        yachse = r.Next(0, 255)
        If xachse Mod 15 = 1 And yachse Mod 15 = 1 Then
            xa = xachse - 1
            ya = yachse - 1
            punkt(eat).X = xa
            punkt(eat).Y = ya

        Else
            Randoumfunktion()
        End If


    End Sub

    Public Sub wandcheck()

        If p(m).X >= 256 Then
            p(m).X = 0
        ElseIf p(m).X <= -1 Then
            p(m).X = 255
        End If

        If p(m).Y >= 256 Then
            p(m).Y = 0
        ElseIf p(m).Y < -1 Then
            p(m).Y = 255

        End If


    End Sub

    Public Sub keycheck()
        If k = Keys.Left Then
            p(m).X -= 15
        End If
        If k = Keys.Right Then
            p(m).X += 15
        End If
        If k = Keys.Up Then
            p(m).Y -= 15
        End If
        If k = Keys.Down Then
            p(m).Y += 15
        End If
        If k = Keys.Escape Then
            Startscreen.Show()
            Me.Close()
        End If
        If k = Keys.P Then
            GameOver.Show()
            Me.Close()
        End If
    End Sub

    Public Sub fressencheck()
        If p(m).X & p(m).Y = punkt(eat).X & punkt(eat).Y Then
            Randoumfunktion()
            Punkte = Punkte + 5
            Me.Text = "Punkte: " & Punkte
        End If
    End Sub

    Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
        Dim b As New Bitmap(270, 270)
        Dim g As Graphics = Graphics.FromImage(b)

        fressencheck()
        keycheck()
        wandcheck()

        For i As Integer = 0 To m - 1
            p(i) = p(i + 1)
            g.FillRectangle(Brushes.Green, New Rectangle(p(i), New Size(15, 15)))
        Next

        g.FillRectangle(Brushes.Red, New Rectangle(punkt(eat), New Size(15, 15)))
        g.FillRectangle(Brushes.Green, New Rectangle(p(m), New Size(15, 15)))
        g.Dispose()
        Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedSingle
        Me.BackgroundImage = b
        Me.ClientSize = b.Size
        Me.Refresh()
    End Sub

    Private Sub Spiel_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        If e.KeyCode = Keys.Left Then
            k = Keys.Left
        End If
        If e.KeyCode = Keys.Right Then
            k = Keys.Right
        End If
        If e.KeyCode = Keys.Up Then
            k = Keys.Up
        End If
        If e.KeyCode = Keys.Down Then
            k = Keys.Down
        End If
        If e.KeyCode = Keys.Escape Then
            k = Keys.Escape
        End If
        If e.KeyCode = Keys.P Then
            k = Keys.P
        End If
    End Sub

    Private Sub Spiel_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        p(m).X = 0
        p(m).Y = 0
        Randoumfunktion()

    End Sub



End Class
D3giX is offline  
Old 12/14/2011, 20:55   #2
 
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
Wenn du Hilfe zu Quellcode willst, dann gewöhn dir an Variablen gescheit zu benennen, das gleiche gilt für Funktionen. Die Richtlinien gibt es nicht grundlos.

Du rufst die Funktion merweitern nie auf, wie soll es dann dort crashen? Visual Studio hat einen debugger, benutz ihn.
MoepMeep is offline  
Old 12/14/2011, 22:26   #3
 
elite*gold: 14
The Black Market: 108/0/1
Join Date: May 2011
Posts: 2,671
Received Thanks: 818
Deklarier m mal als Public.
vwap is offline  
Old 12/14/2011, 22:32   #4
 
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
Quote:
Originally Posted by Headpuster View Post
Deklarier m mal als Public.
Schau dir mal bitte den Unterschied zwischen public,private und protected an. Übrigens ist das ganze eine IndexOutOfRangeException und hat nichts mit den Zugriffsrechten zu tun.
MoepMeep is offline  
Old 12/14/2011, 22:34   #5
 
elite*gold: 14
The Black Market: 108/0/1
Join Date: May 2011
Posts: 2,671
Received Thanks: 818
Wirklich?

Wenn er schon OOP programmiert, kann er doch wenigstens die Variablen dementsprechend deklarieren.
Warum sollte ich mir den mir bereits bekannte Unterschied zwischen Public, Private, Protocted, Shadowed und Shared nochmal ansehen?
vwap is offline  
Old 12/14/2011, 22:42   #6
 
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
Quote:
Originally Posted by Headpuster View Post
Wirklich?

Wenn er schon OOP programmiert, kann er doch wenigstens die Variablen dementsprechend deklarieren.
Warum sollte ich mir den mir bereits bekannte Unterschied zwischen Public, Private, Protocted, Shadowed und Shared nochmal ansehen?
Weil es absolut keinen Sinn macht, m auf public zu setzen.
MoepMeep is offline  
Old 12/14/2011, 22:53   #7
 
elite*gold: 14
The Black Market: 108/0/1
Join Date: May 2011
Posts: 2,671
Received Thanks: 818
Dim stammt von VB 6 und somit veraltet, die Variablentypen wie Public, Private etc. wurden in .Net eingeführt und stehen für objektorientierte Programmierung.

Somit macht es durchaus Sinn, aktuellen Code, und keinen aus 1996 zu verwenden.
vwap is offline  
Old 12/14/2011, 23:08   #8
 
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
Zugriffsmodifizierer*

Und public macht immernoch keinen sinn, das ding gehört auf private.
MoepMeep is offline  
Old 12/14/2011, 23:30   #9
 
elite*gold: 14
The Black Market: 108/0/1
Join Date: May 2011
Posts: 2,671
Received Thanks: 818
Kommt drauf an, ob die Klasse auch noch außerhalb genutzt wird
Außer natürlich, er möchte nur die erhöhem() Sub verwenden.
vwap is offline  
Old 12/15/2011, 12:56   #10
 
elite*gold: 5
Join Date: Mar 2008
Posts: 460
Received Thanks: 436
Quote:
Originally Posted by Headpuster View Post
Kommt drauf an, ob die Klasse auch noch außerhalb genutzt wird
Dafür gibt es Get/Set und ich stimme MoepMoep zu die gehört sich auf privat!
SwarN is offline  
Old 12/15/2011, 14:01   #11
 
elite*gold: 1250
Join Date: Nov 2011
Posts: 1,510
Received Thanks: 238
Quote:
Originally Posted by SwarN View Post
Dafür gibt es Get/Set und ich stimme MoepMoep zu die gehört sich auf privat!
Nein, soweit ich weiß, ist das volkommen egal.
iRofl is offline  
Old 12/15/2011, 14:26   #12
 
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
Quote:
Originally Posted by iRofl View Post
Nein, soweit ich weiß, ist das volkommen egal.
Bei schlechtem stil schon, jo ;o
MoepMeep is offline  
Old 12/15/2011, 14:30   #13
 
elite*gold: 1250
Join Date: Nov 2011
Posts: 1,510
Received Thanks: 238
Quote:
Originally Posted by MoepMeep View Post
Bei schlechtem stil schon, jo ;o
Wieso? Ich finde das Praktisch ;D
iRofl is offline  
Old 12/15/2011, 14:48   #14
 
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
Quote:
Originally Posted by iRofl View Post
Wieso? Ich finde das Praktisch ;D
Jo, weil du keine Ahnung hast was du da eigentlich machst.
MoepMeep is offline  
Thanks
1 User
Old 12/15/2011, 15:07   #15
 
elite*gold: 14
The Black Market: 108/0/1
Join Date: May 2011
Posts: 2,671
Received Thanks: 818
Quote:
Originally Posted by iRofl View Post
Wieso? Ich finde das Praktisch ;D
Inwiefern ist das zuteilen falscher Zugriffsoperatoren praktisch?
vwap is offline  
Reply


Similar Threads Similar Threads
Brauche dringend und zwar wirklich dringend eure Hilfe
09/18/2011 - Metin2 Private Server - 0 Replies
Bei mir auf dem Rootserver verlieren alle Teamler nach wenigen Minuten die GM Rechte, das war gestern noch nicht so... Woran könnte das liegen und wie beheben? Hoffe auf schnelle antwort Wäre mir sogar 10 e*Gold wert für eine Hilfestellung die funktioniert.
Brauche dringend hilfe!!!
07/22/2010 - WoW Private Server - 2 Replies
hallo leute!!! ich suche unbedingt einen mob, der nicht angreift, wenn man auf ihn einkloppt. sobald man einen mob angreift un weg geht, verfolgt er einen. und ich suche einen der genau das nicht tut, also das er einfach auf der stelle stehen bleibt. suche die ID für ArcEmu!!! falls ihr so einen mob und die id kennt, dann nur her damit ;) MfG gogga edit: er soll so änlich wie ein Heroic trainings dummy sein, bloß das er einen nicht verfolgt, sondern an einer stelle bleibt
Brauche Dringend Hilfe! Bin Metin spieler aber Brauche Hilfe
12/30/2009 - Metin2 Private Server - 0 Replies
Es gehört hier zwar nicht rein , aber ich weiß keine andere Lösung Ich habe seit einigen Tagen ein Problem... Microsoft Windows Search Protocol Host funktioniert nicht mehr Die Anwendung wird Aufgrund eines Problems nicht mehr richtig Ausgeführt. Ich weiß nicht was das ist und wie ich es loswerde.



All times are GMT +2. The time now is 01:20.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.