3 ms·
Yes, I found those rules unclear. My version: 1. The goal is to capture all the black pieces, which never move. 2. Move one white piece each turn, using the
by stevage 3y ago
Yes, I found those rules unclear.
My version:
1. The goal is to capture all the black pieces, which never move.
2. Move one white piece each turn, using the basic rules of chess piece movement. You can't move through red obstacles. Pawns don't promote. There is no check.
3. When you capture a piece (black or white), your white piece turns into the type of piece you just captured.
- zzo38computer 3y agoYes, that is much better. Then, the code that I wrote is OK (I think) except I did not implement capturing white pieces (although if white pieces can capture white pieces and change into the same piece, then effectively the white piece can become vacant if it can reach another white piece).
- zzo38computer 3y agoHere is the updated code. Push D to destroy the selected white piece (if it meets the criteria for being destroyed). ; Echo Chess (InputXY) (Control (INIT $Cursor 1 1 0 0 Create =@cur) ) ($Cursor Player (Image "Cursor0" "Cursor1") (DefaultImage ()) (Density -10) (CREATE LOOP 0 1 50 Animate) ) ($Tile (Image "Tile0" "Tile1") (Density 10) (INIT Loc + 1 band =Image) (CLICK @cur ,ObjBelow #Move Loc ,Send . 1) ) ($White Input (Image "P" "N" "B" "R" "Q" "K") (CLICK @cur Loc ,MoveTo) (#Move ,:movable if Arg1 Arg2 MoveTo . Arg3 if From ,Image =Image From ,Destroy . (=P $Black) lnot if WinLevel then then @cur Loc ,MoveTo . then ) (:movable Image (case (0 :pawn) (1 :knight) (2 :bishop) (3 :rook) (4 :queen) (5 :king) ) ) (:pawn Yloc Arg2 1 + eq Xloc Arg1 Delta Arg3 eq land) (:knight Xloc Arg1 Delta dup * Yloc Arg2 Delta dup * + 5 eq) (:bishop Xloc Arg1 Delta Yloc Arg2 Delta eq if =:queen else 0 then) (:rook Xloc Arg1 Delta Yloc Arg2 Delta land if 0 else =:queen then) (:queen From Seek =%d Loc begin %d NewXY over over ObjTopAt dup From eq if . . ret then ,Class $Tile ne until . . 0) (:king From Chebyshev 1 eq) (#Destroy From Self ne if From #Move Loc 1 ,SendEx . then Destroyed lnot ) ('D @cur Coloc if $White #Destroy Loc BroadcastAnd . then ) ) ($Black (Image "PB" "NB" "BB" "RB" "QB" "KB") (CLICK @cur ,ObjBelow #Move Loc 1 ,SendEx . 1) ) It is also possible to add more pieces e.g. Chinese cannon, or other kind of changes if desired.