1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
Option Explicit On '
Imports System.IO
Imports System.Text
Imports System.Threading
Public Class Form1
Public TagStart As Object
Public PicZ(120) As PictureBox
Dim MouseIsDown As Boolean = False
Dim CursorImage As Image
Dim mm, nn, nnn As Integer
Dim IndexTag As Integer
Dim numberSeq() As Integer = {11, 13, 15, 17, 22, 24, 26, 28, 31, 33, 35, 37, 42, 44, 46, 48, 51, 53, 55, 57, 62, 64, 66, 68, 71, 73, 75, 77, 82, 84, 86, 88}
Dim numberBSeq() As Integer = {12, 14, 16, 18, 21, 23, 25, 27, 32, 34, 36, 38, 41, 43, 45, 47, 52, 54, 56, 58, 61, 63, 65, 67, 72, 74, 76, 78, 81, 83, 85, 87}
Dim pictSeq() As PictureBox = {PictureBox1, PictureBox2, PictureBox3}
Dim picZSeq() As Object = {PicZ(18), PicZ(28), PicZ(38)}
Dim Pieces, Ligne(100), ggg, PieceEch
Dim Nom, Numero, Revue, Prix As String
Dim PosX, PosY As String
Dim PosXE, PosYE As Integer
Dim DoubleClickBoolean = False
Public Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Call CrééCadre()
Me.KeyPreview = True
'créer le tableau de conversion des PictureBox en objets indexé.
PicZ(18) = PictureBox1
PicZ(28) = PictureBox2
PicZ(38) = PictureBox3
PicZ(48) = PictureBox4
' ..............
PicZ(61) = PictureBox62
PicZ(71) = PictureBox63
PicZ(81) = PictureBox64
'affecte la propriété AllowDrop aux 64 cases
For mm = 0 To 7
For Me.IndexTag = 11 + 10 * mm To 18 + 10 * mm
PicZ(IndexTag).AllowDrop = True
Next Me.IndexTag
Next mm
'initialise les 64 cases Echiquier comme : Vide
For nn = 10 To 17
Ligne(nn) = "........"
Next nn
End Sub
Public Sub PoseEffacePièces(sender As System.Object)
Dim clicked As PictureBox = CType(sender, PictureBox)
Tag = sender.tag
'Pièces cases noires
For Each number As Integer In numberSeq
If Tag = number Then PlacePiecesCasesNoires(1)
Next
'Pièces sur cases blanches
For Each number As Integer In numberBSeq
If Tag = number Then PlacePiecesCasesBlanches(1)
Next
'Ecriture des lignes 10 à 17 de matrice de problèmes au format des fichiers *.ech
For IndexFileEch = 10 To 17
Ligne(99) = ""
nnn = 0
For mm = 28 - IndexFileEch To 105 - IndexFileEch Step 10
nnn = Int(mm / 10)
ggg = Mid(Ligne(IndexFileEch), nnn, 1)
If Tag = mm Then
If Mid(Pieces, 2, 1) = "B" Then PieceEch = Mid(Pieces, 1, 1) : Call LoopControls()
If Mid(Pieces, 2, 1) = "N" Then PieceEch = LCase(Mid(Pieces, 1, 1)) : Call LoopControls()
'test effacecemnt pièces par DoubleClick
If DoubleClickBoolean = True Then
'Initialise le contenu de la case à : vide
PieceEch = "."
'dblclick sur cases noires
For Each number As Integer In numberSeq
If Tag = number Then PicZ(Tag).Image = My.Resources.CaseNoire
Next
'dblclick sur cases blanches
For Each number As Integer In numberBSeq
If Tag = number Then PicZ(Tag).Image = My.Resources.CaseBlanche
Next
End If
'ajoute nouvelle pièce à la suite (position du problème dans fichier ech)
Ligne(99) = Ligne(99) + PieceEch
'si pièce non changé garde l'original de la position du fichier ech
ElseIf Tag <> mm Then
Ligne(99) = Ligne(99) + ggg
End If
Next mm
Ligne(IndexFileEch) = Ligne(99)
Next IndexFileEch
End Sub |
Partager