vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: 8-Damen Problem 
Autor: ralf
Datum: 10.07.02 23:06

Hi,

probiers mal so, bin mir zwar nicht so sicher aber es könnte so gehen:

Leg eine Form an, welche ein Label mit dem namen lblZelle und den Index 0 hat an. Füge ein Modul hinzu und schreib folgenden Code (vergiss nicht unter Projekteigenschaften die sache auf sub main zu stellen)

Option Explicit
 
Public lFeldX As Long
Public lFeldY As Long
Public lFeldPosX As Long
Public lFeldPosY As Long
Public lFeldIndex As Long
Public Quotient As Double
Public zaehler As Double
 
Public Const Anzahl = 8
Public bZeile(1 To 8) As Boolean
Public bRODiagonale(2 To 16) As Boolean
Public bLUDiagonale(-7 To 7) As Boolean
Public iBelegung(1 To 8) As Integer
Public bAbbruch As Boolean
Public ii, ij, iindex As Integer
 
Private Sub main()
 
    lFeldPosX = 1520
    lFeldPosY = 1520
    zaehler = 0
 
    lFeldIndex = 0
 
    With frmMain
        .Width = 7000
        .Height = 7000
        .WindowState = vbCenter
 
        .lblZelle(0).Visible = False
 
        For lFeldX = 1 To 8
            For lFeldY = 1 To 8
                lFeldIndex = lFeldY * 10 + lFeldX
 
                Load .lblZelle(lFeldIndex)
 
                If zaehler = 0 Then
                    .lblZelle(lFeldIndex).BackColor = &H80000001
                    zaehler = 1
                Else
                    .lblZelle(lFeldIndex).BackColor = &H80000005
                    zaehler = 0
                End If
 
                .lblZelle(lFeldIndex).Top = lFeldPosX
                .lblZelle(lFeldIndex).Left = lFeldPosY
                .lblZelle(lFeldIndex).Visible = True
 
                lFeldPosY = lFeldPosY + 495
            Next lFeldY
 
            If zaehler = 0 Then
                zaehler = 1
            Else
                zaehler = 0
            End If
 
            lFeldPosX = lFeldPosX + 495
            lFeldPosY = 1520
        Next lFeldX
 
        .Show
    End With
 
    For ii = 1 To 8
        bZeile(ii) = True
        iBelegung(ii) = 0
    Next ii
 
    For ii = 2 To 16
        bRODiagonale(ii) = True
    Next ii
 
    For ii = -7 To 7
        bLUDiagonale(ii) = True
    Next ii
 
    Call DamenBelegung(1, bAbbruch) ' Ausgabeformatierungen
 
    For ii = 1 To 8
        If iBelegung(ii) <> 0 Then
            iindex = ii * 10 + iBelegung(ii)
            frmMain.lblZelle(iindex).BackColor = vbRed
        End If
    Next ii
 
End Sub
 
Public Sub DamenBelegung(ii, bAbbruch)
 
Dim ik As Integer
 
    ik = 0
    Do
        ik = ik + 1
        bAbbruch = False
        If bZeile(ik) And bRODiagonale(ii + ik) And bLUDiagonale(ii - ik) Then
            iBelegung(ii) = ik
            bZeile(ik) = False
            bRODiagonale(ii + ik) = False
            bLUDiagonale(ii - ik) = False
            If ii < Anzahl Then
                Call DamenBelegung(ii + 1, bAbbruch)
                If Not bAbbruch Then
                    bZeile(ik) = True
                    bRODiagonale(ii + ik) = True
                    bLUDiagonale(ii - ik) = True
                End If
            Else
                bAbbruch = True
            End If
        End If
    Loop Until ik = Anzahl Or bAbbruch
 
End Sub
Gruss

Ralf
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
8-Damen Problem86Oliver10.07.02 10:52
Re: 8-Damen Problem48TekoW10.07.02 17:43
Re: 8-Damen Problem452unbekannt10.07.02 17:48
Re: 8-Damen Problem47TekoW10.07.02 18:02
Re: 8-Damen Problem525unbekannt10.07.02 18:06
thx (oT)38TekoW10.07.02 18:08
Re: thx (oT)61LTB-FanSite10.07.02 18:51
Nein. Da7 X Dd4! Wrong ... oT451unbekannt10.07.02 23:20
Re: 8-Damen Problem51ralf10.07.02 23:06
Re: 8-Damen Problem42Oliver11.07.02 09:30
Hallo! Könnte sich mal jemand melden? 8-Damen Problem (ot)35Oliver11.07.02 22:07
Re: Hallo! Könnte sich mal jemand melden? 8-Damen Problem (o...415unbekannt11.07.02 22:10
Re: Hallo! Könnte sich mal jemand melden? 8-Damen Problem (o...38ralf11.07.02 22:15
Widerspruch!476unbekannt11.07.02 22:18
Re: Widerspruch!33ralf11.07.02 22:22
Da Problem wird pragmatisch gelöst 494unbekannt11.07.02 23:17
Re: Da Problem wird pragmatisch gelöst 31ralf12.07.02 08:22
Re: Hallo! Könnte sich mal jemand melden? 8-Damen Problem (o...33ralf11.07.02 22:17

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel