C 64
Anwendung

Schachmeister erweitert

»Schach-Profis« werden bei dem Listing »Schachmeister« wohl schon festgestellt haben, daß noch nicht alle Regeln des königlichen Spiels berücksichtigt waren. Dies ändert sich nun.

Als Schachspieler (ich habe bereits über 100 Meisterschaftspartien gespielt) fand ich die Anwendung des Monats »Schachmeister«aus 11/84 geradezu ideal für die Leute, die ihre Partien statistisch aufführen. Ich selbst habe mich gleich daranbegeben, meine Partien abzuspeichern. Leider stellten sich gleich mehrere Unvollkommenheiten des Programms heraus, die für einen ernstzunehmenden Schachspieler unentbehrlich sind. Als erstes die Sache mit dem Remis! Ein Remis kann durch mehrere Möglichkeiten entstehen:

  1. durch Übereinkunft der Spieler
  2. durch ein Patt (wenn ein Spieler nur noch die Möglichkeit hat, den König zu ziehen, dieser aber dann immer im Schach stehen würde),
  3. wenn eine Stellung dreimal vorkommt,
  4. wenn innerhalb von 50 Zügen kein Bauernzug gemacht wurde.

Ich verweise hier für diese und für die noch kommenden Ergänzungen auf die internationalen Schachregeln. Zur Schreibweise im Programm:

Nun zum Tauschen auf der Grundlinie. Es geht wirklich nicht an, nur den Dametausch zu berücksichtigen. Sicher kommt das am häufigsten vor, aber wer berühmte Partien eingeben will, der kommt mit Sicherheit mal an die Stelle, wo der Bauer zum Beispiel in einen Springer umgewandelt wird. Folgende Erläuterung zum Tausch auf der Grundlinie:

»En-passant«-Regel berücksichtigt

Sehr wichtig ist auch die sogenannte »en-passant«-Regel. Jch habe schon oft die Erfahrung gemacht, daß viele Neu-Schachspieler, manchmal sogar auch welche, die schon zwei bis vier Jahre Schach spielen, diese Regel nicht kennen. Sie waren regelrecht erstaunt, wenn ich diesen Zug angewandt habe und wollten mir nicht glauben, daß jene Regel wirklich existiert. Diese Regel ist keine besondere Definition für Meisterschaftskämpfe, sondern sie ist eine Grundregel wie jeder andere Zug auch. Ich will hier deshalb das »en-passant«-Schlagen noch einmal erklären: Diese besondere Form des Schlagens kann Verwendung finden, wenn ein Bauer aus der Ausgangsstellung in der zweiten Reihe zwei Felder vorwärts neben einen gegnerischen Bauern zieht. Dieser gegnerische Bauer kann nun den anderen Bauern so schlagen, als ob dieser nur ein Feld vorwärts gegangen wäre. Wenn der umgangene Bauer nicht sofort en-passant schlagen will, kann er es später nicht mehr tun.

En-passant bedeutet zu deutsch: Schlagen im Vorbeigehen. In der einzugebenden Partie wird dieser Zug mit einem »V« gekennzeichnet. Beispiel: DATA G4H3V

Das Programm muß, um die erläuterten Erweiterungen zu besitzen, durch die im Listing angegebenen Zeilen ergänzt beziehungsweise ersetzt werden.

(Heiko Becke/rg)
895 dim a$(12)

1865 if aw=4 then gosub 2304:aw=1

1900 if aw=1 then aw=0:poke 214,11:print:print tab(27)"{rvon}          "

2041 if b$="p"then aw=2:poke 214,11:print:print tab(27)"{rvon} patt !":goto 1780
2042 if b$="w"then aw=2:poke 214,9:print:print tab(27)"{rvon}dritte mal"
2043 if b$="w"then print tab(27)"{rvon}gleiche",tab(67)"{rvon}stellung !":goto 1780
2044 if b$="z"then aw=2:poke 214,9:print:print tab(27)"{rvon} 50 zuege"
2045 if b$="z"then print tab(27)"{rvon}   ohne",tab(67)"{rvon}  bauer !":goto 1780
2046 if b$="v"then aw=4:poke 214,11:print:print tab(27)"{rvon}en-passant":goto 1780
2050 if b$="d"or b$="t"or b$="h"or b$="l"then:f$=b$:goto 2340

2301 rem
2302 rem -- en-passant --
2303 rem
2304 if a1=7 then y=y-1
2305 if a1=1 then y=y+1
2306 a(x,y)=0:gosub 2470:return

2320 rem -- tausch auf der grundlinie --

2350 if(y2=8)and(f$="d")then a(x2,8)=11
2351 if(y2=1)and(f$="d")then a(x2,1)=5
2352 if(y2=8)and(f$="t")then a(x2,8)=8
2353 if(y2=1)and(f$="t")then a(x2,1)=2
2354 if(y2=8)and(f$="h")then a(x2,8)=10
2355 if(y2=1)and(f$="h")then a(x2,1)=4
2356 if(y2=8)and(f$="l")then a(x2,8)=9
2357 if(y2=1)and(f$="l")then a(x2,1)=3
2360 rem diese zeile loeschen

2380 poke 214,10:print:print tab(28)chr$(5);
2381 if f$="d"then print"{rvon}dame-"
2382 if f$="t"then print"{rvon}turm-"
2383 if f$="h"then print"{rvon}springer-"
2384 if f$="l"then print"{rvon}laeufer-"
2390 prinnt tab(28)"{rvon}tausch"
2400 gosub 2660:poke 214,10:print:print tab(28)"{rvon}         ":goto 1730
2410 print tab(28)"{rvon}    ":goto 1730

2530 f=a(x,y)
Diese Zeilen müssen dem Listing »Schachmeister« beigefügt werden
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →