ml@brumuc.muc.sub.org (Marc Laukien) (05/20/91)
Submitted-by: ml@brumuc.muc.sub.org Archive-name: UnixChess/part10 ---- Cut Here and feed the following to sh ---- #!/bin/sh # this is chess.10 (part 10 of UnixChess) # do not concatenate these parts, unpack them in order with /bin/sh # file op/op.ufimzew continued # if test ! -r _shar_seq_.tmp; then echo 'Please unpack part 1 first!' exit 1 fi (read Scheck if test "$Scheck" != 10; then echo Please unpack part "$Scheck" next! exit 1 else exit 0 fi ) < _shar_seq_.tmp || exit 1 if test ! -f _shar_wnt_.tmp; then echo 'x - still skipping op/op.ufimzew' else echo 'x - continuing file op/op.ufimzew' sed 's/^X//' << 'SHAR_EOF' >> 'op/op.ufimzew' && # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # SHAR_EOF echo 'File op/op.ufimzew is complete' && chmod 0644 op/op.ufimzew || echo 'restore of op/op.ufimzew failed' Wc_c="`wc -c < 'op/op.ufimzew'`" test 913 -eq "$Wc_c" || echo 'op/op.ufimzew: original size 913, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= op/op.ungarische ============== if test -f 'op/op.ungarische' -a X"$1" != X"-c"; then echo 'x - skipping op/op.ungarische (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting op/op.ungarische (Text)' sed 's/^X//' << 'SHAR_EOF' > 'op/op.ungarische' && # --------------------------------------------------------------------- # # Name: Chess V2.7 # Schachprogramm # # Programmteil: Opening-Library # Ungarische Verteidigung # # Autor: Christoph Thommes # # --------------------------------------------------------------------- # # (Tarrasch-amateur,1898) # 9. .... f6d7 (?) We2e4e7e5g1f3b8c6f1c4f8e7d2d4e5d4f3d4d7d6e1g1g8f6b1c3e8g8h2h3f8e8f1e1f6d7c4f7g8f7d4e6f7e6d1d5e6f6d5f5 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # SHAR_EOF chmod 0644 op/op.ungarische || echo 'restore of op/op.ungarische failed' Wc_c="`wc -c < 'op/op.ungarische'`" test 626 -eq "$Wc_c" || echo 'op/op.ungarische: original size 626, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= op/op.unregel ============== if test -f 'op/op.unregel' -a X"$1" != X"-c"; then echo 'x - skipping op/op.unregel (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting op/op.unregel (Text)' sed 's/^X//' << 'SHAR_EOF' > 'op/op.unregel' && # --------------------------------------------------------------------- # # Name: Chess V2.7 # Schachprogramm # # Programmteil: Opening-Library # Unregelmaessig # # Autor: Christoph Thommes # # --------------------------------------------------------------------- # # (Russakow-Werlinski,1947) # 7. e4e5 (?!) Be2e4e7e5c2c3b8c6d2d4g8f6c1g5h7h6g5h4g7g5h4g3e5d4e4e5d4c3e5f6c3b2d1e2d8e7f6e7f8g7 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # SHAR_EOF chmod 0644 op/op.unregel || echo 'restore of op/op.unregel failed' Wc_c="`wc -c < 'op/op.unregel'`" test 594 -eq "$Wc_c" || echo 'op/op.unregel: original size 594, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= op/op.vierspring ============== if test -f 'op/op.vierspring' -a X"$1" != X"-c"; then echo 'x - skipping op/op.vierspring (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting op/op.vierspring (Text)' sed 's/^X//' << 'SHAR_EOF' > 'op/op.vierspring' && # --------------------------------------------------------------------- # # Name: Chess V2.7 # Schachprogramm # # Programmteil: Opening-Library # Vierspringerspiel # # Autor: Christoph Thommes # # --------------------------------------------------------------------- # # (unknown) WB e2e4e7e5g1f3g8f6b1c3b8c6f1b5f8b4e1g1e8g8d2d3d7d6c1g5b4c3b2c3d8e7 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Opecensky-Hrdina,1924) # 11. .... d8b6 (?!) We2e4e7e5g1f3b8c6b1c3g8f6f1b5f8b4e1g1e8g8d2d3d7d6c1g5c6e7f3h4c7c6b5c4e7g6h4g6h7g6f2f4d8b6g1h1f6g4d1e1g4e3f4f5e3c4f5f6c8g4e1h4g4h5g2g4c4e3g4h5e3f1h5h6 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (unknown) # 13. g5f6 (?!) Be2e4e7e5g1f3b8c6b1c3g8f6f1b5f8b4e1g1e8g8d2d3d7d6c1g5c8g4c3d5c6d4d5b4d4b5b4d5b5d4d1d2d4f3g2f3g4f3g5f6g7f6d2h6g8h8 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Herrmann-Rellstab,1932) # 9. e1f2 (?!) Be2e4e7e5g1f3b8c6b1c3g8f6f1b5c6d4f3e5d8e7f2f4d4b5c3b5d7d6e5f3e7e4e1f2f6g4f2g3e4g6f3h4g6h5b5c7e8d8h2h3g4f6c7a8h5h4g3h4f6e4d1g4f8e7g4g5e7g5f4g5h7h6g5g6f7g6h1f1g6g5h4h5e4g3 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (unknown) # 9. f4d5 (?) Be2e4e7e5g1f3b8c6b1c3g8f6f1b5c6d4b5a4f8c5f3e5e8g8e5d3c5b6d3f4d7d5f4d5f6d5c3d5d8h4e1g1c8g4d1e1d4f3g2f3g4f3 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (unknown) # 7. f3e5 (?) Be2e4e7e5g1f3b8c6b1c3g8f6f1b5c6d4b5a4f8c5e1g1e8g8f3e5d7d6e5c4c8g4d1e1d4f3g2f3g4f3d2d4d8c8c4e3c8h3d4c5f6g4 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Belitzmann-Rubinstein,1917) # 10. c3d5 (?) Be2e4e7e5g1f3b8c6b1c3g8f6f1b5c6d4b5c4f8c5f3e5d8e7e5d3d7d5c3d5e7e4d5e3c5d6e1g1b7b5c4b3c8b7d3e1e4h4g2g3h4h3c2c3h7h5c3d4h5h4d1e2h3h2g1h2h4g3h2g1h8h1 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # SHAR_EOF chmod 0644 op/op.vierspring || echo 'restore of op/op.vierspring failed' Wc_c="`wc -c < 'op/op.vierspring'`" test 2030 -eq "$Wc_c" || echo 'op/op.vierspring: original size 2030, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= op/op.wiener ============== if test -f 'op/op.wiener' -a X"$1" != X"-c"; then echo 'x - skipping op/op.wiener (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting op/op.wiener (Text)' sed 's/^X//' << 'SHAR_EOF' > 'op/op.wiener' && # --------------------------------------------------------------------- # # Name: Chess V2.7 # Schachprogramm # # Programmteil: Opening-Library # Wiener Partie # # Autor: Christoph Thommes # # --------------------------------------------------------------------- # # Spielmann-Flamberg,1914) # 7. .... g4f3 (?!) We2e4e7e5b1c3g8f6f2f4d7d5f4e5f6e4g1f3c8g4d1e2e4c5d2d4g4f3e2f3d8h4g2g3h4d4c1e3d4e5e1c1c7c6c3d5c6d5d1d5e5e6f1c4e6e4e3c5 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (unknown) # 7. h5e5 (?) Be2e4e7e5b1c3g8f6f1c4f6e4c4f7e8f7c3e4d7d5d1h5g7g6h5e5f8h6 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Imbisch-Goering,1899) # 5. .... b8c6 (?) 6. .... f7g8 (?) We2e4e7e5b1c3g8f6f1c4f6e4c4f7e8f7c3e4b8c6d1f3f7g8e4g5 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Taubenhaus-Halpern,1887) # 10. .... c7c6 (?) We2e4e7e5b1c3b8c6f2f4e5f4d2d4d8h4e1e2d7d5e4d5c8g4g1f3g4f3g2f3h4e7e2d3c6b4d3c4c7c6f1h3c6d5c4b3b4c6h1e1c6d4d1d4e7e1d4a4b7b5a4b5e8e7b5d7e7f6c3d5f6e5c1f4e5d4d5c3d4c5c3a4 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Mieses-Tschigorin,1906) # 4. .... d8f6 (?!) We2e4e7e5b1c3b8c6f1c4f8c5d1g4d8f6c3d5f6f2e1d1e8f8g1h3f2d4d2d3d7d6g4h4c8h3h4h3c6a5h1f1a5c4h3d7f7f6d5f6d4f2f1f2c5f2f6h5 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # * () We2e4e7e5b1c3b8c6f1c4f8c5d1g4d8f6c3d5f6f2e1d1e8f8g1h3f2d4d2d3d7d6g4f3c8h3h1f1 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # SHAR_EOF chmod 0644 op/op.wiener || echo 'restore of op/op.wiener failed' Wc_c="`wc -c < 'op/op.wiener'`" test 1690 -eq "$Wc_c" || echo 'op/op.wiener: original size 1690, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= op/op.zweispring ============== if test -f 'op/op.zweispring' -a X"$1" != X"-c"; then echo 'x - skipping op/op.zweispring (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting op/op.zweispring (Text)' sed 's/^X//' << 'SHAR_EOF' > 'op/op.zweispring' && # --------------------------------------------------------------------- # # Name: Chess V2.7 # Schachprogramm # # Programmteil: Opening-Library # Zweispringerspiel # # Autor: Christoph Thommes # # --------------------------------------------------------------------- # # (unknown) WB e2e4e7e5g1f3b8c6f1c4g8f6f3g5d7d5e4d5c6a5c4b5c7c6d5c6b7c6b5e2h7h6g5f3e5e4 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Morphy-amateur,1858) # 5. .... f6d5 (?) We2e4e7e5g1f3b8c6f1c4g8f6f3g5d7d5e4d5f6d5d2d4e5d4e1g1f8e7g5f7e8f7d1f3f7e6b1c3d4c3f1e1c6e5c1f4e7f6f4e5f6e5e1e5e6e5a1e1e5d4c4d5h8e8f3d3d4c5b2b4c5b4d3d4 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Bibikow-Neistadt,1946) # 13. d2d4 (?) Be2e4e7e5g1f3b8c6f1c4g8f6f3g5d7d5e4d5c6a5c4b5c7c6d5c6b7c6b5e2h7h6g5f3e5e4f3e5f8d6f2f4e4f3e5f3d8c7d2d4f6g4b1c3d6h2f3h2c7g3e1d2a5c4e2c4g3e3 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Field-Tenner,1934) # 10. e1g1 (?) Be2e4e7e5g1f3b8c6f1c4g8f6f3g5d7d5e4d5c6a5d2d3h7h6g5f3e5e4d1e2a5c4d3c4f8c5e1g1e8g8f3d2c8g4e2e1d8d7d2b3g4f3c1f4d7g4f4g3f6h5b3c5h5f4c5e4g4h3 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Semenenko-Perfiljew,1947) # 6. c2c3 (?!) Be2e4e7e5g1f3b8c6f1c4g8f6f3g5d7d5e4d5c6d4c2c3b7b5c4f1f6d5g5f7e8f7c3d4e5d4d1f3d5f6f3a8f8c5f1b5h8e8e1f1c8a6a8c6d8e7g2g3a6b5c6b5e7e4b5c4f7g6f1g1e4f3c4f1d4d3 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Fischer-amateur,1964) # 13. d2d3 (?!) Be2e4e7e5g1f3b8c6f1c4g8f6f3g5d7d5e4d5c6d4c2c3b7b5c4f1f6d5c3d4d8g5f1b5e8d8d1f3e5e4f3e4f8d6e1g1c8b7d2d3d6h2g1h2d5f4 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Tylewitsch-Winkel,1960) # 14. c1d2 (?) Be2e4e7e5g1f3b8c6f1c4g8f6d2d4e5d4e1g1f6e4f1e1d7d5c4d5d8d5b1c3d5a5c3e4c8e6e4g5e8c8g5e6f7e6e1e6f8d6d1e2a5h5c1d2d4d3e2e4c6d4e6d6d4f3e4f3h5f3d6d8h8d8g2f3d3c2 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Arend-Dyckhoff,1934) # 9. e1e4 (?) Be2e4e7e5g1f3b8c6f1c4g8f6d2d4e5d4e1g1f6e4f1e1d7d5b1c3d4c3c4d5c8e6e1e4c6e7 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Sokolow-Rushnikow,1966) # 6. .... d8e7 (?!) We2e4e7e5g1f3b8c6f1c4g8f6d2d4e5d4e1g1f6e4b1c3d4c3c4f7e8f7d1d5f7e8f1e1f8e7e1e4d7d6c1g5c3b2a1e1h8f8g5e7c6e7d5h5e8d7f3d4c7c5h5g4d7c7e4e7d8e7e1e7c7d8g4g5h7h6e7b7h6g5d4c6d8e8b7e7 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (unknown) # 7. h2h3 (?) Be2e4e7e5g1f3b8c6f1c4g8f6d2d4e5d4e1g1f8c5e4e5f6g4h2h3g4e5f3e5c6e5f1e1d7d6f2f4d4d3g1h2d8h4f4e5d3c2e5d6c8e6e1e6f7e6d6d7e8e7d1c2c5d6h2g1h4e1c4f1h8f8 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Mueller-Bauer,1908) # 12. .... c6d4 (?) We2e4e7e5g1f3b8c6f1c4g8f6d2d4e5d4e1g1f8c5e4e5d7d5e5f6d5c4f1e1e8f8c1g5g7f6g5h6f8g8b1c3c5f8f3d4c6d4d1d4c8f5d4f4f5c2a1d1f8d6c3d5d6f4e1e8d8e8d5f6 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Kazic-Vukovic,1940) # 13. .... c6e5 (?) We2e4e7e5g1f3b8c6f1c4g8f6d2d4e5d4e1g1f8c5e4e5d7d5e5f6d5c4f1e1e8f8c1g5g7f6g5h6f8g8b1c3c8g4c3e4b7b6c2c3c6e5f3e5g4d1e5d7c5e7e4f6e7f6e1e8d8e8d7f6 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Saemisch-Reimann,1927) # 11. .... c5f8 (?!) We2e4e7e5g1f3b8c6f1c4g8f6d2d4e5d4e1g1f8c5e4e5d7d5e5f6d5c4f1e1c8e6f3g5d8d5b1c3d5f5c3e4c5f8g5f7e8f7e4g5f7g8g2g4f5f6e1e6f6d8d1f3d8d7e6e7 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Shahajew-Romanischin,1947) # 11. .... c5f8 (?!) We2e4e7e5g1f3b8c6f1c4g8f6d2d4e5d4e1g1f8c5e4e5d7d5e5f6d5c4f1e1c8e6f3g5d8d5b1c3d5f5c3e4c5f8g5f7e8f7e4g5f7g8g2g4f5d5g5e6c6e5f6f7g8f7e6g5f7g8e1e5d5e5d1f3 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Tschigorin-Albin,1897) # 12. .... f5d5 (?) We2e4e7e5g1f3b8c6f1c4g8f6d2d4e5d4e1g1f8c5e4e5d7d5e5f6d5c4f1e1c8e6f3g5d8d5b1c3d5f5c3e4e8c8g2g4f5d5f6g7h8g8e4f6d5d6g5e4d6e5f2f4d4d3g1g2e5d4c2c3 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (unknown) # 7. .... f7g6 (?) We2e4e7e5g1f3b8c6f1c4g8f6b1c3f6e4c4f7e8f7c3e4d7d5f3g5f7g6d1f3d5e4f3f7g6g5d2d4g5h4h2h3g7g6g2g3h4h5g3g4h5h4f7b3f8b4e1f1c8g4h3g4h4g4b3h3 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (unknown) # 10. d2d3 (?) Be2e4e7e5g1f3b8c6f1c4g8f6b1c3f6e4c4f7e8f7c3e4d7d5f3g5f7g6d1f3d5e4f3f7g6g5d2d3g5h4g2g3h4h3f7h5h3g2c1g5f8b4c2c3d8d3 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # SHAR_EOF chmod 0644 op/op.zweispring || echo 'restore of op/op.zweispring failed' Wc_c="`wc -c < 'op/op.zweispring'`" test 4656 -eq "$Wc_c" || echo 'op/op.zweispring: original size 4656, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= def.english ============== if test -f 'def.english' -a X"$1" != X"-c"; then echo 'x - skipping def.english (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting def.english (Text)' sed 's/^X//' << 'SHAR_EOF' > 'def.english' && # ---------------------------------------------------------------------------- # Definitionen fuer Chess - Englisch # (c) 1990 by M. Laukien # ---------------------------------------------------------------------------- X # Menuedefinitionen: Der erste Buchstabe ist der Buchstabe, ueber den # die Funktion angewaehlt werden kann. Nicht benutzt werden duerfen # bei menu[] die Buchstaben a,b,c,d,e,f,g,h , da diese fuer die Zugeingabe # benoetigt werden. Zwischen Gross- und Kleinschrift wird nicht unter- # schieden. Die Reihenfolge der Menuepunkte darf nicht veraendert werden. X # amenue = Administrationsmenue # menue = Spielmenue # smenu = Setupmenue X amenu[0] "t[T] user vs. computer (training mode)" amenu[1] "s[S] display games" amenu[2] "d[D] delete games" X amenu[3] "1[1] white vs. computer (tournament mode)" amenu[4] "2[2] black vs. computer (tournament mode)" amenu[5] "3[3] white vs. other users (tournament mode)" amenu[6] "4[4] black vs. other users (tournament mode)" amenu[7] "5[5] show tournaments" amenu[8] "6[6] display highscore table" X amenu[9] "q[Q] quit" X smenu[0] "l[L] load game" # Laden smenu[1] "s[S] save game" # Speichern smenu[2] "-[-] clear" # Loeschen smenu[3] "=[=] next move: " # Seitenwechsel smenu[4] "q[Q] quit" # Ende X menu[0] "1[1] level : " # Spielstufe menu[1] "2[2] white : " # Weiss einstellen menu[2] "3[3] black : " # Schwarz einstellen menu[3] "m[M] monitor : " # Monitor menu[4] "![!] setup game" # Aufbauen menu[5] "t[T] take back move" # Zurueck menu[6] "i[I] info" # Informationen menu[7] "r[R] restart" # Neues Spiel menu[8] "q[Q] quit" # Ende menu[9] " [ESC] break" # UnterbrechenXp X # infostrings: Die Reihenfolge der infopunkte darf nicht veraendert werden. X info[0] "whos move ? : " # Farbe, die am Zug ist info[1] "number of moves : " # Anzahl der Zuege info[2] "value : " # Bewertung des Spiels info[3] "number of variants : " # Varianten im letzten Zug info[4] "var. / sec. : " # Varianten pro Sekunde info[5] "average : " # dito durchschnittlich info[6] "level : " # Spielstufe info[7] "min. calc. depth : " # Minimale Rechentiefe info[8] "max. calc. depth : " # Maximale Rechentiefe info[9] "last move : " # letzter Zug X # Statusinformationen: X thinking "thinking ..." # Computer denkt is_thinking "is thinking ..." # Gegner denkt patt "the game is a draw !" # Spiel ist Patt w_mate "check mate white !" # Weiss ist matt b_mate "check mate black !" # Schwarz ist matt w_chess "white is in check !" # Weiss ist im Schach b_chess "black is in check !" # Schwarz ist im Schach remis_3 "3 reps. -> remis !" # Remis bei 3-facher Wdh. w_up "white gives up !" # Aufgabe Weiss b_up "black gives up !" # Aufgabe Schwarz X # Startkommando: Wird vor Programmstart ausgefuehert. Falls nicht benoetigt, # auf "" setzen. X startcmd "" X # Sicherheitsabfrage: Die ersten beiden Buchstaben sollen Abkuerzungen # fuer "ja" und "nein" sein. X sure "ynAre you sure ? (y/n)" give_up "ynYou've had it man! Wanna quit ? (y/n)" X # Spielstufen fuer Uebungsspiel und Turnierspiel X tr_lv "3" # Trainingslevel to_lv "5" # Turnierlevel X # Diverese Strings: X tlist " white: black: moves: whos move ? " X # ^ ^ ^ ^ X # Ueberschrift fuer Spielliste Turnier X ulist " player: name: moves: whos move ? " X # ^ ^ ^ ^ X # Ueberschrift fuer Spielliste Training X scorelist" player: games: vs. comp.: score: " X # ^ ^ ^ ^ X # Ueberschrift fuer Spielliste Training X figtab "pnbrqkPNBRQK " # Figurentabelle press_key "<press any key>" # Taste duecken comp "computer" # Name des Computers white "white" # Weiss black "black" # Schwarz domove "move: " # Zug ausfuehren doset "set: " # Figur setzen enter "enter filename: " # Name eingeben opponent "enter opponent: " # Gegner eingeben figlist "lost pieces:" # Liste der geschlagenen Figuren error "error: " # Fehlermeldung not_allowed "Whoops! Not possible now." # Nicht erlaubt no_user "no such user !" # Kein User ison "yes" # Ein isoff "no" # Aus load_lib "loading the opening-library ..." # Lib. laden X SHAR_EOF chmod 0644 def.english || echo 'restore of def.english failed' Wc_c="`wc -c < 'def.english'`" test 4548 -eq "$Wc_c" || echo 'def.english: original size 4548, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= def.german ============== if test -f 'def.german' -a X"$1" != X"-c"; then echo 'x - skipping def.german (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting def.german (Text)' sed 's/^X//' << 'SHAR_EOF' > 'def.german' && # ---------------------------------------------------------------------------- # Standard Definitionen fuer Chess - Deutsch # (c) 1990 by M. Laukien # ---------------------------------------------------------------------------- X # menuedefinitionen: Der erste Buchstabe ist der Buchstabe, ueber den # die Funktion angewaehlt werden kann. Nicht benutzt werden duerfen # bei menu[] die Buchstaben a,b,c,d,e,f,g,h , da diese fuer die Zugeingabe # benoetigt werden. Zwischen Gross- und Kleinschrift wird nicht unter- # schieden. Die Reihenfolge der Menuepunkte darf nicht veraendert werden. X # amenue = Administrationsmenue # menue = Spielmenue # smenu = Setupmenue X amenu[0] "t[T] Trainingsspiel gegen Computer" amenu[1] "z[Z] Zeige Trainingsspiele" amenu[2] "l[L] Loesche Trainingsspiele" X amenu[3] "1[1] Turnierspiel mit Weiss gegen Computer" amenu[4] "2[2] Turnierspiel mit Schwarz gegen Computer" amenu[5] "3[3] Turnierspiel mit Weiss gegen anderen Spieler" amenu[6] "4[4] Turnierspiel mit Schwarz gegen anderen Spieler" amenu[7] "5[5] Zeige Turnierspiele" amenu[8] "6[6] Zeige Highscore-Liste" X amenu[9] "x[X] Ende" X smenu[0] "l[L] Laden" # Laden smenu[1] "s[S] Speichern" # Speichern smenu[2] "-[-] Loeschen" # Loeschen smenu[3] "=[=] Am Zug: " # Seitenwechsel smenu[4] "x[X] Ende" # Ende X menu[0] "l[L] Level : " # Spielstufe menu[1] "w[W] Weiss : " # Weiss einstellen menu[2] "s[S] Schwarz : " # Schwarz einstellen menu[3] "m[M] Monitor : " # Monitor menu[4] "![!] Aufbauen" # Speichern menu[5] "z[Z] Zurueck" # Zurueck menu[6] "i[I] Info" # Informationen menu[7] "n[N] Neustart" # Neues Spiel menu[8] "x[X] Ende" # Ende menu[9] " [ESC] Unterbrechen" # Unterbrechen X # Infostrings: Die Reihenfolge der Infopunkte darf nicht veraendert werden. X info[0] "Am Zug : " # Farbe, die am Zug ist info[1] "Anzahl der Zuege : " # Anzahl der Zuege info[2] "Bewertung : " # Bewertung des Spiels info[3] "Varianten : " # Varianten im letzten Zug info[4] "Var. pro Sek. : " # Varianten pro Sekunde info[5] "Durchschnitt : " # dito durchschnittlich info[6] "Stufe : " # Spielstufe info[7] "Rechentiefe min. : " # Minimale Rechentiefe info[8] "Rechentiefe max. : " # Maximale Rechentiefe info[9] "Letzter Zug : " # letzter Zug X # Statusinformationen: X thinking "Ich ueberlege ..." # Computer denkt is_thinking "ueberlegt ..." # Gegner denkt patt "Das Spiel ist patt !" # Spiel ist Patt w_mate "Weiss ist matt !" # Weiss ist matt b_mate "Schwarz ist matt !" # Schwarz ist matt w_chess "Weiss ist im Schach !" # Weiss ist im Schach b_chess "Schwarz ist im Schach !" # Schwarz ist im Schach remis_3 "3 * wiederholt -> Remis" # Remis bei 3-facher Wdh. w_up "Weiss gibt auf !" # Aufgabe Weiss b_up "Schwarz gibt auf !" # Aufgabe Schwarz X # Startkommando: Wird vor Programmstart ausgefuehert. Falls nicht benoetigt, # auf "" setzen. X startcmd "" X # Sicherheitsabfrage: Die ersten beiden Buchstaben sollen Abkuerzungen # fuer "ja" und "nein" sein. X sure "jnSind Sie sicher ? (J/N)" give_up "jnWirklich aufgeben ? (J/N)" X # Spielstufen fuer Uebungsspiel und Turnierspiel X tr_lv "3" # Trainingslevel to_lv "5" # Turnierlevel X # Diverese Strings: X tlist " Weiss: Schwarz: Zuege: Am Zug: " X # ^ ^ ^ ^ X # Ueberschrift fuer Spielliste Turnier X ulist " Spieler: Spielname: Zuege: Am Zug: " X # ^ ^ ^ ^ X # Ueberschrift fuer Spielliste Training X scorelist" Spieler: Spiele: Gegen Comp.: Punkte: " X # ^ ^ ^ ^ X # Ueberschrift fuer Spielliste Training X figtab "bsltdkBSLTDK " # Figurentabelle press_key "<Taste>" # Taste duecken comp "Rechner" # Name des Computers white "Weiss" # Weiss black "Schwarz" # Schwarz domove "Zug: " # Zug ausfuehren doset "Setze: " # Figur setzen enter "Namen eingeben: " # Name eingeben opponent "Gegner eingeben: " # Gegner eingeben figlist "Geschlagene Figuren:" # Liste der geschlagenen Figuren error "Fehler: " # Fehlermeldung not_allowed "Das ist jetzt nicht erlaubt !" # Nicht erlaubt no_user "Dieser User existiert nicht !" # Kein User ison "ja" # Ein isoff "nein" # Aus load_lib "Ich lade die Eroeffnungsbibliothek ..." # Lib. laden SHAR_EOF chmod 0644 def.german || echo 'restore of def.german failed' Wc_c="`wc -c < 'def.german'`" test 4581 -eq "$Wc_c" || echo 'def.german: original size 4581, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= man ============== if test -f 'man' -a X"$1" != X"-c"; then echo 'x - skipping man (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting man (Text)' sed 's/^X//' << 'SHAR_EOF' > 'man' && .pl 72 .AT 3 .TH xxxNAME xxxMANUAL .ad .SH NAME xxxNAME V2.7 \- Multiuserschachprogramm .SH SYNTAX .B xxxNAME [ .B \-d sprache ] [ .B \-t ] [ .B \-e ] .SH ALLGEMEINES .I xxxNAME bietet folgende Moeglichkeiten: .PP o Turnier- und Trainingsmodus .br o Spiel gegen Computer .br o Spiel gegen anderen Benutzer gleichzeitig .br X oder zeitversetzt .br o Anzeige aller im Moment gespielten Partien .br o Highscoreliste .br o Variable Spielstaerke .br o Demomodus, d.h. Computer spielt gegen sich selbst .br o Setup, d.h. es koennen beliebige Spielsituationen .br X aufgebaut werden. .br o Kontrollmodus, d.h. Computer kontrolliert nur die Zuege .br o Ruecknahme von beliebig vielen Zuegen .br o Grosse Eroeffnungs- und Eroeffnungsfehlerbibliothek X .SH BEDIENUNG Das Programm ist vollstaendig menuegefuehrt. Die Menuepunkte sind selbsterklaerend, und koennen durch den dazugehoerigen Buchstaben aufgerufen werden. Texteingaben werden in einem eigenem Fenster vorgenommen und durch <ENTER> abgeschlossen. Fehlermeldungen und Sicherheitsabfragen werden ebenfalls in einem eigenem Fenster angezeigt. .PP Mit CTRL-L kann der Bildschirm neu aufgebaut werden, falls dieser z.B. durch Stoerungen in der Telefonleitung (wenn ueber ein Modem gespielt wird) unlesbar ist. X .SH HAUPTMENUE X amenu[0] .br Hier wird direkt in das Schachmenue verzweigt, bei dem dann alle Menuepunkte erlaubt sind. Das Spiel laeuft gegen den Computer. Es findet allerdings kein Eintrag in die Highscoreliste statt. .PP amenu[1] .br Es werden alle persoenlichen Trainingsspiele angezeigt, dazu auch welche Farbe am Zug ist. .PP amenu[2] .br Der Name eines Trainingsspiels wird eingegeben, und anschliessend wird dieses Trainingsspiel geloescht. .PP amenu[3] .br amenu[4] .br Bei diesen Menuepunkten wird direkt in das Schachmenue verzweigt, bei dem allerdings nicht alle Menuepunkte erlaubt sind. Das Spiel laeuft gegen den Computer. Ein Eintrag in die Highscoreliste findet nach Beendigung des Spieles statt. .PP amenu[5] .br amenu[6] .br Auch hier wird direkt in das Schachmenue verzweigt, es sind wieder nicht alle Menuepunkte erlaubt. Das Spiel laeuft gegen einen anderen User, dessen Name abgefragt wird. Der Gegner kann entweder gleichzeitig spielen, oder zeitversetzt. Ein Eintrag in die Highscoreliste findet nach Beendigung des Spieles statt. .PP amenu[7] .br Es werden alle Turnierspiele ausgegeben, auch die von anderen Spielern. Zusaetzlich wird die Farbe des am Zug befindlichen angegeben. .PP amenu[8] .br Die Highscoreliste wird ausgegeben. Siehe hierzu auch 'HIGHSCORE'. .PP amenu[9] .br Dieser Punkt dient dem Verlassen des Programms. X .SH SCHACHMENUE X Im Schachmenue werden Zuege einfach durch das Ursprungsfeld und das Zielfeld angegeben, also z.B. e2-e4. Korrigiert werden kann mit der Backspace-Taste. .br .sp Ausserdem gibt es folgende Menuepunkte: .br .sp menu[0] .br Mit diesem Menuepunkt kann die Spielstaerke des Rechners eingestellt werden. (Nicht moeglich bei Turnierspielen) .PP menu[1] .br menu[2] .br Hier wird eingestellt, fuer welche Farbe der Rechner spielt. Es sind alle Kombinationen moeglich, auch dass der Rechner fuer beide Farben spielt (DEMO), oder dass der Rechner fuer keine Farbe spielt (nur Zugueberwachung). (Nicht moeglich bei Turnierspielen) .PP menu[3] .br Die Monitorfunktion kann an- und ausgeschaltet werden. Ist sie eingeschaltet, so wird in der untersten Zeile die im Moment beste bisher gefundene Variante angezeigt. .PP menu[4] .br Hier kommt man in das Setup-Menue. Von dort aus kann man dann auch Partien laden und speichern. (Nicht moeglich bei Turnierspielen) .PP menu[5] .br Dieser Menuepunkt dient der Ruecknahme eines Zuges. Es koennen beliebig viele Zuege zurueckgenommen werden. (Nicht moeglich bei Turnierspielen) .PP menu[6] .br Es werden einige Informationen zum Spiel ausgegeben. Siehe hierzu 'INFO'. .PP menu[7] .br Falls es sich um ein Trainingsspiel handelt, wird ein neues Spiel gestartet. .br Bei Turnierspielen entspricht dieser Menuepunkt der Aufgabe des Spiels, welches beendet wird. Anschliessend erfolgt ein Eintrag in die Highscoreliste. .PP menu[8] .br Nach einer Sicherheitsabfrage kommt man wieder ins Hauptmenue. .PP menu[9] .br Mittels der ESC-Taste kann die Berechnung eines Zuges jederzeit abgebrochen werden. Es wird dann der bis dahin beste Zug genommen. (Nicht moeglich bei Turnierspielen) X X .SH SETUP-MENUE X Im Setup-Menue kann auf jedes Feld eine beliebige Figur gesetzt werden. Dazu wird einfach zuerst das Feld angegeben, und dann die Figur, die auf das Feld gesetzt werden soll, z.B. e4-D setzt eine schwarze Dame auf das Feld e4. .br .sp Es gibt hier ausserdem folgende Moeglichkeiten: .br .sp smenu[0] .br smenu[1] .br Diese beiden Punkte dienen dem Laden und Speichern von Partien. .PP smenu[2] .br Hiermit wird das ganze Spielbrett geloescht. .PP smenu[3] .br Hier kann man auswaehlen, ob Weiss oder Schwarz am Zug sein soll. .PP smenu[4] .br Mit diesem Menuepunkt kommt man wieder zurueck ins Schachmenue. X .SH INFO X info[0] .br Hier wird angegeben, welche Farbe im Moment am Zug ist. .PP info[1] .br Hier wird die Anzahl der gespielten Zuege angegeben. .PP info[2] .br Hier wird eine Bewertung der Stellung vom Computer vorgenommen. Ein positiver Wert bedeutet, dass die Stellung fuer Weiss besser ist, ein negativer Wert bedeutet, dass die Stellung fuer Schwarz besser ist. .PP info[3] .br Hier wird die Anzahl der Varianten angegeben, die zur Ermittlung des letzten Zuges noetig waren. .PP info[4] .br Hier wird die Anzahl der pro Sekunde berechneten Varianten des letzten Zuges angegeben. .PP info[5] .br Hier wird der Durchschnitt der Anzahl der pro Sekunde berechneten Varianten von allen bisherigen Zuegen angegeben. Dies kann als ein Mass fuer die Geschwindigkeit des Rechners dienen. .PP info[6] .br Hier wird die aktuelle Spielstufe (Level) angezeigt. .PP info[7] .br Hier wird die minimale Rechentiefe angegeben, in Halbzuegen gemessen. .PP info[8] .br Hier wird die maximale Rechentiefe angegeben, in Halbzuegen gemessen. .PP info[9] .br Hier wird der letzte gespielte Zug angezeigt. X .SH SCHACHREGELN .I xxxNAME beherrscht neben den 'normalen' Regeln folgende Sonderregeln: .PP o Rochade (Um sie auszufuehren, muss der Zug des Koenigs .br X angegeben werden, z.B. 'kurze' Rochade Weiss: e1-g1) .br o Schlagen en passant .br o Remis bei dreifacher Wiederholung einer Stellung .br o 'Patt' des Koenigs .PP Folgende Regeln sind noch nicht implementiert: .PP o Umwandlung eines Bauern in eine andere Figur als .br X eine Dame .br o 50-Zuege-Regel X .SH HIGHSCORE .I xxxNAME berechnet die Highscoreliste folgendermassen: Am Anfang hat jeder Spieler 1000 Punkte. Fuer jedes gewonnene Spiel erhaelt der Gewinner 1/4 der Punkte des Verlierers, und der Verlierer bekommt dementsprechend 1/4 seiner Punkte abgezogen. Es lohnt sich also immer gegen einen staerkeren Spieler anzutreten, da man hier die meisten Punkte gewinnen kann. X .SH SPRACHE .I xxxNAME kann in jede beliebige Sprache uebersetzt werden. Dazu muss nur eine Datei mit dem Namen .I def.sprache erzeugt werden. Am besten kopiert man eine existierende Datei, z.B. .I def.german und uebersetzt diese dann in die gewuenschte Sprache. Das Programm wird dann mit .I xxxNAME \-d sprache aufgerufen. X .SH EROEFFNUNGSTEST Mit der Option \-t kann man die Eroeffnungsbibliothek auf Fehler pruefen. .I xxxNAME gibt dann eine Liste (Datei "error.op") mit allen Fehlern in der Bibliothek aus, und zwar mit Eroeffnungsnummer und Zugnummer. Dieser Test kann unter Umstaenden laengere Zeit benoetigen. X .SH EXPIRE .I xxxNAME mit der Option \-e loescht alle Turnierspiele, bei denen der letzte Zug mehr als xxxEXPIRE Tage zurueckliegt. Falls schon mehr als xxxMOVES Halbzuege gespielt wurden, wird die Partie fuer denjenigen als verloren eingetragen, der am Zug ist. Die Spieler werden dann mit einer mail benachrichtigt. SHAR_EOF chmod 0644 man || echo 'restore of man failed' Wc_c="`wc -c < 'man'`" test 7830 -eq "$Wc_c" || echo 'man: original size 7830, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= Makefile ============== if test -f 'Makefile' -a X"$1" != X"-c"; then echo 'x - skipping Makefile (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting Makefile (Text)' sed 's/^X//' << 'SHAR_EOF' > 'Makefile' && # --------------------------------------------------------------------- # # Name: UnixChess V2.7 # Schachprogramm # # Programmteil: Makefile # # Autor: Marc Laukien # # --------------------------------------------------------------------- X # ----------------- Ab hier Eintragungen vornehmen -------------------- # ----------------- Make the necessary changes -------------------- X # Name des Schachprogramms: # Name of the chessprogram: NAME = chess X # Standardsprache, falls '-d sprache' weggelassen wird: # Default language, if invoked without '-d language': LANG = english #LANG = german X # Aus welchem def.* die Menues ins Manual uebernommen werden: # Defines from what def.* file the menunames will be included in the manual: MANLANG = english #MANLANG = german X # Anzahl der Tage fuer expire: # Number of days for the expire: EXPIRE = 14 # Anzahl der Halbzuege, bei denen expire noch nicht in # die Highscoreliste eintraegt: # Number of moves, with which the expire won't create an entry in # the highscoretable: MOVES = 4 X # ----------------- Pfade ---------------------------------------------- # ----------------- Paths ---------------------------------------------- X # Directorys, in denen installiert wird: # Installation directorys: LIBDIR = /usr/games/lib/Chess BINDIR = /usr/games X # Kapitel/Directory in dem das Manual installiert wird: # Chapter/Directory in which the manual will be installed: MANUAL = LOCAL MANDIR = /usr/man/man.LOCAL CATDIR = /usr/man/cat.LOCAL X # Mailer fuer den expire # Mailer for expire MAIL = /bin/mail X # ----------------- Angaben zum System -------------------------------- # ----------------- System informations -------------------------------- X # Shared Library: #LIBSH = LIBSH = -lc_s X # Curses library FLAGS = -O LIB = -lcurses X # Filemode, falls unter SUID installiert werden soll: # Filemode, if you like to install with SUID: MODE1 = 4711 MODE2 = 600 MODE3 = 700 X # Filemode, falls unter SGID installiert werden soll: # Filemode, if you like to install with SGID: #MODE1 = 2771 #MODE2 = 660 #MODE3 = 770 X # Shar: SHAR = shar -n UnixChess -o $(NAME) -L 50 -a -c -s ml@brumuc.muc.sub.org X # ----------------- Keine Aenderung ab hier !!! ------------------------ # ----------------- Don't touch the rest !!! ------------------------ X CFLAGS = $(FLAGS) -DMAIL=\"$(MAIL)\" \ X -DEXPIRE=$(EXPIRE) -DMOVES=$(MOVES) -DLANG=\"$(LANG)\" X ALLSRCS1 = ch/value.c ch/main.c ch/move.c ch/comp.c \ X ch/utility.c ch/threat.c ch/init.c ch/list.c \ X ch/archiv.c ch/open.c ch/stat.c X ALLSRCS2 = ad/main.c ad/init.c ad/utility.c ad/monitor.c \ X ad/window.c ad/move.c ad/interrupt.c ad/load.c \ X ad/menu.c ad/lock.c ad/admin.c ad/screen.c ad/id.c \ X ad/score.c ad/training.c ad/tour_user.c \ X ad/tour_comp.c ad/expire.c ad/setup.c X ALLSRCS3 = br/break.c X ALLSRCS = $(ALLSRCS1) $(ALLSRCS2) $(ALLSRCS3) X ALLHDRS = ad/ad.h ch/ch.h ch/ph.h ad/patchlevel.h X # don't delete the next line ! # op start ALLOP = op/op.albinsgegam op/op.aljechin op/op.b2b4 op/op.benoni \ X op/op.bird op/op.budapestgam op/op.caro-kann op/op.damenbaspie \ X op/op.damengam op/op.damenind op/op.dreispring op/op.englisch \ X op/op.evansgam op/op.franz op/op.gruenfeld op/op.holland \ X op/op.indisch op/op.italienisch op/op.katalanisch op/op.koenigsgam \ X op/op.koenigsind op/op.laeufer op/op.nimzowitsch op/op.nordgam \ X op/op.philidor op/op.ponziani op/op.reti op/op.russisch \ X op/op.schottisch op/op.sizilian op/op.skandinav op/op.spanisch \ X op/op.ufimzew op/op.ungarische op/op.unregel op/op.vierspring \ X op/op.wiener op/op.zweispring # op end # don't delete the previous line ! X ALLDEF = def.english def.german X ALLARCH = README.eng README.ger $(ALLSRCS) $(ALLHDRS) ad/lex.l \ X ad/patchlevel.h $(ALLOP) $(ALLDEF) man Makefile X ALLOBJ1 = ch/value.o ch/main.o ch/move.o ch/comp.o \ X ch/utility.o ch/threat.o ch/init.o ch/list.o \ X ch/archiv.o ch/open.o ch/stat.o X ALLOBJ2 = ad/init.o ad/utility.o ad/monitor.o ad/window.o \ X ad/move.o ad/interrupt.o ad/load.o ad/menu.o ad/lock.o \ X ad/admin.o ad/screen.o ad/id.o ad/score.o \ X ad/training.o ad/tour_user.o ad/tour_comp.o \ X ad/expire.o ad/lex.o ad/setup.o X ALLOBJ3 = br/break.o X all: $(NAME) chbrk chess.op X $(NAME): $(ALLOBJ1) $(ALLOBJ2) ad/main.o X -mkdir save X -mkdir training X touch score.list X X $(CC) $(CFLAGS) -o $(NAME) \ X $(ALLOBJ1) $(ALLOBJ2) ad/main.o $(LIB) -ll -lm $(LIBSH) X chmod $(MODE1) $(NAME) X chbrk: $(ALLOBJ3) X $(CC) $(CFLAGS) -o chbrk $(LIBSH) \ X $(ALLOBJ3) X chmod $(MODE1) chbrk X chess.op: $(ALLOP) Makefile X cat $(ALLOP) | grep -v "^#" > chess.op X chmod $(MODE2) chess.op X lint.out: $(ALLSRCS1) $(ALLSRCS2) X lint $(ALLSRCS1) > lint.out X lint $(ALLSRCS2) >> lint.out X man.$(MANUAL): man Makefile def.$(MANLANG) X egrep '^amenu\[|^smenu\[|^menu\[' def.$(MANLANG) |\ X sed \ X -e 's/\//\\\//g' \ X -e 's/^/s\//g' \ X -e 's/\"[^"]*$$/\/g/g' \ X -e 's/[ ]*\"./\//g' \ X -e 's/\[/\\[/g' \ X -e 's/\]/\\]/g' \ X > man.tmp X X egrep '^info\[' def.$(MANLANG) |\ X sed \ X -e 's/\//\\\//g' \ X -e 's/^/s\//g' \ X -e 's/\"[^"]*$$/\/g/g' \ X -e 's/[ ]*\"/\//g' \ X -e 's/\[/\\[/g' \ X -e 's/\]/\\]/g' \ X >> man.tmp X X echo "s/xxxNAME/$(NAME)/g" >> man.tmp X echo "s/xxxMANUAL/$(MANUAL)/g" >> man.tmp X echo "s/xxxEXPIRE/$(EXPIRE)/g" >> man.tmp X echo "s/xxxMOVES/$(MOVES)/g" >> man.tmp X X sed -f man.tmp man > man.$(MANUAL) X rm -f man.tmp X cat.$(MANUAL): man.$(MANUAL) X nroff -man man.$(MANUAL) > cat.$(MANUAL) X install_man: man.$(MANUAL) X cp man.$(MANUAL) $(MANDIR)/$(NAME).$(MANUAL) X chmod 644 $(MANDIR)/$(NAME).$(MANUAL) X install_cat: cat.$(MANUAL) X cp cat.$(MANUAL) $(CATDIR)/$(NAME).$(MANUAL) X chmod 644 $(CATDIR)/$(NAME).$(MANUAL) X install: all ad/main2.o X -mkdir $(BINDIR) X -mkdir $(LIBDIR) X chmod $(MODE3) $(LIBDIR) X -mkdir $(LIBDIR)/save X chmod $(MODE3) $(LIBDIR)/save X -mkdir $(LIBDIR)/training X chmod $(MODE3) $(LIBDIR)/training X X $(CC) $(CFLAGS) -o $(BINDIR)/$(NAME) \ X $(ALLOBJ1) $(ALLOBJ2) ad/main2.o $(LIB) -ll -lm $(LIBSH) X chmod $(MODE1) $(BINDIR)/$(NAME) X X cp chbrk $(LIBDIR) X chmod $(MODE1) $(LIBDIR)/chbrk X X cp def.* $(LIBDIR) X cp chess.op $(LIBDIR) X chmod $(MODE2) $(LIBDIR)/def.* $(LIBDIR)/chess.op X X touch $(LIBDIR)/score.list X chmod $(MODE2) $(LIBDIR)/score.list X X @echo "\n >>> Welcome to UNIX-Chess ! <<<" X remove: X -rm -rf $(LIBDIR)/save X -rm -rf $(LIBDIR)/training X -rm -f $(BINDIR)/$(NAME) X -rm -f $(LIBDIR)/chbrk X -rm -f $(LIBDIR)/def.* X -rm -f $(LIBDIR)/chess.op X -rm -f $(LIBDIR)/error.op X -rm -f $(LIBDIR)/score.list X -rm -f $(MANDIR)/$(NAME).$(MANUAL) X -rm -f $(CATDIR)/$(NAME).$(MANUAL) X dist: $(ALLARCH) X $(SHAR) $(ALLARCH) X chess.arc: $(ALLARCH) X -rm -f chess.arc X arc -a chess.arc $(ALLARCH) X chess.zoo: $(ALLARCH) X -rm -f chess.zoo X zoo -add chess.zoo $(ALLARCH) X chess.tar: $(ALLARCH) X tar cvf chess.tar $(ALLARCH) X chess.tar.Z: chess.tar X @if test -r chess.tar.Z ;\ X then \ X rm -f chess.tar.Z ;\ X fi X compress chess.tar X listing: $(ALLSRCS) $(ALLHDRS) X cpr -Xp9w83 $(ALLSRCS) $(ALLHDRS) > listing X clean: X -rm -f ad/*.o X -rm -f ch/*.o X -rm -f br/*.o X clobber: clean X -rm -f $(NAME) X -rm -f $(NAME).?? X -rm -f chbrk X -rm -f ad/main2.c X -rm -f chess.op X -rm -f error.op X -rm -f lint.out X -rm -f man.$(MANUAL) X -rm -f cat.$(MANUAL) X -rm -f core X -rm -f mon.out X -rm -f lint.out X -rm -f listing X -rm -f *.bak X -rm -f *.shar X -rm -f score.list X -rm -r -f training X -rm -r -f save X ad/main2.c: ad/main.c X ln ad/main.c ad/main2.c X ad/main2.o: ad/main2.c X $(CC) $(CFLAGS) -DWORKDIR=\"$(LIBDIR)\" -c ad/main2.c X mv main2.o ad X # Build a list of all op.* files oplist: Makefile op X @echo 'make oplist is running on the following files: ' X @echo op/op.* X @-rm -f op.tmp X X @for i in op/op.* ; do \ X echo $$i >> op.tmp ; \ X done X X @cp Makefile Makefile.bak X @echo 'ed - Makefile <<\ EOF' > oplist X @echo '/op start/a' >> oplist X X @awk \ X 'BEGIN { ORS=" " ; i= -1 ; j=1 ; print "ALLOP = " } \ X i++ >= 3 { i=0 ; ORS="\n" ; print " \\" ; ORS=" " ; \ X j++ ; print " " } \ X { print $$1 } \ X END { print "" }' op.tmp >> oplist X X @echo '' >> oplist X @echo '.' >> oplist X @echo '.+1,/op end/-1d' >> oplist X @echo 'w' >> oplist X @echo 'q' >> oplist X @echo 'EOF' >> oplist X X @sh oplist X X -rm -f op.tmp oplist X # Build a list of .h file dependencies. depend: X @echo 'make depend is running on the following files: ' X @echo $(ALLSRCS) X @rm -f makedep eddep X @for i in $(ALLSRCS); do\ X $(CC) -E $(CFLAGS) $$i |\ X grep '^#' |\ X awk '{ print $$3 }' |\ X grep '^"' |\ X grep -v "/usr/include" |\ X sed -e 's|/[^/]*/\.\.||g' -e 's|"||g' |\ X sort -u |\ X awk "BEGIN { of = \"`basename $$i .c`\" \".o: \"; rec = of } \ X { rec = rec \" \" \$$0 } \ X END { print \"`dirname $$i`/\" rec ; \ X print \" $$(CC) $$(CFLAGS) -c $$i\" ; \ X print \" mv `basename $$i .c`.o `dirname $$i`\" }" \ X >> makedep ; \ X done X @echo '$$r makedep' >>eddep X @echo '/^# DO NOT DELETE THIS LINE/+1,$$d' >>eddep X @echo '$$r makedep' >>eddep X @echo 'w' >>eddep X @cp Makefile Makefile.bak X @ed - Makefile < eddep X @rm -f eddep makedep X # DO NOT DELETE THIS LINE -- make depend uses it ch/value.o: ch/ch.h ch/ph.h ch/value.c X $(CC) $(CFLAGS) -c ch/value.c X mv value.o ch ch/main.o: ch/ch.h ch/main.c X $(CC) $(CFLAGS) -c ch/main.c X mv main.o ch ch/move.o: ch/ch.h ch/move.c X $(CC) $(CFLAGS) -c ch/move.c X mv move.o ch ch/comp.o: ch/ch.h ch/comp.c X $(CC) $(CFLAGS) -c ch/comp.c X mv comp.o ch ch/utility.o: ch/ch.h ch/utility.c X $(CC) $(CFLAGS) -c ch/utility.c X mv utility.o ch ch/threat.o: ch/ch.h ch/threat.c X $(CC) $(CFLAGS) -c ch/threat.c X mv threat.o ch ch/init.o: ch/ch.h ch/init.c X $(CC) $(CFLAGS) -c ch/init.c X mv init.o ch ch/list.o: ch/ch.h ch/list.c X $(CC) $(CFLAGS) -c ch/list.c X mv list.o ch ch/archiv.o: ch/archiv.c ch/ch.h X $(CC) $(CFLAGS) -c ch/archiv.c X mv archiv.o ch ch/open.o: ch/ch.h ch/open.c ch/ph.h X $(CC) $(CFLAGS) -c ch/open.c X mv open.o ch ch/stat.o: ch/ch.h ch/ph.h ch/stat.c X $(CC) $(CFLAGS) -c ch/stat.c X mv stat.o ch ad/main.o: ad/ad.h ad/main.c X $(CC) $(CFLAGS) -c ad/main.c X mv main.o ad ad/init.o: ad/ad.h ad/init.c X $(CC) $(CFLAGS) -c ad/init.c X mv init.o ad ad/utility.o: ad/ad.h ad/utility.c X $(CC) $(CFLAGS) -c ad/utility.c X mv utility.o ad ad/monitor.o: ad/ad.h ad/monitor.c X $(CC) $(CFLAGS) -c ad/monitor.c X mv monitor.o ad ad/window.o: ad/ad.h ad/window.c X $(CC) $(CFLAGS) -c ad/window.c X mv window.o ad ad/move.o: ad/ad.h ad/move.c X $(CC) $(CFLAGS) -c ad/move.c X mv move.o ad ad/interrupt.o: ad/ad.h ad/interrupt.c X $(CC) $(CFLAGS) -c ad/interrupt.c X mv interrupt.o ad ad/load.o: ad/ad.h ad/load.c X $(CC) $(CFLAGS) -c ad/load.c X mv load.o ad ad/menu.o: ad/ad.h ad/menu.c X $(CC) $(CFLAGS) -c ad/menu.c X mv menu.o ad ad/lock.o: ad/ad.h ad/lock.c X $(CC) $(CFLAGS) -c ad/lock.c X mv lock.o ad ad/admin.o: ad/ad.h ad/admin.c X $(CC) $(CFLAGS) -c ad/admin.c X mv admin.o ad ad/screen.o: ad/ad.h ad/patchlevel.h ad/screen.c X $(CC) $(CFLAGS) -c ad/screen.c X mv screen.o ad ad/id.o: ad/ad.h ad/id.c X $(CC) $(CFLAGS) -c ad/id.c X mv id.o ad ad/score.o: ad/ad.h ad/score.c X $(CC) $(CFLAGS) -c ad/score.c X mv score.o ad ad/training.o: ad/ad.h ad/training.c X $(CC) $(CFLAGS) -c ad/training.c X mv training.o ad ad/tour_user.o: ad/ad.h ad/tour_user.c X $(CC) $(CFLAGS) -c ad/tour_user.c X mv tour_user.o ad ad/tour_comp.o: ad/ad.h ad/tour_comp.c X $(CC) $(CFLAGS) -c ad/tour_comp.c X mv tour_comp.o ad ad/expire.o: ad/ad.h ad/expire.c X $(CC) $(CFLAGS) -c ad/expire.c X mv expire.o ad ad/setup.o: ad/ad.h ad/setup.c X $(CC) $(CFLAGS) -c ad/setup.c X mv setup.o ad br/break.o: br/break.c X $(CC) $(CFLAGS) -c br/break.c X mv break.o br SHAR_EOF chmod 0644 Makefile || echo 'restore of Makefile failed' Wc_c="`wc -c < 'Makefile'`" test 11920 -eq "$Wc_c" || echo 'Makefile: original size 11920, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi rm -f _shar_seq_.tmp echo You have unpacked the last part exit 0 -- / | -: Marc Laukien :- | /__ | | _ _ __ / \ /_ / / | ml@brumuc.muc.sub.org | / \/ | / / / /____/ / /__/ | sigma@salyko.doit.sub.org | / | /__/ /__
ml@brumuc.muc.sub.org (Marc Laukien) (05/22/91)
Submitted-by: ml@brumuc.muc.sub.org Archive-name: UnixChess/part10 ---- Cut Here and feed the following to sh ---- #!/bin/sh # this is chess.10 (part 10 of UnixChess) # do not concatenate these parts, unpack them in order with /bin/sh # file op/op.ufimzew continued # if test ! -r _shar_seq_.tmp; then echo 'Please unpack part 1 first!' exit 1 fi (read Scheck if test "$Scheck" != 10; then echo Please unpack part "$Scheck" next! exit 1 else exit 0 fi ) < _shar_seq_.tmp || exit 1 if test ! -f _shar_wnt_.tmp; then echo 'x - still skipping op/op.ufimzew' else echo 'x - continuing file op/op.ufimzew' sed 's/^X//' << 'SHAR_EOF' >> 'op/op.ufimzew' && # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # SHAR_EOF echo 'File op/op.ufimzew is complete' && chmod 0644 op/op.ufimzew || echo 'restore of op/op.ufimzew failed' Wc_c="`wc -c < 'op/op.ufimzew'`" test 913 -eq "$Wc_c" || echo 'op/op.ufimzew: original size 913, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= op/op.ungarische ============== if test -f 'op/op.ungarische' -a X"$1" != X"-c"; then echo 'x - skipping op/op.ungarische (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting op/op.ungarische (Text)' sed 's/^X//' << 'SHAR_EOF' > 'op/op.ungarische' && # --------------------------------------------------------------------- # # Name: Chess V2.7 # Schachprogramm # # Programmteil: Opening-Library # Ungarische Verteidigung # # Autor: Christoph Thommes # # --------------------------------------------------------------------- # # (Tarrasch-amateur,1898) # 9. .... f6d7 (?) We2e4e7e5g1f3b8c6f1c4f8e7d2d4e5d4f3d4d7d6e1g1g8f6b1c3e8g8h2h3f8e8f1e1f6d7c4f7g8f7d4e6f7e6d1d5e6f6d5f5 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # SHAR_EOF chmod 0644 op/op.ungarische || echo 'restore of op/op.ungarische failed' Wc_c="`wc -c < 'op/op.ungarische'`" test 626 -eq "$Wc_c" || echo 'op/op.ungarische: original size 626, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= op/op.unregel ============== if test -f 'op/op.unregel' -a X"$1" != X"-c"; then echo 'x - skipping op/op.unregel (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting op/op.unregel (Text)' sed 's/^X//' << 'SHAR_EOF' > 'op/op.unregel' && # --------------------------------------------------------------------- # # Name: Chess V2.7 # Schachprogramm # # Programmteil: Opening-Library # Unregelmaessig # # Autor: Christoph Thommes # # --------------------------------------------------------------------- # # (Russakow-Werlinski,1947) # 7. e4e5 (?!) Be2e4e7e5c2c3b8c6d2d4g8f6c1g5h7h6g5h4g7g5h4g3e5d4e4e5d4c3e5f6c3b2d1e2d8e7f6e7f8g7 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # SHAR_EOF chmod 0644 op/op.unregel || echo 'restore of op/op.unregel failed' Wc_c="`wc -c < 'op/op.unregel'`" test 594 -eq "$Wc_c" || echo 'op/op.unregel: original size 594, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= op/op.vierspring ============== if test -f 'op/op.vierspring' -a X"$1" != X"-c"; then echo 'x - skipping op/op.vierspring (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting op/op.vierspring (Text)' sed 's/^X//' << 'SHAR_EOF' > 'op/op.vierspring' && # --------------------------------------------------------------------- # # Name: Chess V2.7 # Schachprogramm # # Programmteil: Opening-Library # Vierspringerspiel # # Autor: Christoph Thommes # # --------------------------------------------------------------------- # # (unknown) WB e2e4e7e5g1f3g8f6b1c3b8c6f1b5f8b4e1g1e8g8d2d3d7d6c1g5b4c3b2c3d8e7 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Opecensky-Hrdina,1924) # 11. .... d8b6 (?!) We2e4e7e5g1f3b8c6b1c3g8f6f1b5f8b4e1g1e8g8d2d3d7d6c1g5c6e7f3h4c7c6b5c4e7g6h4g6h7g6f2f4d8b6g1h1f6g4d1e1g4e3f4f5e3c4f5f6c8g4e1h4g4h5g2g4c4e3g4h5e3f1h5h6 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (unknown) # 13. g5f6 (?!) Be2e4e7e5g1f3b8c6b1c3g8f6f1b5f8b4e1g1e8g8d2d3d7d6c1g5c8g4c3d5c6d4d5b4d4b5b4d5b5d4d1d2d4f3g2f3g4f3g5f6g7f6d2h6g8h8 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Herrmann-Rellstab,1932) # 9. e1f2 (?!) Be2e4e7e5g1f3b8c6b1c3g8f6f1b5c6d4f3e5d8e7f2f4d4b5c3b5d7d6e5f3e7e4e1f2f6g4f2g3e4g6f3h4g6h5b5c7e8d8h2h3g4f6c7a8h5h4g3h4f6e4d1g4f8e7g4g5e7g5f4g5h7h6g5g6f7g6h1f1g6g5h4h5e4g3 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (unknown) # 9. f4d5 (?) Be2e4e7e5g1f3b8c6b1c3g8f6f1b5c6d4b5a4f8c5f3e5e8g8e5d3c5b6d3f4d7d5f4d5f6d5c3d5d8h4e1g1c8g4d1e1d4f3g2f3g4f3 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (unknown) # 7. f3e5 (?) Be2e4e7e5g1f3b8c6b1c3g8f6f1b5c6d4b5a4f8c5e1g1e8g8f3e5d7d6e5c4c8g4d1e1d4f3g2f3g4f3d2d4d8c8c4e3c8h3d4c5f6g4 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Belitzmann-Rubinstein,1917) # 10. c3d5 (?) Be2e4e7e5g1f3b8c6b1c3g8f6f1b5c6d4b5c4f8c5f3e5d8e7e5d3d7d5c3d5e7e4d5e3c5d6e1g1b7b5c4b3c8b7d3e1e4h4g2g3h4h3c2c3h7h5c3d4h5h4d1e2h3h2g1h2h4g3h2g1h8h1 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # SHAR_EOF chmod 0644 op/op.vierspring || echo 'restore of op/op.vierspring failed' Wc_c="`wc -c < 'op/op.vierspring'`" test 2030 -eq "$Wc_c" || echo 'op/op.vierspring: original size 2030, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= op/op.wiener ============== if test -f 'op/op.wiener' -a X"$1" != X"-c"; then echo 'x - skipping op/op.wiener (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting op/op.wiener (Text)' sed 's/^X//' << 'SHAR_EOF' > 'op/op.wiener' && # --------------------------------------------------------------------- # # Name: Chess V2.7 # Schachprogramm # # Programmteil: Opening-Library # Wiener Partie # # Autor: Christoph Thommes # # --------------------------------------------------------------------- # # Spielmann-Flamberg,1914) # 7. .... g4f3 (?!) We2e4e7e5b1c3g8f6f2f4d7d5f4e5f6e4g1f3c8g4d1e2e4c5d2d4g4f3e2f3d8h4g2g3h4d4c1e3d4e5e1c1c7c6c3d5c6d5d1d5e5e6f1c4e6e4e3c5 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (unknown) # 7. h5e5 (?) Be2e4e7e5b1c3g8f6f1c4f6e4c4f7e8f7c3e4d7d5d1h5g7g6h5e5f8h6 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Imbisch-Goering,1899) # 5. .... b8c6 (?) 6. .... f7g8 (?) We2e4e7e5b1c3g8f6f1c4f6e4c4f7e8f7c3e4b8c6d1f3f7g8e4g5 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Taubenhaus-Halpern,1887) # 10. .... c7c6 (?) We2e4e7e5b1c3b8c6f2f4e5f4d2d4d8h4e1e2d7d5e4d5c8g4g1f3g4f3g2f3h4e7e2d3c6b4d3c4c7c6f1h3c6d5c4b3b4c6h1e1c6d4d1d4e7e1d4a4b7b5a4b5e8e7b5d7e7f6c3d5f6e5c1f4e5d4d5c3d4c5c3a4 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Mieses-Tschigorin,1906) # 4. .... d8f6 (?!) We2e4e7e5b1c3b8c6f1c4f8c5d1g4d8f6c3d5f6f2e1d1e8f8g1h3f2d4d2d3d7d6g4h4c8h3h4h3c6a5h1f1a5c4h3d7f7f6d5f6d4f2f1f2c5f2f6h5 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # * () We2e4e7e5b1c3b8c6f1c4f8c5d1g4d8f6c3d5f6f2e1d1e8f8g1h3f2d4d2d3d7d6g4f3c8h3h1f1 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # SHAR_EOF chmod 0644 op/op.wiener || echo 'restore of op/op.wiener failed' Wc_c="`wc -c < 'op/op.wiener'`" test 1690 -eq "$Wc_c" || echo 'op/op.wiener: original size 1690, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= op/op.zweispring ============== if test -f 'op/op.zweispring' -a X"$1" != X"-c"; then echo 'x - skipping op/op.zweispring (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting op/op.zweispring (Text)' sed 's/^X//' << 'SHAR_EOF' > 'op/op.zweispring' && # --------------------------------------------------------------------- # # Name: Chess V2.7 # Schachprogramm # # Programmteil: Opening-Library # Zweispringerspiel # # Autor: Christoph Thommes # # --------------------------------------------------------------------- # # (unknown) WB e2e4e7e5g1f3b8c6f1c4g8f6f3g5d7d5e4d5c6a5c4b5c7c6d5c6b7c6b5e2h7h6g5f3e5e4 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Morphy-amateur,1858) # 5. .... f6d5 (?) We2e4e7e5g1f3b8c6f1c4g8f6f3g5d7d5e4d5f6d5d2d4e5d4e1g1f8e7g5f7e8f7d1f3f7e6b1c3d4c3f1e1c6e5c1f4e7f6f4e5f6e5e1e5e6e5a1e1e5d4c4d5h8e8f3d3d4c5b2b4c5b4d3d4 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Bibikow-Neistadt,1946) # 13. d2d4 (?) Be2e4e7e5g1f3b8c6f1c4g8f6f3g5d7d5e4d5c6a5c4b5c7c6d5c6b7c6b5e2h7h6g5f3e5e4f3e5f8d6f2f4e4f3e5f3d8c7d2d4f6g4b1c3d6h2f3h2c7g3e1d2a5c4e2c4g3e3 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Field-Tenner,1934) # 10. e1g1 (?) Be2e4e7e5g1f3b8c6f1c4g8f6f3g5d7d5e4d5c6a5d2d3h7h6g5f3e5e4d1e2a5c4d3c4f8c5e1g1e8g8f3d2c8g4e2e1d8d7d2b3g4f3c1f4d7g4f4g3f6h5b3c5h5f4c5e4g4h3 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Semenenko-Perfiljew,1947) # 6. c2c3 (?!) Be2e4e7e5g1f3b8c6f1c4g8f6f3g5d7d5e4d5c6d4c2c3b7b5c4f1f6d5g5f7e8f7c3d4e5d4d1f3d5f6f3a8f8c5f1b5h8e8e1f1c8a6a8c6d8e7g2g3a6b5c6b5e7e4b5c4f7g6f1g1e4f3c4f1d4d3 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Fischer-amateur,1964) # 13. d2d3 (?!) Be2e4e7e5g1f3b8c6f1c4g8f6f3g5d7d5e4d5c6d4c2c3b7b5c4f1f6d5c3d4d8g5f1b5e8d8d1f3e5e4f3e4f8d6e1g1c8b7d2d3d6h2g1h2d5f4 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Tylewitsch-Winkel,1960) # 14. c1d2 (?) Be2e4e7e5g1f3b8c6f1c4g8f6d2d4e5d4e1g1f6e4f1e1d7d5c4d5d8d5b1c3d5a5c3e4c8e6e4g5e8c8g5e6f7e6e1e6f8d6d1e2a5h5c1d2d4d3e2e4c6d4e6d6d4f3e4f3h5f3d6d8h8d8g2f3d3c2 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Arend-Dyckhoff,1934) # 9. e1e4 (?) Be2e4e7e5g1f3b8c6f1c4g8f6d2d4e5d4e1g1f6e4f1e1d7d5b1c3d4c3c4d5c8e6e1e4c6e7 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Sokolow-Rushnikow,1966) # 6. .... d8e7 (?!) We2e4e7e5g1f3b8c6f1c4g8f6d2d4e5d4e1g1f6e4b1c3d4c3c4f7e8f7d1d5f7e8f1e1f8e7e1e4d7d6c1g5c3b2a1e1h8f8g5e7c6e7d5h5e8d7f3d4c7c5h5g4d7c7e4e7d8e7e1e7c7d8g4g5h7h6e7b7h6g5d4c6d8e8b7e7 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (unknown) # 7. h2h3 (?) Be2e4e7e5g1f3b8c6f1c4g8f6d2d4e5d4e1g1f8c5e4e5f6g4h2h3g4e5f3e5c6e5f1e1d7d6f2f4d4d3g1h2d8h4f4e5d3c2e5d6c8e6e1e6f7e6d6d7e8e7d1c2c5d6h2g1h4e1c4f1h8f8 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Mueller-Bauer,1908) # 12. .... c6d4 (?) We2e4e7e5g1f3b8c6f1c4g8f6d2d4e5d4e1g1f8c5e4e5d7d5e5f6d5c4f1e1e8f8c1g5g7f6g5h6f8g8b1c3c5f8f3d4c6d4d1d4c8f5d4f4f5c2a1d1f8d6c3d5d6f4e1e8d8e8d5f6 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Kazic-Vukovic,1940) # 13. .... c6e5 (?) We2e4e7e5g1f3b8c6f1c4g8f6d2d4e5d4e1g1f8c5e4e5d7d5e5f6d5c4f1e1e8f8c1g5g7f6g5h6f8g8b1c3c8g4c3e4b7b6c2c3c6e5f3e5g4d1e5d7c5e7e4f6e7f6e1e8d8e8d7f6 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Saemisch-Reimann,1927) # 11. .... c5f8 (?!) We2e4e7e5g1f3b8c6f1c4g8f6d2d4e5d4e1g1f8c5e4e5d7d5e5f6d5c4f1e1c8e6f3g5d8d5b1c3d5f5c3e4c5f8g5f7e8f7e4g5f7g8g2g4f5f6e1e6f6d8d1f3d8d7e6e7 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Shahajew-Romanischin,1947) # 11. .... c5f8 (?!) We2e4e7e5g1f3b8c6f1c4g8f6d2d4e5d4e1g1f8c5e4e5d7d5e5f6d5c4f1e1c8e6f3g5d8d5b1c3d5f5c3e4c5f8g5f7e8f7e4g5f7g8g2g4f5d5g5e6c6e5f6f7g8f7e6g5f7g8e1e5d5e5d1f3 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (Tschigorin-Albin,1897) # 12. .... f5d5 (?) We2e4e7e5g1f3b8c6f1c4g8f6d2d4e5d4e1g1f8c5e4e5d7d5e5f6d5c4f1e1c8e6f3g5d8d5b1c3d5f5c3e4e8c8g2g4f5d5f6g7h8g8e4f6d5d6g5e4d6e5f2f4d4d3g1g2e5d4c2c3 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (unknown) # 7. .... f7g6 (?) We2e4e7e5g1f3b8c6f1c4g8f6b1c3f6e4c4f7e8f7c3e4d7d5f3g5f7g6d1f3d5e4f3f7g6g5d2d4g5h4h2h3g7g6g2g3h4h5g3g4h5h4f7b3f8b4e1f1c8g4h3g4h4g4b3h3 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # (unknown) # 10. d2d3 (?) Be2e4e7e5g1f3b8c6f1c4g8f6b1c3f6e4c4f7e8f7c3e4d7d5f3g5f7g6d1f3d5e4f3f7g6g5d2d3g5h4g2g3h4h3f7h5h3g2c1g5f8b4c2c3d8d3 # . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 0 . # SHAR_EOF chmod 0644 op/op.zweispring || echo 'restore of op/op.zweispring failed' Wc_c="`wc -c < 'op/op.zweispring'`" test 4656 -eq "$Wc_c" || echo 'op/op.zweispring: original size 4656, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= def.english ============== if test -f 'def.english' -a X"$1" != X"-c"; then echo 'x - skipping def.english (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting def.english (Text)' sed 's/^X//' << 'SHAR_EOF' > 'def.english' && # ---------------------------------------------------------------------------- # Definitionen fuer Chess - Englisch # (c) 1990 by M. Laukien # ---------------------------------------------------------------------------- X # Menuedefinitionen: Der erste Buchstabe ist der Buchstabe, ueber den # die Funktion angewaehlt werden kann. Nicht benutzt werden duerfen # bei menu[] die Buchstaben a,b,c,d,e,f,g,h , da diese fuer die Zugeingabe # benoetigt werden. Zwischen Gross- und Kleinschrift wird nicht unter- # schieden. Die Reihenfolge der Menuepunkte darf nicht veraendert werden. X # amenue = Administrationsmenue # menue = Spielmenue # smenu = Setupmenue X amenu[0] "t[T] user vs. computer (training mode)" amenu[1] "s[S] display games" amenu[2] "d[D] delete games" X amenu[3] "1[1] white vs. computer (tournament mode)" amenu[4] "2[2] black vs. computer (tournament mode)" amenu[5] "3[3] white vs. other users (tournament mode)" amenu[6] "4[4] black vs. other users (tournament mode)" amenu[7] "5[5] show tournaments" amenu[8] "6[6] display highscore table" X amenu[9] "q[Q] quit" X smenu[0] "l[L] load game" # Laden smenu[1] "s[S] save game" # Speichern smenu[2] "-[-] clear" # Loeschen smenu[3] "=[=] next move: " # Seitenwechsel smenu[4] "q[Q] quit" # Ende X menu[0] "1[1] level : " # Spielstufe menu[1] "2[2] white : " # Weiss einstellen menu[2] "3[3] black : " # Schwarz einstellen menu[3] "m[M] monitor : " # Monitor menu[4] "![!] setup game" # Aufbauen menu[5] "t[T] take back move" # Zurueck menu[6] "i[I] info" # Informationen menu[7] "r[R] restart" # Neues Spiel menu[8] "q[Q] quit" # Ende menu[9] " [ESC] break" # UnterbrechenXp X # infostrings: Die Reihenfolge der infopunkte darf nicht veraendert werden. X info[0] "whos move ? : " # Farbe, die am Zug ist info[1] "number of moves : " # Anzahl der Zuege info[2] "value : " # Bewertung des Spiels info[3] "number of variants : " # Varianten im letzten Zug info[4] "var. / sec. : " # Varianten pro Sekunde info[5] "average : " # dito durchschnittlich info[6] "level : " # Spielstufe info[7] "min. calc. depth : " # Minimale Rechentiefe info[8] "max. calc. depth : " # Maximale Rechentiefe info[9] "last move : " # letzter Zug X # Statusinformationen: X thinking "thinking ..." # Computer denkt is_thinking "is thinking ..." # Gegner denkt patt "the game is a draw !" # Spiel ist Patt w_mate "check mate white !" # Weiss ist matt b_mate "check mate black !" # Schwarz ist matt w_chess "white is in check !" # Weiss ist im Schach b_chess "black is in check !" # Schwarz ist im Schach remis_3 "3 reps. -> remis !" # Remis bei 3-facher Wdh. w_up "white gives up !" # Aufgabe Weiss b_up "black gives up !" # Aufgabe Schwarz X # Startkommando: Wird vor Programmstart ausgefuehert. Falls nicht benoetigt, # auf "" setzen. X startcmd "" X # Sicherheitsabfrage: Die ersten beiden Buchstaben sollen Abkuerzungen # fuer "ja" und "nein" sein. X sure "ynAre you sure ? (y/n)" give_up "ynYou've had it man! Wanna quit ? (y/n)" X # Spielstufen fuer Uebungsspiel und Turnierspiel X tr_lv "3" # Trainingslevel to_lv "5" # Turnierlevel X # Diverese Strings: X tlist " white: black: moves: whos move ? " X # ^ ^ ^ ^ X # Ueberschrift fuer Spielliste Turnier X ulist " player: name: moves: whos move ? " X # ^ ^ ^ ^ X # Ueberschrift fuer Spielliste Training X scorelist" player: games: vs. comp.: score: " X # ^ ^ ^ ^ X # Ueberschrift fuer Spielliste Training X figtab "pnbrqkPNBRQK " # Figurentabelle press_key "<press any key>" # Taste duecken comp "computer" # Name des Computers white "white" # Weiss black "black" # Schwarz domove "move: " # Zug ausfuehren doset "set: " # Figur setzen enter "enter filename: " # Name eingeben opponent "enter opponent: " # Gegner eingeben figlist "lost pieces:" # Liste der geschlagenen Figuren error "error: " # Fehlermeldung not_allowed "Whoops! Not possible now." # Nicht erlaubt no_user "no such user !" # Kein User ison "yes" # Ein isoff "no" # Aus load_lib "loading the opening-library ..." # Lib. laden X SHAR_EOF chmod 0644 def.english || echo 'restore of def.english failed' Wc_c="`wc -c < 'def.english'`" test 4548 -eq "$Wc_c" || echo 'def.english: original size 4548, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= def.german ============== if test -f 'def.german' -a X"$1" != X"-c"; then echo 'x - skipping def.german (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting def.german (Text)' sed 's/^X//' << 'SHAR_EOF' > 'def.german' && # ---------------------------------------------------------------------------- # Standard Definitionen fuer Chess - Deutsch # (c) 1990 by M. Laukien # ---------------------------------------------------------------------------- X # menuedefinitionen: Der erste Buchstabe ist der Buchstabe, ueber den # die Funktion angewaehlt werden kann. Nicht benutzt werden duerfen # bei menu[] die Buchstaben a,b,c,d,e,f,g,h , da diese fuer die Zugeingabe # benoetigt werden. Zwischen Gross- und Kleinschrift wird nicht unter- # schieden. Die Reihenfolge der Menuepunkte darf nicht veraendert werden. X # amenue = Administrationsmenue # menue = Spielmenue # smenu = Setupmenue X amenu[0] "t[T] Trainingsspiel gegen Computer" amenu[1] "z[Z] Zeige Trainingsspiele" amenu[2] "l[L] Loesche Trainingsspiele" X amenu[3] "1[1] Turnierspiel mit Weiss gegen Computer" amenu[4] "2[2] Turnierspiel mit Schwarz gegen Computer" amenu[5] "3[3] Turnierspiel mit Weiss gegen anderen Spieler" amenu[6] "4[4] Turnierspiel mit Schwarz gegen anderen Spieler" amenu[7] "5[5] Zeige Turnierspiele" amenu[8] "6[6] Zeige Highscore-Liste" X amenu[9] "x[X] Ende" X smenu[0] "l[L] Laden" # Laden smenu[1] "s[S] Speichern" # Speichern smenu[2] "-[-] Loeschen" # Loeschen smenu[3] "=[=] Am Zug: " # Seitenwechsel smenu[4] "x[X] Ende" # Ende X menu[0] "l[L] Level : " # Spielstufe menu[1] "w[W] Weiss : " # Weiss einstellen menu[2] "s[S] Schwarz : " # Schwarz einstellen menu[3] "m[M] Monitor : " # Monitor menu[4] "![!] Aufbauen" # Speichern menu[5] "z[Z] Zurueck" # Zurueck menu[6] "i[I] Info" # Informationen menu[7] "n[N] Neustart" # Neues Spiel menu[8] "x[X] Ende" # Ende menu[9] " [ESC] Unterbrechen" # Unterbrechen X # Infostrings: Die Reihenfolge der Infopunkte darf nicht veraendert werden. X info[0] "Am Zug : " # Farbe, die am Zug ist info[1] "Anzahl der Zuege : " # Anzahl der Zuege info[2] "Bewertung : " # Bewertung des Spiels info[3] "Varianten : " # Varianten im letzten Zug info[4] "Var. pro Sek. : " # Varianten pro Sekunde info[5] "Durchschnitt : " # dito durchschnittlich info[6] "Stufe : " # Spielstufe info[7] "Rechentiefe min. : " # Minimale Rechentiefe info[8] "Rechentiefe max. : " # Maximale Rechentiefe info[9] "Letzter Zug : " # letzter Zug X # Statusinformationen: X thinking "Ich ueberlege ..." # Computer denkt is_thinking "ueberlegt ..." # Gegner denkt patt "Das Spiel ist patt !" # Spiel ist Patt w_mate "Weiss ist matt !" # Weiss ist matt b_mate "Schwarz ist matt !" # Schwarz ist matt w_chess "Weiss ist im Schach !" # Weiss ist im Schach b_chess "Schwarz ist im Schach !" # Schwarz ist im Schach remis_3 "3 * wiederholt -> Remis" # Remis bei 3-facher Wdh. w_up "Weiss gibt auf !" # Aufgabe Weiss b_up "Schwarz gibt auf !" # Aufgabe Schwarz X # Startkommando: Wird vor Programmstart ausgefuehert. Falls nicht benoetigt, # auf "" setzen. X startcmd "" X # Sicherheitsabfrage: Die ersten beiden Buchstaben sollen Abkuerzungen # fuer "ja" und "nein" sein. X sure "jnSind Sie sicher ? (J/N)" give_up "jnWirklich aufgeben ? (J/N)" X # Spielstufen fuer Uebungsspiel und Turnierspiel X tr_lv "3" # Trainingslevel to_lv "5" # Turnierlevel X # Diverese Strings: X tlist " Weiss: Schwarz: Zuege: Am Zug: " X # ^ ^ ^ ^ X # Ueberschrift fuer Spielliste Turnier X ulist " Spieler: Spielname: Zuege: Am Zug: " X # ^ ^ ^ ^ X # Ueberschrift fuer Spielliste Training X scorelist" Spieler: Spiele: Gegen Comp.: Punkte: " X # ^ ^ ^ ^ X # Ueberschrift fuer Spielliste Training X figtab "bsltdkBSLTDK " # Figurentabelle press_key "<Taste>" # Taste duecken comp "Rechner" # Name des Computers white "Weiss" # Weiss black "Schwarz" # Schwarz domove "Zug: " # Zug ausfuehren doset "Setze: " # Figur setzen enter "Namen eingeben: " # Name eingeben opponent "Gegner eingeben: " # Gegner eingeben figlist "Geschlagene Figuren:" # Liste der geschlagenen Figuren error "Fehler: " # Fehlermeldung not_allowed "Das ist jetzt nicht erlaubt !" # Nicht erlaubt no_user "Dieser User existiert nicht !" # Kein User ison "ja" # Ein isoff "nein" # Aus load_lib "Ich lade die Eroeffnungsbibliothek ..." # Lib. laden SHAR_EOF chmod 0644 def.german || echo 'restore of def.german failed' Wc_c="`wc -c < 'def.german'`" test 4581 -eq "$Wc_c" || echo 'def.german: original size 4581, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= man ============== if test -f 'man' -a X"$1" != X"-c"; then echo 'x - skipping man (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting man (Text)' sed 's/^X//' << 'SHAR_EOF' > 'man' && .pl 72 .AT 3 .TH xxxNAME xxxMANUAL .ad .SH NAME xxxNAME V2.7 \- Multiuserschachprogramm .SH SYNTAX .B xxxNAME [ .B \-d sprache ] [ .B \-t ] [ .B \-e ] .SH ALLGEMEINES .I xxxNAME bietet folgende Moeglichkeiten: .PP o Turnier- und Trainingsmodus .br o Spiel gegen Computer .br o Spiel gegen anderen Benutzer gleichzeitig .br X oder zeitversetzt .br o Anzeige aller im Moment gespielten Partien .br o Highscoreliste .br o Variable Spielstaerke .br o Demomodus, d.h. Computer spielt gegen sich selbst .br o Setup, d.h. es koennen beliebige Spielsituationen .br X aufgebaut werden. .br o Kontrollmodus, d.h. Computer kontrolliert nur die Zuege .br o Ruecknahme von beliebig vielen Zuegen .br o Grosse Eroeffnungs- und Eroeffnungsfehlerbibliothek X .SH BEDIENUNG Das Programm ist vollstaendig menuegefuehrt. Die Menuepunkte sind selbsterklaerend, und koennen durch den dazugehoerigen Buchstaben aufgerufen werden. Texteingaben werden in einem eigenem Fenster vorgenommen und durch <ENTER> abgeschlossen. Fehlermeldungen und Sicherheitsabfragen werden ebenfalls in einem eigenem Fenster angezeigt. .PP Mit CTRL-L kann der Bildschirm neu aufgebaut werden, falls dieser z.B. durch Stoerungen in der Telefonleitung (wenn ueber ein Modem gespielt wird) unlesbar ist. X .SH HAUPTMENUE X amenu[0] .br Hier wird direkt in das Schachmenue verzweigt, bei dem dann alle Menuepunkte erlaubt sind. Das Spiel laeuft gegen den Computer. Es findet allerdings kein Eintrag in die Highscoreliste statt. .PP amenu[1] .br Es werden alle persoenlichen Trainingsspiele angezeigt, dazu auch welche Farbe am Zug ist. .PP amenu[2] .br Der Name eines Trainingsspiels wird eingegeben, und anschliessend wird dieses Trainingsspiel geloescht. .PP amenu[3] .br amenu[4] .br Bei diesen Menuepunkten wird direkt in das Schachmenue verzweigt, bei dem allerdings nicht alle Menuepunkte erlaubt sind. Das Spiel laeuft gegen den Computer. Ein Eintrag in die Highscoreliste findet nach Beendigung des Spieles statt. .PP amenu[5] .br amenu[6] .br Auch hier wird direkt in das Schachmenue verzweigt, es sind wieder nicht alle Menuepunkte erlaubt. Das Spiel laeuft gegen einen anderen User, dessen Name abgefragt wird. Der Gegner kann entweder gleichzeitig spielen, oder zeitversetzt. Ein Eintrag in die Highscoreliste findet nach Beendigung des Spieles statt. .PP amenu[7] .br Es werden alle Turnierspiele ausgegeben, auch die von anderen Spielern. Zusaetzlich wird die Farbe des am Zug befindlichen angegeben. .PP amenu[8] .br Die Highscoreliste wird ausgegeben. Siehe hierzu auch 'HIGHSCORE'. .PP amenu[9] .br Dieser Punkt dient dem Verlassen des Programms. X .SH SCHACHMENUE X Im Schachmenue werden Zuege einfach durch das Ursprungsfeld und das Zielfeld angegeben, also z.B. e2-e4. Korrigiert werden kann mit der Backspace-Taste. .br .sp Ausserdem gibt es folgende Menuepunkte: .br .sp menu[0] .br Mit diesem Menuepunkt kann die Spielstaerke des Rechners eingestellt werden. (Nicht moeglich bei Turnierspielen) .PP menu[1] .br menu[2] .br Hier wird eingestellt, fuer welche Farbe der Rechner spielt. Es sind alle Kombinationen moeglich, auch dass der Rechner fuer beide Farben spielt (DEMO), oder dass der Rechner fuer keine Farbe spielt (nur Zugueberwachung). (Nicht moeglich bei Turnierspielen) .PP menu[3] .br Die Monitorfunktion kann an- und ausgeschaltet werden. Ist sie eingeschaltet, so wird in der untersten Zeile die im Moment beste bisher gefundene Variante angezeigt. .PP menu[4] .br Hier kommt man in das Setup-Menue. Von dort aus kann man dann auch Partien laden und speichern. (Nicht moeglich bei Turnierspielen) .PP menu[5] .br Dieser Menuepunkt dient der Ruecknahme eines Zuges. Es koennen beliebig viele Zuege zurueckgenommen werden. (Nicht moeglich bei Turnierspielen) .PP menu[6] .br Es werden einige Informationen zum Spiel ausgegeben. Siehe hierzu 'INFO'. .PP menu[7] .br Falls es sich um ein Trainingsspiel handelt, wird ein neues Spiel gestartet. .br Bei Turnierspielen entspricht dieser Menuepunkt der Aufgabe des Spiels, welches beendet wird. Anschliessend erfolgt ein Eintrag in die Highscoreliste. .PP menu[8] .br Nach einer Sicherheitsabfrage kommt man wieder ins Hauptmenue. .PP menu[9] .br Mittels der ESC-Taste kann die Berechnung eines Zuges jederzeit abgebrochen werden. Es wird dann der bis dahin beste Zug genommen. (Nicht moeglich bei Turnierspielen) X X .SH SETUP-MENUE X Im Setup-Menue kann auf jedes Feld eine beliebige Figur gesetzt werden. Dazu wird einfach zuerst das Feld angegeben, und dann die Figur, die auf das Feld gesetzt werden soll, z.B. e4-D setzt eine schwarze Dame auf das Feld e4. .br .sp Es gibt hier ausserdem folgende Moeglichkeiten: .br .sp smenu[0] .br smenu[1] .br Diese beiden Punkte dienen dem Laden und Speichern von Partien. .PP smenu[2] .br Hiermit wird das ganze Spielbrett geloescht. .PP smenu[3] .br Hier kann man auswaehlen, ob Weiss oder Schwarz am Zug sein soll. .PP smenu[4] .br Mit diesem Menuepunkt kommt man wieder zurueck ins Schachmenue. X .SH INFO X info[0] .br Hier wird angegeben, welche Farbe im Moment am Zug ist. .PP info[1] .br Hier wird die Anzahl der gespielten Zuege angegeben. .PP info[2] .br Hier wird eine Bewertung der Stellung vom Computer vorgenommen. Ein positiver Wert bedeutet, dass die Stellung fuer Weiss besser ist, ein negativer Wert bedeutet, dass die Stellung fuer Schwarz besser ist. .PP info[3] .br Hier wird die Anzahl der Varianten angegeben, die zur Ermittlung des letzten Zuges noetig waren. .PP info[4] .br Hier wird die Anzahl der pro Sekunde berechneten Varianten des letzten Zuges angegeben. .PP info[5] .br Hier wird der Durchschnitt der Anzahl der pro Sekunde berechneten Varianten von allen bisherigen Zuegen angegeben. Dies kann als ein Mass fuer die Geschwindigkeit des Rechners dienen. .PP info[6] .br Hier wird die aktuelle Spielstufe (Level) angezeigt. .PP info[7] .br Hier wird die minimale Rechentiefe angegeben, in Halbzuegen gemessen. .PP info[8] .br Hier wird die maximale Rechentiefe angegeben, in Halbzuegen gemessen. .PP info[9] .br Hier wird der letzte gespielte Zug angezeigt. X .SH SCHACHREGELN .I xxxNAME beherrscht neben den 'normalen' Regeln folgende Sonderregeln: .PP o Rochade (Um sie auszufuehren, muss der Zug des Koenigs .br X angegeben werden, z.B. 'kurze' Rochade Weiss: e1-g1) .br o Schlagen en passant .br o Remis bei dreifacher Wiederholung einer Stellung .br o 'Patt' des Koenigs .PP Folgende Regeln sind noch nicht implementiert: .PP o Umwandlung eines Bauern in eine andere Figur als .br X eine Dame .br o 50-Zuege-Regel X .SH HIGHSCORE .I xxxNAME berechnet die Highscoreliste folgendermassen: Am Anfang hat jeder Spieler 1000 Punkte. Fuer jedes gewonnene Spiel erhaelt der Gewinner 1/4 der Punkte des Verlierers, und der Verlierer bekommt dementsprechend 1/4 seiner Punkte abgezogen. Es lohnt sich also immer gegen einen staerkeren Spieler anzutreten, da man hier die meisten Punkte gewinnen kann. X .SH SPRACHE .I xxxNAME kann in jede beliebige Sprache uebersetzt werden. Dazu muss nur eine Datei mit dem Namen .I def.sprache erzeugt werden. Am besten kopiert man eine existierende Datei, z.B. .I def.german und uebersetzt diese dann in die gewuenschte Sprache. Das Programm wird dann mit .I xxxNAME \-d sprache aufgerufen. X .SH EROEFFNUNGSTEST Mit der Option \-t kann man die Eroeffnungsbibliothek auf Fehler pruefen. .I xxxNAME gibt dann eine Liste (Datei "error.op") mit allen Fehlern in der Bibliothek aus, und zwar mit Eroeffnungsnummer und Zugnummer. Dieser Test kann unter Umstaenden laengere Zeit benoetigen. X .SH EXPIRE .I xxxNAME mit der Option \-e loescht alle Turnierspiele, bei denen der letzte Zug mehr als xxxEXPIRE Tage zurueckliegt. Falls schon mehr als xxxMOVES Halbzuege gespielt wurden, wird die Partie fuer denjenigen als verloren eingetragen, der am Zug ist. Die Spieler werden dann mit einer mail benachrichtigt. SHAR_EOF chmod 0644 man || echo 'restore of man failed' Wc_c="`wc -c < 'man'`" test 7830 -eq "$Wc_c" || echo 'man: original size 7830, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= Makefile ============== if test -f 'Makefile' -a X"$1" != X"-c"; then echo 'x - skipping Makefile (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting Makefile (Text)' sed 's/^X//' << 'SHAR_EOF' > 'Makefile' && # --------------------------------------------------------------------- # # Name: UnixChess V2.7 # Schachprogramm # # Programmteil: Makefile # # Autor: Marc Laukien # # --------------------------------------------------------------------- X # ----------------- Ab hier Eintragungen vornehmen -------------------- # ----------------- Make the necessary changes -------------------- X # Name des Schachprogramms: # Name of the chessprogram: NAME = chess X # Standardsprache, falls '-d sprache' weggelassen wird: # Default language, if invoked without '-d language': LANG = english #LANG = german X # Aus welchem def.* die Menues ins Manual uebernommen werden: # Defines from what def.* file the menunames will be included in the manual: MANLANG = english #MANLANG = german X # Anzahl der Tage fuer expire: # Number of days for the expire: EXPIRE = 14 # Anzahl der Halbzuege, bei denen expire noch nicht in # die Highscoreliste eintraegt: # Number of moves, with which the expire won't create an entry in # the highscoretable: MOVES = 4 X # ----------------- Pfade ---------------------------------------------- # ----------------- Paths ---------------------------------------------- X # Directorys, in denen installiert wird: # Installation directorys: LIBDIR = /usr/games/lib/Chess BINDIR = /usr/games X # Kapitel/Directory in dem das Manual installiert wird: # Chapter/Directory in which the manual will be installed: MANUAL = LOCAL MANDIR = /usr/man/man.LOCAL CATDIR = /usr/man/cat.LOCAL X # Mailer fuer den expire # Mailer for expire MAIL = /bin/mail X # ----------------- Angaben zum System -------------------------------- # ----------------- System informations -------------------------------- X # Shared Library: #LIBSH = LIBSH = -lc_s X # Curses library FLAGS = -O LIB = -lcurses X # Filemode, falls unter SUID installiert werden soll: # Filemode, if you like to install with SUID: MODE1 = 4711 MODE2 = 600 MODE3 = 700 X # Filemode, falls unter SGID installiert werden soll: # Filemode, if you like to install with SGID: #MODE1 = 2771 #MODE2 = 660 #MODE3 = 770 X # Shar: SHAR = shar -n UnixChess -o $(NAME) -L 50 -a -c -s ml@brumuc.muc.sub.org X # ----------------- Keine Aenderung ab hier !!! ------------------------ # ----------------- Don't touch the rest !!! ------------------------ X CFLAGS = $(FLAGS) -DMAIL=\"$(MAIL)\" \ X -DEXPIRE=$(EXPIRE) -DMOVES=$(MOVES) -DLANG=\"$(LANG)\" X ALLSRCS1 = ch/value.c ch/main.c ch/move.c ch/comp.c \ X ch/utility.c ch/threat.c ch/init.c ch/list.c \ X ch/archiv.c ch/open.c ch/stat.c X ALLSRCS2 = ad/main.c ad/init.c ad/utility.c ad/monitor.c \ X ad/window.c ad/move.c ad/interrupt.c ad/load.c \ X ad/menu.c ad/lock.c ad/admin.c ad/screen.c ad/id.c \ X ad/score.c ad/training.c ad/tour_user.c \ X ad/tour_comp.c ad/expire.c ad/setup.c X ALLSRCS3 = br/break.c X ALLSRCS = $(ALLSRCS1) $(ALLSRCS2) $(ALLSRCS3) X ALLHDRS = ad/ad.h ch/ch.h ch/ph.h ad/patchlevel.h X # don't delete the next line ! # op start ALLOP = op/op.albinsgegam op/op.aljechin op/op.b2b4 op/op.benoni \ X op/op.bird op/op.budapestgam op/op.caro-kann op/op.damenbaspie \ X op/op.damengam op/op.damenind op/op.dreispring op/op.englisch \ X op/op.evansgam op/op.franz op/op.gruenfeld op/op.holland \ X op/op.indisch op/op.italienisch op/op.katalanisch op/op.koenigsgam \ X op/op.koenigsind op/op.laeufer op/op.nimzowitsch op/op.nordgam \ X op/op.philidor op/op.ponziani op/op.reti op/op.russisch \ X op/op.schottisch op/op.sizilian op/op.skandinav op/op.spanisch \ X op/op.ufimzew op/op.ungarische op/op.unregel op/op.vierspring \ X op/op.wiener op/op.zweispring # op end # don't delete the previous line ! X ALLDEF = def.english def.german X ALLARCH = README.eng README.ger $(ALLSRCS) $(ALLHDRS) ad/lex.l \ X ad/patchlevel.h $(ALLOP) $(ALLDEF) man Makefile X ALLOBJ1 = ch/value.o ch/main.o ch/move.o ch/comp.o \ X ch/utility.o ch/threat.o ch/init.o ch/list.o \ X ch/archiv.o ch/open.o ch/stat.o X ALLOBJ2 = ad/init.o ad/utility.o ad/monitor.o ad/window.o \ X ad/move.o ad/interrupt.o ad/load.o ad/menu.o ad/lock.o \ X ad/admin.o ad/screen.o ad/id.o ad/score.o \ X ad/training.o ad/tour_user.o ad/tour_comp.o \ X ad/expire.o ad/lex.o ad/setup.o X ALLOBJ3 = br/break.o X all: $(NAME) chbrk chess.op X $(NAME): $(ALLOBJ1) $(ALLOBJ2) ad/main.o X -mkdir save X -mkdir training X touch score.list X X $(CC) $(CFLAGS) -o $(NAME) \ X $(ALLOBJ1) $(ALLOBJ2) ad/main.o $(LIB) -ll -lm $(LIBSH) X chmod $(MODE1) $(NAME) X chbrk: $(ALLOBJ3) X $(CC) $(CFLAGS) -o chbrk $(LIBSH) \ X $(ALLOBJ3) X chmod $(MODE1) chbrk X chess.op: $(ALLOP) Makefile X cat $(ALLOP) | grep -v "^#" > chess.op X chmod $(MODE2) chess.op X lint.out: $(ALLSRCS1) $(ALLSRCS2) X lint $(ALLSRCS1) > lint.out X lint $(ALLSRCS2) >> lint.out X man.$(MANUAL): man Makefile def.$(MANLANG) X egrep '^amenu\[|^smenu\[|^menu\[' def.$(MANLANG) |\ X sed \ X -e 's/\//\\\//g' \ X -e 's/^/s\//g' \ X -e 's/\"[^"]*$$/\/g/g' \ X -e 's/[ ]*\"./\//g' \ X -e 's/\[/\\[/g' \ X -e 's/\]/\\]/g' \ X > man.tmp X X egrep '^info\[' def.$(MANLANG) |\ X sed \ X -e 's/\//\\\//g' \ X -e 's/^/s\//g' \ X -e 's/\"[^"]*$$/\/g/g' \ X -e 's/[ ]*\"/\//g' \ X -e 's/\[/\\[/g' \ X -e 's/\]/\\]/g' \ X >> man.tmp X X echo "s/xxxNAME/$(NAME)/g" >> man.tmp X echo "s/xxxMANUAL/$(MANUAL)/g" >> man.tmp X echo "s/xxxEXPIRE/$(EXPIRE)/g" >> man.tmp X echo "s/xxxMOVES/$(MOVES)/g" >> man.tmp X X sed -f man.tmp man > man.$(MANUAL) X rm -f man.tmp X cat.$(MANUAL): man.$(MANUAL) X nroff -man man.$(MANUAL) > cat.$(MANUAL) X install_man: man.$(MANUAL) X cp man.$(MANUAL) $(MANDIR)/$(NAME).$(MANUAL) X chmod 644 $(MANDIR)/$(NAME).$(MANUAL) X install_cat: cat.$(MANUAL) X cp cat.$(MANUAL) $(CATDIR)/$(NAME).$(MANUAL) X chmod 644 $(CATDIR)/$(NAME).$(MANUAL) X install: all ad/main2.o X -mkdir $(BINDIR) X -mkdir $(LIBDIR) X chmod $(MODE3) $(LIBDIR) X -mkdir $(LIBDIR)/save X chmod $(MODE3) $(LIBDIR)/save X -mkdir $(LIBDIR)/training X chmod $(MODE3) $(LIBDIR)/training X X $(CC) $(CFLAGS) -o $(BINDIR)/$(NAME) \ X $(ALLOBJ1) $(ALLOBJ2) ad/main2.o $(LIB) -ll -lm $(LIBSH) X chmod $(MODE1) $(BINDIR)/$(NAME) X X cp chbrk $(LIBDIR) X chmod $(MODE1) $(LIBDIR)/chbrk X X cp def.* $(LIBDIR) X cp chess.op $(LIBDIR) X chmod $(MODE2) $(LIBDIR)/def.* $(LIBDIR)/chess.op X X touch $(LIBDIR)/score.list X chmod $(MODE2) $(LIBDIR)/score.list X X @echo "\n >>> Welcome to UNIX-Chess ! <<<" X remove: X -rm -rf $(LIBDIR)/save X -rm -rf $(LIBDIR)/training X -rm -f $(BINDIR)/$(NAME) X -rm -f $(LIBDIR)/chbrk X -rm -f $(LIBDIR)/def.* X -rm -f $(LIBDIR)/chess.op X -rm -f $(LIBDIR)/error.op X -rm -f $(LIBDIR)/score.list X -rm -f $(MANDIR)/$(NAME).$(MANUAL) X -rm -f $(CATDIR)/$(NAME).$(MANUAL) X dist: $(ALLARCH) X $(SHAR) $(ALLARCH) X chess.arc: $(ALLARCH) X -rm -f chess.arc X arc -a chess.arc $(ALLARCH) X chess.zoo: $(ALLARCH) X -rm -f chess.zoo X zoo -add chess.zoo $(ALLARCH) X chess.tar: $(ALLARCH) X tar cvf chess.tar $(ALLARCH) X chess.tar.Z: chess.tar X @if test -r chess.tar.Z ;\ X then \ X rm -f chess.tar.Z ;\ X fi X compress chess.tar X listing: $(ALLSRCS) $(ALLHDRS) X cpr -Xp9w83 $(ALLSRCS) $(ALLHDRS) > listing X clean: X -rm -f ad/*.o X -rm -f ch/*.o X -rm -f br/*.o X clobber: clean X -rm -f $(NAME) X -rm -f $(NAME).?? X -rm -f chbrk X -rm -f ad/main2.c X -rm -f chess.op X -rm -f error.op X -rm -f lint.out X -rm -f man.$(MANUAL) X -rm -f cat.$(MANUAL) X -rm -f core X -rm -f mon.out X -rm -f lint.out X -rm -f listing X -rm -f *.bak X -rm -f *.shar X -rm -f score.list X -rm -r -f training X -rm -r -f save X ad/main2.c: ad/main.c X ln ad/main.c ad/main2.c X ad/main2.o: ad/main2.c X $(CC) $(CFLAGS) -DWORKDIR=\"$(LIBDIR)\" -c ad/main2.c X mv main2.o ad X # Build a list of all op.* files oplist: Makefile op X @echo 'make oplist is running on the following files: ' X @echo op/op.* X @-rm -f op.tmp X X @for i in op/op.* ; do \ X echo $$i >> op.tmp ; \ X done X X @cp Makefile Makefile.bak X @echo 'ed - Makefile <<\ EOF' > oplist X @echo '/op start/a' >> oplist X X @awk \ X 'BEGIN { ORS=" " ; i= -1 ; j=1 ; print "ALLOP = " } \ X i++ >= 3 { i=0 ; ORS="\n" ; print " \\" ; ORS=" " ; \ X j++ ; print " " } \ X { print $$1 } \ X END { print "" }' op.tmp >> oplist X X @echo '' >> oplist X @echo '.' >> oplist X @echo '.+1,/op end/-1d' >> oplist X @echo 'w' >> oplist X @echo 'q' >> oplist X @echo 'EOF' >> oplist X X @sh oplist X X -rm -f op.tmp oplist X # Build a list of .h file dependencies. depend: X @echo 'make depend is running on the following files: ' X @echo $(ALLSRCS) X @rm -f makedep eddep X @for i in $(ALLSRCS); do\ X $(CC) -E $(CFLAGS) $$i |\ X grep '^#' |\ X awk '{ print $$3 }' |\ X grep '^"' |\ X grep -v "/usr/include" |\ X sed -e 's|/[^/]*/\.\.||g' -e 's|"||g' |\ X sort -u |\ X awk "BEGIN { of = \"`basename $$i .c`\" \".o: \"; rec = of } \ X { rec = rec \" \" \$$0 } \ X END { print \"`dirname $$i`/\" rec ; \ X print \" $$(CC) $$(CFLAGS) -c $$i\" ; \ X print \" mv `basename $$i .c`.o `dirname $$i`\" }" \ X >> makedep ; \ X done X @echo '$$r makedep' >>eddep X @echo '/^# DO NOT DELETE THIS LINE/+1,$$d' >>eddep X @echo '$$r makedep' >>eddep X @echo 'w' >>eddep X @cp Makefile Makefile.bak X @ed - Makefile < eddep X @rm -f eddep makedep X # DO NOT DELETE THIS LINE -- make depend uses it ch/value.o: ch/ch.h ch/ph.h ch/value.c X $(CC) $(CFLAGS) -c ch/value.c X mv value.o ch ch/main.o: ch/ch.h ch/main.c X $(CC) $(CFLAGS) -c ch/main.c X mv main.o ch ch/move.o: ch/ch.h ch/move.c X $(CC) $(CFLAGS) -c ch/move.c X mv move.o ch ch/comp.o: ch/ch.h ch/comp.c X $(CC) $(CFLAGS) -c ch/comp.c X mv comp.o ch ch/utility.o: ch/ch.h ch/utility.c X $(CC) $(CFLAGS) -c ch/utility.c X mv utility.o ch ch/threat.o: ch/ch.h ch/threat.c X $(CC) $(CFLAGS) -c ch/threat.c X mv threat.o ch ch/init.o: ch/ch.h ch/init.c X $(CC) $(CFLAGS) -c ch/init.c X mv init.o ch ch/list.o: ch/ch.h ch/list.c X $(CC) $(CFLAGS) -c ch/list.c X mv list.o ch ch/archiv.o: ch/archiv.c ch/ch.h X $(CC) $(CFLAGS) -c ch/archiv.c X mv archiv.o ch ch/open.o: ch/ch.h ch/open.c ch/ph.h X $(CC) $(CFLAGS) -c ch/open.c X mv open.o ch ch/stat.o: ch/ch.h ch/ph.h ch/stat.c X $(CC) $(CFLAGS) -c ch/stat.c X mv stat.o ch ad/main.o: ad/ad.h ad/main.c X $(CC) $(CFLAGS) -c ad/main.c X mv main.o ad ad/init.o: ad/ad.h ad/init.c X $(CC) $(CFLAGS) -c ad/init.c X mv init.o ad ad/utility.o: ad/ad.h ad/utility.c X $(CC) $(CFLAGS) -c ad/utility.c X mv utility.o ad ad/monitor.o: ad/ad.h ad/monitor.c X $(CC) $(CFLAGS) -c ad/monitor.c X mv monitor.o ad ad/window.o: ad/ad.h ad/window.c X $(CC) $(CFLAGS) -c ad/window.c X mv window.o ad ad/move.o: ad/ad.h ad/move.c X $(CC) $(CFLAGS) -c ad/move.c X mv move.o ad ad/interrupt.o: ad/ad.h ad/interrupt.c X $(CC) $(CFLAGS) -c ad/interrupt.c X mv interrupt.o ad ad/load.o: ad/ad.h ad/load.c X $(CC) $(CFLAGS) -c ad/load.c X mv load.o ad ad/menu.o: ad/ad.h ad/menu.c X $(CC) $(CFLAGS) -c ad/menu.c X mv menu.o ad ad/lock.o: ad/ad.h ad/lock.c X $(CC) $(CFLAGS) -c ad/lock.c X mv lock.o ad ad/admin.o: ad/ad.h ad/admin.c X $(CC) $(CFLAGS) -c ad/admin.c X mv admin.o ad ad/screen.o: ad/ad.h ad/patchlevel.h ad/screen.c X $(CC) $(CFLAGS) -c ad/screen.c X mv screen.o ad ad/id.o: ad/ad.h ad/id.c X $(CC) $(CFLAGS) -c ad/id.c X mv id.o ad ad/score.o: ad/ad.h ad/score.c X $(CC) $(CFLAGS) -c ad/score.c X mv score.o ad ad/training.o: ad/ad.h ad/training.c X $(CC) $(CFLAGS) -c ad/training.c X mv training.o ad ad/tour_user.o: ad/ad.h ad/tour_user.c X $(CC) $(CFLAGS) -c ad/tour_user.c X mv tour_user.o ad ad/tour_comp.o: ad/ad.h ad/tour_comp.c X $(CC) $(CFLAGS) -c ad/tour_comp.c X mv tour_comp.o ad ad/expire.o: ad/ad.h ad/expire.c X $(CC) $(CFLAGS) -c ad/expire.c X mv expire.o ad ad/setup.o: ad/ad.h ad/setup.c X $(CC) $(CFLAGS) -c ad/setup.c X mv setup.o ad br/break.o: br/break.c X $(CC) $(CFLAGS) -c br/break.c X mv break.o br SHAR_EOF chmod 0644 Makefile || echo 'restore of Makefile failed' Wc_c="`wc -c < 'Makefile'`" test 11920 -eq "$Wc_c" || echo 'Makefile: original size 11920, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi rm -f _shar_seq_.tmp echo You have unpacked the last part exit 0 -- / | -: Marc Laukien :- | /__ | | _ _ __ / \ /_ / / | ml@brumuc.muc.sub.org | / \/ | / / / /____/ / /__/ | sigma@salyko.doit.sub.org | / | /__/ /__