Anfängerfragen en Mass

Arvenius

Grünschnabel
Hallo liebe Tutorials.de Gemeinde.

Ich soll in Informatik ein Programm schreiben. So sieht die Aufgabenstellung aus:

Das Benutzersteuerelement (Objekt) soll 2 Methoden und 2 Eigenschaften (Properties) haben.
Dabei hat das Objekt auch einen eigenen Quellkode, in diesem werden die Methoden und Eigenschaften realisiert.
Das Programm (Form1) benutzt dann diese Methoden und Eigenschaften.

Nun habe ich ein simples Auto als Benutzersteuerelement gebastelt, welches vor und zurück fahren kann, sowie Licht und Warnblinker an und ausschalten kann.

Rein von den Methoden her sollte das ja auch reichen. Wenn sie denn im Benutzersteuerelement selbst vorhanden wären. Wie das allerdings funktioniert... ich habe keine Ahnung. Leider habe ich in der Schule aufgrund einer OP mehrere Wochen gefehlt und stehe nun da wie der Ochs vorm Berg.

Ich poste euch einfach mal mein Auto, vielleicht könnt ihr mir hier und da ja mal ein wenig unter die Arme greifen, bzw. mir sagen, wie ich realisieren kann, was der Lehrer von mir möchte...

Code:
Public Class Form1
    Dim Guthaben As Integer = 100
    Dim Tankkosten As Integer = 0
    'hier kann man das Auto über die Tasten steuern'
    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles UserControl11.KeyDown
        'zunächst wird geguckt, ob wir schon an der maximalen position sind'
        If e.KeyData = Keys.D And UserControl11.Location.X() < 960 And Verbrauch.Value > 1 Then
            Timer2.Stop() 'wenn nicht, dann stoppen wir alle timer die evtl. laufen'
            Timer3.Stop()
            Timer4.Stop()
            UserControl11.Left += 15 'und fahren dann 5 schritte vor'
            UserControl11.rücklicht.FillColor = Color.Black
            Label1.Visible = False
            Verbrauch.Value -= 1
        Else
            If UserControl11.Location.X() < 960 And Verbrauch.Value > 1 Then
                Label1.Visible = True
                Label1.Text = "Du bist liegen geblieben. Geh tanken!"
            End If
            Label1.Visible = True 'falls doch, dann zeigen wir eine fehlermeldung an'
        End If
        'das gleiche für die rückwärtsfahrt'
        If e.KeyData = Keys.A And UserControl11.Location.X() > 15 And Verbrauch.Value > 1 Then
            Timer2.Stop()
            Timer3.Stop()
            Timer4.Stop()
            UserControl11.Left -= 15
            UserControl11.rücklicht.FillColor = Color.White
            Label1.Visible = False
            Verbrauch.Value -= 1

        End If
        'und damit es nicht so aussieht als hätten wir immer den rückwärtsgang drin, machen wir das licht noch aus nach dem rückwärtsfahren'
        If UserControl11.Location.X() <= 15 Then
            UserControl11.rücklicht.FillColor = Color.Black
        End If
    End Sub

    Private Sub Licht_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Licht.Click
        Label1.Visible = False
        'hier wird beim klick auf den lichtbutton das licht an und ausgemacht'
        If UserControl11.licht1.Visible = False Then
            UserControl11.licht1.Visible = True
            UserControl11.licht2.Visible = True
            UserControl11.licht3.Visible = True
            UserControl11.licht4.Visible = True
            UserControl11.licht5.Visible = True
            UserControl11.licht6.Visible = True
            UserControl11.Select()
        ElseIf UserControl11.licht1.Visible = True Then
            UserControl11.licht1.Visible = False
            UserControl11.licht2.Visible = False
            UserControl11.licht3.Visible = False
            UserControl11.licht4.Visible = False
            UserControl11.licht5.Visible = False
            UserControl11.licht6.Visible = False
            UserControl11.Select()
        End If

    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        'hier legen wir eine kleine schleife für den warnblinker an'
        Static n As Integer
        n = n + 1
        If n > 2 Then n = 0 'wenn n größer als 2 ist, dann setzen wir n wieder auf 0'
        Select Case n
            Case 0 'bei 0 wird die standardfarbe angezeigt'
                UserControl11.Blinker_hinten.FillColor = Color.LightYellow
                UserControl11.Blinker_vorn.FillColor = Color.LightYellow
            Case 1  'bei 1 blinkt es'
                UserControl11.Blinker_hinten.FillColor = Color.DarkOrange
                UserControl11.Blinker_vorn.FillColor = Color.DarkOrange
            Case 2 'usw.'
                UserControl11.Blinker_hinten.FillColor = Color.LightYellow
                UserControl11.Blinker_vorn.FillColor = Color.LightYellow
        End Select
    End Sub

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        'das ist der timer zum vorwärtsfahren'
        If UserControl11.Location.X() < 960 And Verbrauch.Value <= 1 Then
            Label1.Visible = True
            Label1.Text = "Du bist liegen geblieben. Geh tanken!"
        Else
            If UserControl11.Location.X() < 960 Then
                UserControl11.Left += 15
                UserControl11.rücklicht.FillColor = Color.Black
                Verbrauch.Value -= 1
            Else
                Timer2.Stop()
            End If
        End If
    End Sub

    Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick
        'dies ist der timer zum rückwärtsfahren'
        If UserControl11.Location.X() > 15 And Verbrauch.Value <= 1 Then
            Label1.Visible = True
            Label1.Text = "Du bist liegen geblieben. Geh tanken!"
        Else
            If UserControl11.Location.X() > 15 Then
                UserControl11.Left -= 15
                UserControl11.rücklicht.FillColor = Color.White
                Label1.Visible = False
                Verbrauch.Value -= 1
            Else
                Timer3.Stop()
                UserControl11.rücklicht.FillColor = Color.Black
            End If
        End If

    End Sub

    Private Sub Timer4_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer4.Tick
        'und hier der timer zum schnellen vorwärtsfahren'
        If UserControl11.Location.X() < 960 And Verbrauch.Value <= 1 Then
            Label1.Visible = True
            Label1.Text = "Du bist liegen geblieben. Geh tanken!"
        Else
            If UserControl11.Location.X() < 960 Then
                UserControl11.Left += 45
                UserControl11.rücklicht.FillColor = Color.Black
                Label1.Visible = False
                Verbrauch.Value -= 2
            Else
                Timer4.Stop()
            End If
        End If
    End Sub

    Private Sub warnblinker_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles warnblinker.Click
        'hier wird der warnblinker an und aus gemacht'
        If Timer1.Enabled Then
            Timer1.Stop()
            UserControl11.Blinker_hinten.FillColor = Color.LightYellow 'ganz wichtig, falls der timer während das blinklicht "on" war deaktiviert wird
            UserControl11.Blinker_vorn.FillColor = Color.LightYellow 'soll die richtige farbe wieder angezeigt werden'
            UserControl11.Select()
        Else
            Timer1.Enabled = True
            Timer1.Start()
            UserControl11.Select()
        End If
    End Sub

    Private Sub vorwaerts_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles vorwaerts.Click
        'hier wird bei klick auf vorwärts der timer 1 gestartet, der das auto langsam nach vorn bewegt'
        If UserControl11.Location.X() < 960 Then
            Timer3.Stop()
            Timer4.Stop()
            Timer2.Start()
            UserControl11.Select()
        Else
            'falls das auto aber schon zu nah an der wand steht, werfen wir eine fehlermeldung raus'
            Label1.Visible = True
        End If
    End Sub

    Private Sub vorwaertsschnell_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles vorwaertsschnell.Click
        'hier wird der timer fürs schnelle vorwärtsfahren gestartet, natürlich nur dann, wenn wir noch nicht an der wand stehen'
        If UserControl11.Location.X() < 960 Then
            Timer2.Stop()
            Timer3.Stop()
            Timer4.Start()
            UserControl11.Select()
        Else
            'falls doch, dann gibts auch hier wieder unsere fehlermeldung'
            Label1.Visible = True
        End If
    End Sub

    Private Sub rueckwaerts_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rueckwaerts.Click
        'und das gleiche nochmal fürs rückwärsfahren'
        If UserControl11.Location.X() > 15 Then
            Timer2.Stop()
            Timer4.Stop()
            Timer3.Start()
            UserControl11.Select()
        Else
            Label1.Visible = True
        End If
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'damit wir die tasten zum fahren nutzen können, muss das objekt selektiert werden'
        UserControl11.Select()
        If Verbrauch.Value < 1 Then
            Verbrauch.Value = 1
        End If
    End Sub

    Private Sub stoppen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles stoppen.Click
        'falls man während der fahrt nochmal stoppen möchte'
        Timer2.Stop()
        Timer4.Stop()
        Timer3.Stop()
        UserControl11.Select()
    End Sub

    Private Sub Tanken_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tanken.Click
        If Verbrauch.Value = 100 Then
            Label3.Visible = True
            Label3.Text = "Der Tank ist doch schon voll"
            UserControl11.Select()
        Else
            Label3.Visible = True
            Tankkosten = 100 - Verbrauch.Value
            Label3.Text = "Das macht " & 100 - Verbrauch.Value & " Euro"
            Guthaben = (Guthaben - Tankkosten)
            guthabenanzeige.Text = "Du hast noch " & Guthaben & " Euro"
            Verbrauch.Value = Guthaben - Tankkosten
            UserControl11.Select()
        End If

    End Sub
End Class

Und ja, ich weiß, dass der Code mit dem Guthaben noch nicht richtig funktioniert, das bekomme ich aber sicher allein in den Griff.
Achja, wie man sieht ist das ja jetzt alles im Form1 untergebracht.
Mir gehts eher um die konkrete Aufgabenstellung. Was kann ich wie ins Benutzersteuerelement packen, damit ich zwei Methoden und zwei Eigenschaften ins eben jenes bekomme? Gibts dazu irgendwelche (brauchbaren) Erklärungen oder so?

Vielen vielen Dank schonmal!
 

pipistrello

Mitglied
Ich soll in Informatik ein Programm schreiben. So sieht die Aufgabenstellung aus:

Das Benutzersteuerelement (Objekt) soll 2 Methoden und 2 Eigenschaften (Properties) haben.
Dabei hat das Objekt auch einen eigenen Quellkode, in diesem werden die Methoden und Eigenschaften realisiert.
Das Programm (Form1) benutzt dann diese Methoden und Eigenschaften.

hmmm... Dein Objekt soll laut Aufgabenstellung 2 Methoden haben, in deinem Auto willst du aber schonmal 6 Methoden verwenden. vorwärtsfahren() , rückwärtsfahren(), Licht einschalten(), Licht ausschalten(), Warnlicht einschalten() und Warnlicht ausschalten()...

Würds für die Aufgabenstellung nicht reichen wenn dein Auto erstmal einfach nur Vorwärtsfahren() und Bremsen() könnte ? Wären ja genau 2 Methoden. Und die 2 Attribute wären dann z.B. Geschwindigkeit und Richtung....

So hab ich es zumindest verstanden was der Lehrer von dir will....

Gruß
 

Arvenius

Grünschnabel
Aber wie sähe denn genau das dann aus mit dem vorwaerts()? Ich weiß gar nicht, wo ich eben einen solchen Quellcode unterbringen soll :-(
Gibts dazu irgendwelche Tutorials?
 

Arvenius

Grünschnabel
Genau nach sowas habe ich gesucht, wenn auch Klassen nicht gleich zu benutzen sind wie Benutzersteuerelemente war der Link doch sehr hilfreich und hat dafür gesorgt, dass ichs verstanden hab :) Danke!