Código de Basic - Simulador de ajedrez

Imágen de perfil
Val: 545
Oro
Ha mantenido su posición en Basic (en relación al último mes)
Gráfica de Basic

Simulador de ajedrezgráfica de visualizaciones


Basic

Actualizado el 19 de Noviembre del 2017 por Adelino (24 códigos) (Publicado el 21 de Octubre del 2016)
39.973 visualizaciones desde el 21 de Octubre del 2016
Juego del Ajedrez para dos jugadores.
Se maneja con el teclado, flechas de dirección, Intro, y Escape para anular selección o finalizar después del mate o ahogado.
Se pueden editar posiciones con el teclado numérico (0-9), y cambiar el nivel con +/-.
Pulsando Alt+Intro cambia a pantalla completa.
El fichero .zip contiene versiones .bas .txt y .exe.
La versión .exe es para x64, la versión .bas puede ejecutarse en Qbasic64 y en Qbasic original x86.
En emuladores las teclas de dirección son K, M, H y P.
Niels Hoeg, 1905-mate en 3



Mate3

Requerimientos

Windows x64, Qbasic64 o Qbasic para Msdos.

1.1
estrellaestrellaestrellaestrellaestrella(1)

Publicado el 21 de Octubre del 2016gráfica de visualizaciones de la versión: 1.1
1.172 visualizaciones desde el 21 de Octubre del 2016

1.2

Actualizado el 30 de Octubre del 2016 (Publicado el 26 de Octubre del 2016)gráfica de visualizaciones de la versión: 1.2
1.152 visualizaciones desde el 26 de Octubre del 2016

1.3

Publicado el 30 de Octubre del 2016gráfica de visualizaciones de la versión: 1.3
738 visualizaciones desde el 30 de Octubre del 2016

1.4
estrellaestrellaestrellaestrellaestrella(1)

Actualizado el 25 de Noviembre del 2016 (Publicado el 31 de Octubre del 2016)gráfica de visualizaciones de la versión: 1.4
1.266 visualizaciones desde el 31 de Octubre del 2016
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

Simplificación en modo texto.
Control de jugadas posibles, realizadas o simuladas.
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
SCREEN 0 'Pantalla de texto
WIDTH 40 'Ancho 40
DEFINT A-Z 'Variables enteras
 
DIM C(64, 15, 7) 'Casilla de origen,direccion y distancia
DIM IX(15), IY(15) 'Incremento segun direccion
DIM D(7), E(7, 15), H(64, 15, 7) 'Direcciones, direccion para pieza y distancia
DIM A(2, 64) 'Tipo, bando y pieza en casilla (0vacia,1PB,2PN,3R,4C,5A,6T,7D)
DIM B(2, 2) 'Control de jugada (real o simulada)
DIM N(2, 16) 'Situacion de pieza por bando y pieza en casilla
DIM M(200, 2) 'Jugadas posibles
DIM X(64), Y(64) 'Coordenadas para casillas
DIM R(2), K(64) 'Casilla rey y control torres
DIM T(2), F(64), A$(7, 2) 'Tinta, fondo y caracter pieza
 
FOR E = 0 TO 15 'Direcciones posibles,del 8 al 15 para el caballo
READ IX(E), IY(E) 'Incremento segun direccion
NEXT
FOR A = 0 TO 7 'Tipo de pieza
READ A$(A, 0), A$(A, 1), A$(A, 2) 'Casillas de 3X3 ASCII
READ D(A) 'Numero de direcciones segun tipo de pieza
FOR D = 1 TO D(A)
READ E(A, D) 'Direccion
NEXT D, A
 
FOR T = 1 TO 2 'Bando
R(T) = 56 * T - 51 'Casilla rey de inicio
K(R(T) - 4) = 7 'Control para enroque
K(R(T) + 3) = 3 '(Direccion)
FOR P = 1 TO 16 'Pieza
READ A 'Tipo de pieza
N = 48 * T - 48 + P 'Casilla inicial segun bando
A(0, N) = A 'Tipo de pieza en casilla
A(1, N) = T 'Bando
A(2, N) = P 'Pieza para casilla
N(T, P) = N 'Casilla para pieza
NEXT P, T
T(0) = 7 'Tinta neutra
T(1) = 7 'Tinta blancas
T(2) = 0 'Tinta negras
F = 1 'Fondo casilla inicial
FOR N = 1 TO 64 'Casillas del tablero
Y = INT((N - 1) / 8) 'Fila
X = N - 1 - 8 * Y 'Columna
F(N) = F 'Fondo de casilla
F = 5 + 4 * (F = 5) 'Alterna fondo
Y(N) = 1 + 3 * (7 - Y) 'Fila para casilla
X(N) = 1 + 3 * X 'Columna
GOSUB 1090 'Plasmar en pantalla
IF X = 7 THEN F = F(N) 'Primera columna, repite fondo
FOR E = 0 TO 15 'Total de direcciones
H = 0
IX = IX(E) 'Incremento segun direccion
IY = IY(E)
V = X + 1 'Copia coordenadas
W = Y
100 V = V + IX 'Incremento
W = W + IY
IF V < 1 OR V > 8 OR W < 0 OR W > 7 GOTO 200
'Salta si supera los limites del tablero
H = H + 1
C(N, E, H) = V + 8 * W 'Casilla destino segun direccion y distancia
IF E < 8 GOTO 100
200 FOR A = 1 TO 7 * SGN(H) 'Si hay distancia
FOR D = 1 TO D(A)
IF E= E(A, D) THEN H(N, E, A)= H: IF A < 4 THEN H(N, E, A)= 1 - (A < 3 AND D= 2 AND A(0, N)= A)
'Ajusta distancia segun direccion y pieza (Peon al frente 2 inicial)
NEXT
NEXT A, E, N
T = 1 'Bando en juego
TT = 2 'Bando contrario
 
300 M = 0 'Jugadas posibles
FOR P = 1 TO 16 'Piezas bando en juego
N = N(T, P) 'Casilla de la pieza
A = A(0, N) 'Tipo
FOR D = 1 TO D(A) 'Numero de direcciones
N2 = 0 'Al paso=0
N4 = N 'Control de enroque
E = E(A, D) 'Direccion
H1 = H(N, E, A) 'Distancia
IF A = 3 AND N = R(T) THEN IF D = K(N + 3) OR D = K(N - 4) AND A(0, N - 3) = 0 THEN H1 = 2
'Habilita enroque
FOR H = 1 TO H1
C = C(N, E, H) 'Casilla (1,64)
IF A(1, C) = T GOTO 450 'Ocupada, siguiente direccion
IF A > 2 GOTO 350 'Rutina del peon
IF D = 2 EQV A(0, C) = 0 GOTO 400 'Validar avance o captura
IF A(0, C) OR C <> N3 GOTO 450 'Casilla objetivo<>Casilla de captura al paso
N2 = N1 'Validar al paso
350 IF A = 3 AND H = 2 THEN N4 = 0: IF A(0, C) GOTO 450 'No enroca en jaque o destino ocupado
400 JQ = 0 'Control de jaque
FOR PP = 1 TO 16 'Piezas rivales
NN = N(TT, PP) 'Casilla de la pieza
AA = A(0, NN) 'Tipo
IF NN = C OR NN = N2 THEN AA = 0 'Si va a ser capturada no cuenta
FOR DD = 1 TO D(AA) 'Direcciones
EE = E(AA, DD) 'Direccion
HH1 = H(NN, EE, AA) 'Distancia
IF AA < 3 AND DD = 2 THEN HH1 = 0 'Peon al frente
FOR HH = 1 TO HH1
CC = C(NN, EE, HH) 'Casilla objetivo
IF CC = N4 OR CC = N2 OR A(0, CC) = 0 AND CC <> C GOTO 410 'Se considera vacia
HH = HH1 'Casilla ocupada
IF CC = C AND A(0, N) = 3 THEN JQ = 1: DD = 8: PP = 16: IF A = 3 THEN H = H1
IF A(0, CC) = 3 AND A(1, CC) = T THEN JQ = 1: DD = 8: PP = 16 'Jaque
410 NEXT HH, DD, PP
IF JQ GOTO 450 'Hay jaque
M = M + 1 'Validar jugada
M(M, 0) = N 'Origen
M(M, 1) = C 'Destino
M(M, 2) = N2 'Casilla del peon capturado al paso
450 IF A(0, C) THEN H = H1 'Siguiente por captura
NEXT H, D, P
 
COLOR 7, 0
LOCATE 1, 28
PRINT "Total="; M; 'Total de jugadas
 
L = R(T) 'Casilla del rey en origen
550 N = L
A = A(0, N)
F = F(N)
IF A(1, N) = TT THEN F = T(A(1, N))
COLOR F, T(T) 'Invierte tinta y fondo simulando cursor
GOSUB 1100 'Plasmar pieza
GOSUB 1000 'Lectura de teclado
IF A$ = CHR$(13) GOTO 600 'INTRO elige Origen
A$ = RIGHT$(A$, 1) 'Caracter derecho (Teclas de direccion =2 caracteres)
IF A$ = "M" AND L < 64 THEN L = L + 1
IF A$ = "K" AND L > 1 THEN L = L - 1
IF A$ = "H" AND L < 57 THEN L = L + 8
IF A$ = "P" AND L > 8 THEN L = L - 8
GOSUB 1090 'Plasmar casilla normal
GOTO 550 'Vuelve a cursor
 
600 S = 0 'Numero de movimiento
N = 0 'Control posible/no posible
Q = 0 'Control promocion
620 IF Q > 4 THEN Q = Q - 1: A = Q: GOTO 650 'De dama a caballo
630 S = S + 1 'Movimiento siguiente
IF S < M + 1 GOTO 640 'Salta si esta en rango
IF N = 0 THEN GOTO 550 'La pieza elegida no se puede mover
GOTO 600 'Misma pieza
640 N0 = M(S, 0) 'Origen
IF N0 <> L GOTO 630 'No coincide con la elegida
N = M(S, 1) 'Destino
A = A(0, N0) 'Tipo
IF A < 3 AND (N < 9 OR N > 56) THEN Q = 7: A = 7 'Peon en zona de promocion
650 COLOR T(T), 3 'Color de destino
GOSUB 1100 'Pieza elegida en destino
GOSUB 1000 'Cualquier tecla
GOSUB 1090 'Normaliza destino
IF A$ <> CHR$(13) GOTO 620 'No se confirma jugada
 
IF Q THEN A(0, N0) = Q 'Hay promocion
680 N1 = N 'Casilla destino
FOR V = 0 TO 2
N = M(S, V) 'Casilla origen, destino y al paso
FOR W = 0 TO 2
B(V, W) = A(W, N) 'Guarda tipo, bando y pieza
A(W, N) = 0
IF V = 1 THEN A(W, N) = B(0, W)
NEXT
IF N THEN GOSUB 1090 'Plasmar o limpiar
NEXT
N(T, B(0, 2)) = N1 'Pieza movida
N(TT, B(1, 2)) = 0 'Capturadas
N(TT, B(2, 2)) = 0
K(N0) = 0 'Por si es torre
K(N1) = 0
 
IF A <> 3 GOTO 700 'Comprobar enroque
IF R(T) = N0 THEN K(N0 + 3) = 0: K(N0 - 4) = 0 'Desactiva control enroque
N = (N0 + N1) / 2 'Destino torre
M(S, 1) = N
IF N0 - N1 = 2 THEN M(S, 0) = N0 - 4: GOTO 680 'Origen torre
IF N1 - N0 = 2 THEN M(S, 0) = N0 + 3: GOTO 680
 
700 N3 = 0
IF A < 3 AND ABS(N0 - N1) = 16 THEN N3 = (N0 + N1) / 2 'Peon +2 activa al paso
SWAP T, TT 'Cambio de turno
GOTO 300
 
1000 IF INKEY$ <> "" GOTO 1000 'Lectura de teclado
1010 A$ = INKEY$
IF A$ = "" GOTO 1010
IF A$ = CHR$(27) THEN IF M THEN GOSUB 1090: GOTO 550 ELSE RUN
'Si no hay movimiento legal ESC reinicia, si lo hay vuelve a cursor
RETURN
 
1090 A = A(0, N) 'Tipo de pieza
COLOR T(A(1, N)), F(N) 'Tinta del bando y fondo de casilla
1100 FOR W = 0 TO 2
LOCATE Y(N) + W, X(N) 'Coordenadas
PRINT A$(A, W); 'Caracter 3X3
NEXT
RETURN
'Incremento segun direccion
DATA 0,1,1,1,1,0,1,-1,0,-1,-1,-1,-1,0,-1,1
DATA 1,2,2,1,2,-1,1,-2,-1,-2,-2,-1,-2,1,-1,2
'Piezas,numero de direcciones y direcciones
DATA "   ","   ","   ",0
DATA " þ "
DATA " Û "
DATA " ß ",3,1,0,7
DATA " þ "
DATA " Û "
DATA " ß ",3,3,4,5
DATA " Å "
DATA "ÞÛÝ"
DATA "ÞÜÝ",8,0,1,2,3,4,5,6,7
DATA " Üþ"
DATA "þÛ "
DATA "Þ Ý",8,8,9,10,11,12,13,14,15
DATA " þ "
DATA " Û "
DATA "ÞßÝ",4,1,3,5,7
DATA "þþþ"
DATA "ÞÛÝ"
DATA " ß ",4,0,2,4,6
DATA "þÜþ"
DATA "ÞßÝ"
DATA "ÞÛÝ",8,0,1,2,3,4,5,6,7
'Tipo de piezas
DATA 6,4,5,7,3,5,4,6,1,1,1,1,1,1,1,1
DATA 2,2,2,2,2,2,2,2,6,4,5,7,3,5,4,6



Comentarios sobre la versión: 1.4 (1)

Imágen de perfil
1 de Noviembre del 2016
estrellaestrellaestrellaestrellaestrella
esto me recuerda al ZX80 jajaj, bien
Responder

Comentar la versión: 1.4

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

1.5

Actualizado el 28 de Noviembre del 2016 (Publicado el 8 de Noviembre del 2016)gráfica de visualizaciones de la versión: 1.5
791 visualizaciones desde el 8 de Noviembre del 2016

1.6

Actualizado el 14 de Diciembre del 2016 (Publicado el 25 de Noviembre del 2016)gráfica de visualizaciones de la versión: 1.6
905 visualizaciones desde el 25 de Noviembre del 2016

1.7

Actualizado el 15 de Abril del 2019 (Publicado el 3 de Diciembre del 2016)gráfica de visualizaciones de la versión: 1.7
804 visualizaciones desde el 3 de Diciembre del 2016

1.8

Actualizado el 15 de Abril del 2019 (Publicado el 20 de Diciembre del 2016)gráfica de visualizaciones de la versión: 1.8
855 visualizaciones desde el 20 de Diciembre del 2016

1.9

Actualizado el 15 de Abril del 2019 (Publicado el 30 de Diciembre del 2016)gráfica de visualizaciones de la versión: 1.9
861 visualizaciones desde el 30 de Diciembre del 2016

2.0

Actualizado el 15 de Abril del 2019 (Publicado el 5 de Enero del 2017)gráfica de visualizaciones de la versión: 2.0
805 visualizaciones desde el 5 de Enero del 2017

2.1

Actualizado el 15 de Abril del 2019 (Publicado el 16 de Enero del 2017)gráfica de visualizaciones de la versión: 2.1
727 visualizaciones desde el 16 de Enero del 2017

2.2

Actualizado el 15 de Abril del 2019 (Publicado el 19 de Enero del 2017)gráfica de visualizaciones de la versión: 2.2
827 visualizaciones desde el 19 de Enero del 2017

2.3

Actualizado el 15 de Abril del 2019 (Publicado el 31 de Enero del 2017)gráfica de visualizaciones de la versión: 2.3
791 visualizaciones desde el 31 de Enero del 2017

2.4

Actualizado el 15 de Abril del 2019 (Publicado el 7 de Febrero del 2017)gráfica de visualizaciones de la versión: 2.4
770 visualizaciones desde el 7 de Febrero del 2017

2.5

Actualizado el 15 de Abril del 2019 (Publicado el 13 de Febrero del 2017)gráfica de visualizaciones de la versión: 2.5
998 visualizaciones desde el 13 de Febrero del 2017

2.6

Actualizado el 15 de Abril del 2019 (Publicado el 2 de Marzo del 2017)gráfica de visualizaciones de la versión: 2.6
657 visualizaciones desde el 2 de Marzo del 2017

2.7

Actualizado el 15 de Abril del 2019 (Publicado el 12 de Marzo del 2017)gráfica de visualizaciones de la versión: 2.7
950 visualizaciones desde el 12 de Marzo del 2017

2.8

Actualizado el 15 de Abril del 2019 (Publicado el 7 de Abril del 2017)gráfica de visualizaciones de la versión: 2.8
939 visualizaciones desde el 7 de Abril del 2017

2.9

Actualizado el 15 de Abril del 2019 (Publicado el 8 de Mayo del 2017)gráfica de visualizaciones de la versión: 2.9
795 visualizaciones desde el 8 de Mayo del 2017

3.0

Actualizado el 15 de Abril del 2019 (Publicado el 13 de Junio del 2017)gráfica de visualizaciones de la versión: 3.0
832 visualizaciones desde el 13 de Junio del 2017

3.1
estrellaestrellaestrellaestrellaestrella(2)

Actualizado el 15 de Abril del 2019 (Publicado el 18 de Junio del 2017)gráfica de visualizaciones de la versión: 3.1
712 visualizaciones desde el 18 de Junio del 2017

3.2

Actualizado el 15 de Abril del 2019 (Publicado el 22 de Junio del 2017)gráfica de visualizaciones de la versión: 3.2
927 visualizaciones desde el 22 de Junio del 2017

3.3

Actualizado el 15 de Abril del 2019 (Publicado el 3 de Julio del 2017)gráfica de visualizaciones de la versión: 3.3
657 visualizaciones desde el 3 de Julio del 2017

3.4

Actualizado el 15 de Abril del 2019 (Publicado el 7 de Julio del 2017)gráfica de visualizaciones de la versión: 3.4
604 visualizaciones desde el 7 de Julio del 2017

3.5
estrellaestrellaestrellaestrellaestrella(2)

Actualizado el 15 de Abril del 2019 (Publicado el 8 de Julio del 2017)gráfica de visualizaciones de la versión: 3.5
892 visualizaciones desde el 8 de Julio del 2017

3.6

Actualizado el 15 de Abril del 2019 (Publicado el 12 de Julio del 2017)gráfica de visualizaciones de la versión: 3.6
708 visualizaciones desde el 12 de Julio del 2017

3.7

Actualizado el 15 de Abril del 2019 (Publicado el 17 de Julio del 2017)gráfica de visualizaciones de la versión: 3.7
611 visualizaciones desde el 17 de Julio del 2017

3.8

Actualizado el 15 de Abril del 2019 (Publicado el 19 de Julio del 2017)gráfica de visualizaciones de la versión: 3.8
719 visualizaciones desde el 19 de Julio del 2017

3.9

Actualizado el 15 de Abril del 2019 (Publicado el 22 de Julio del 2017)gráfica de visualizaciones de la versión: 3.9
709 visualizaciones desde el 22 de Julio del 2017

4.0

Actualizado el 15 de Abril del 2019 (Publicado el 26 de Julio del 2017)gráfica de visualizaciones de la versión: 4.0
654 visualizaciones desde el 26 de Julio del 2017

4.1

Actualizado el 15 de Abril del 2019 (Publicado el 28 de Julio del 2017)gráfica de visualizaciones de la versión: 4.1
685 visualizaciones desde el 28 de Julio del 2017

4.2

Actualizado el 15 de Abril del 2019 (Publicado el 30 de Julio del 2017)gráfica de visualizaciones de la versión: 4.2
783 visualizaciones desde el 30 de Julio del 2017

4.3

Actualizado el 15 de Abril del 2019 (Publicado el 11 de Agosto del 2017)gráfica de visualizaciones de la versión: 4.3
822 visualizaciones desde el 11 de Agosto del 2017

4.4

Actualizado el 15 de Abril del 2019 (Publicado el 2 de Septiembre del 2017)gráfica de visualizaciones de la versión: 4.4
1.095 visualizaciones desde el 2 de Septiembre del 2017

4.5

Actualizado el 12 de Diciembre del 2017 (Publicado el 18 de Noviembre del 2017)gráfica de visualizaciones de la versión: 4.5
11.761 visualizaciones desde el 18 de Noviembre del 2017
http://lwp-l.com/s3726