Hola, te digo cómo empezaría yo, aunque si otras personas pueden aportar ideas serían bienvenidas.
Como el juego es muy complicado, antes de intentar crear el juego trataría de hacer un programa simple que me sirviera como base para ir construyendo el juego. Supongamos que el programa simple consiste en poner 4 fichas encima de la pantalla: el doble seis, el seis-cinco, el cinco-cuatro y el cuatro-seis.
Definiría dos zonas: la zona de fichas y la zona de juego.
Inicialmente, se podría arrastrar una ficha desde la zona de fichas hacia la zona de juego. Para simplificar, inicialmente todas las fichas dobles sólo permitiría que fueran en vertical y todas las demás fichas en horizontal.
Ahora tendríamos que hacer supuestos de jugadas. Para detectar los movimientos necesitaríamos detectar el evento de movimiento de una ficha y comprobar que la ficha se coloca en la posición de juego.
Prueba de jugada 1:
Supongamos que arrastramos a la zona de juego el doble seis. A continuación arrastramos el cinco-cuatro. Nos tendría que salir un mensaje: "No está permitido colocar esta ficha".
Prueba de jugada 2:
Supongamos que arrastramos a la zona de juego el doble seis. A continuación arrastramos el cuatro seis. El programa debería colocar la ficha con el seis pegando al doble seis y el cuatro en sentido opuesto, de modo que el seis quede alineado como debe...
¿Cómo comprobar si una ficha puede colocarse?
Podría hacerse de muchas maneras, supongo que lo mejor sería crear una clase ficha donde tengas atributos y puedas establecer posiciones de rotación, pero esto requiere un buen dominio de orientación a objetos y otras cosas. Si no quieres meterte con esto podrías hacerlo intentando mantener en la propiedad Tag del picturebox qué números tiene la ficha y en qué posición está. Por ejemplo, si se coloca un doble seis tendríamos PictureBox1.Tag = "doble6"
Esta ficha sólo sería compatible con fichas como "seis_left_cuatro_right". En estas fichas tienes que diferenciar qué número queda a la izquierda y cuál a la derecha. En caso de intentar colocar sobre un doble seis una ficha "cuatro_left_seis_right" tendrías que rotar la imagen 180 grados y cambiar su atributo a "seis_left_cuatro_rigth" para que quedara la imagen como debe y la información de la ficha como debe.
Una vez conseguido todo esto ya pasaría a ver más cuestiones.
Saludos