Ktoś chętny do pisania logiki ;)
Kod nie jest zbyt orginalny
CREATE TABLE #szachownica (id INT IDENTITY(1,1) PRIMARY KEY,
A NCHAR(5),B NCHAR(5), C NCHAR(5) ,D NCHAR(5),E NCHAR(5), F NCHAR(5), G NCHAR(5), H NCHAR(5))
DECLARE @i INT=8286
DECLARE @t INT=8286
INSERT #szachownica
VALUES
(NCHAR(9820),NCHAR(@t)+NCHAR(9822)+NCHAR(@t),NCHAR(9821),NCHAR(@t)+NCHAR(9819)+NCHAR(@t),NCHAR(9818),NCHAR(@t)+NCHAR(9821)+NCHAR(@t),NCHAR(9822),NCHAR(@t)+NCHAR(9820)+NCHAR(@t)),
(NCHAR(@t)+NCHAR(9823)+NCHAR(@t),NCHAR(9823),NCHAR(@t)+NCHAR(9823)+NCHAR(@t),NCHAR(9823),NCHAR(@t)+NCHAR(9823)+NCHAR(@t),NCHAR(9823),NCHAR(@t)+NCHAR(9823)+NCHAR(@t),NCHAR(9823)),
('',REPLICATE(NCHAR(@i),5),'',REPLICATE(NCHAR(@i),5),'',REPLICATE(NCHAR(@i),5),'',REPLICATE(NCHAR(@i),5)),
(REPLICATE(NCHAR(@i),5),'',REPLICATE(NCHAR(@i),5),'',REPLICATE(NCHAR(@i),5),'',REPLICATE(NCHAR(@i),5),''),
('',REPLICATE(NCHAR(@i),5),'',REPLICATE(NCHAR(@i),5),'',REPLICATE(NCHAR(@i),5),'',REPLICATE(NCHAR(@i),5)),
(REPLICATE(NCHAR(@i),5),'',REPLICATE(NCHAR(@i),5),'',REPLICATE(NCHAR(@i),5),'',REPLICATE(NCHAR(@i),5),''),
(NCHAR(9817),NCHAR(@t)+NCHAR(9817)+NCHAR(@t),NCHAR(9817),NCHAR(@t)+NCHAR(9817)+NCHAR(@t),NCHAR(9817),NCHAR(@t)+NCHAR(9817)+NCHAR(@t),NCHAR(9817),NCHAR(@t)+NCHAR(9817)+NCHAR(@t)),
(NCHAR(@t)+NCHAR(9814)+NCHAR(@t),NCHAR(9816),NCHAR(@t)+NCHAR(9815)+NCHAR(@t),NCHAR(9813),NCHAR(@t)+NCHAR(9812)+NCHAR(@t),NCHAR(9815),NCHAR(@t)+NCHAR(9816)+NCHAR(@t),NCHAR(9814))
SELECT
Row_Number() OVER (ORDER BY id desc) AS [⁞⁞],
A,B,C,D,E,F,G,H FROM #szachownica
ORDER BY id
Na potrzeby pisania kodu warto zmienić generowanie szachownicy i przetrzymywanie pozycji figur.
Lepiej też zrezygnować z kolorowania samej szachownicy.
CREATE TABLE #szachownica (id INT IDENTITY(1,1) PRIMARY KEY,
A int, B int, C int ,D int,E int, F int, G int, H int)
INSERT #szachownica
VALUES
(9820,9822,9821,9819,9818,9821,9822,9820),
(9823,9823,9823,9823,9823,9823,9823,9823),
(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(9817,9817,9817,9817,9817,9817,9817,9817),
(9814,9816,9815,9813,9812,9815,9816,9814)
SELECT
id AS[*],
ISNULL(NCHAR(A),'') AS A,
ISNULL(NCHAR(B),'') AS B,
ISNULL(NCHAR(C),'') AS C,
ISNULL(NCHAR(D),'') AS D,
ISNULL(NCHAR(E),'') AS E,
ISNULL(NCHAR(F),'') AS F,
ISNULL(NCHAR(G),'') AS G,
ISNULL(NCHAR(H),'') AS H
FROM #szachownica
ORDER BY id DESC
Procedura pozwalająca na poruszanie się po planszy
CREATE PROC #ruch @st CHAR(2),@no CHAR(2)
AS
DECLARE @sl CHAR(1),@sc INT,@nl CHAR(1),@nc INT,@sup VARCHAR(MAX)
SELECT @sl=LEFT(@st,1),@sc=RIGHT(@st,1),@nl=LEFT(@no,1),@nc=RIGHT(@no,1)
SET @sup ='UPDATE #szachownica
SET '+@nl+' = (SELECT CAST('+@sl+' AS CHAR(4)) FROM #szachownica WHERE id ='+CAST(@sc AS CHAR(1))+')
WHERE id ='+CAST(@nc AS CHAR(1))
EXEC(@sup)
SET @sup ='UPDATE #szachownica
SET '+@sl+' = NULL
WHERE id ='+CAST(@sc AS CHAR(1))
EXEC(@sup)
SELECT
id AS[*],
ISNULL(NCHAR(A),'') AS A,
ISNULL(NCHAR(B),'') AS B,
ISNULL(NCHAR(C),'') AS C,
ISNULL(NCHAR(D),'') AS D,
ISNULL(NCHAR(E),'') AS E,
ISNULL(NCHAR(F),'') AS F,
ISNULL(NCHAR(G),'') AS G,
ISNULL(NCHAR(H),'') AS H
FROM #szachownica
ORDER BY id DESC
I najszybsza rozgrywka
EXECUTE #ruch 'F2','F4'
EXECUTE #ruch 'E7','E6'
EXECUTE #ruch 'G2','G4'
EXECUTE #ruch 'D8','H4'