简陋国际象棋v0.1

sh/bash/dash/ksh/zsh等Shell脚本
头像
solcomo
帖子: 2838
注册时间: 2007-04-25 13:12

简陋国际象棋v0.1

#1

帖子 solcomo » 2008-07-16 16:26

:D 无任何规则

代码: 全选

#!/bin/bash

w_rook=♖
w_knight=♘
w_bishop=♗
w_queen=♕
w_king=♔
w_pawns=♙

b_rook=♜
b_knight=♞
b_bishop=♝
b_queen=♛
b_king=♚
b_pawns=♟

all=('' $w_rook $w_knight $w_bishop $w_queen $w_king $w_bishop $w_knight $w_rook \
     $w_pawns $w_pawns $w_pawns $w_pawns $w_pawns $w_pawns $w_pawns $w_pawns \
     ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' \
     ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' \
     ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' \
     ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' \
     $b_pawns $b_pawns $b_pawns $b_pawns $b_pawns $b_pawns $b_pawns $b_pawns \
     $b_rook $b_knight $b_bishop $b_queen $b_king $b_bishop $b_knight $b_rook)

cat <<EOF
  ╭───────────────╮
 8│${all[57]} ${all[58]} ${all[59]} ${all[60]} ${all[61]} ${all[62]} ${all[63]} ${all[64]}│
 7│${all[49]} ${all[50]} ${all[51]} ${all[52]} ${all[53]} ${all[54]} ${all[55]} ${all[56]}│
 6│${all[41]} ${all[42]} ${all[43]} ${all[44]} ${all[45]} ${all[46]} ${all[47]} ${all[48]}│
 5│${all[33]} ${all[34]} ${all[35]} ${all[36]} ${all[37]} ${all[38]} ${all[39]} ${all[40]}│
 4│${all[25]} ${all[26]} ${all[27]} ${all[28]} ${all[29]} ${all[30]} ${all[31]} ${all[32]}│
 3│${all[17]} ${all[18]} ${all[19]} ${all[20]} ${all[21]} ${all[22]} ${all[23]} ${all[24]}│
 2│${all[9]} ${all[10]} ${all[11]} ${all[12]} ${all[13]} ${all[14]} ${all[15]} ${all[16]}│
 1│${all[1]} ${all[2]} ${all[3]} ${all[4]} ${all[5]} ${all[6]} ${all[7]} ${all[8]}│
  ╰───────────────╯
   A B C D E F G H

EOF

echo -ne '\e[6n';read -sdR sign;sign=`echo "$sign" | sed -e 's/.*\[//g' -e 's/;.*//g'`

while true;do
	echo -ne "\033[$(($sign-1));6H      "
	echo -ne "\033[$(($sign-1));1HPiece:"
	read piece
	if [[ "$piece" =~ ^[a-hA-H][1-8]$ ]];then
		r=`echo $piece | cut -b2`
		c=`echo $piece | cut -b1 | sed -e 's/a/1/I' -e 's/b/2/I' -e 's/c/3/I' -e 's/d/4/I' -e 's/e/5/I' -e 's/f/6/I' -e 's/g/7/I' -e 's/h/8/I'`
		piece=${all[$(($c+$((($r-1)*8))))]}
	else
		echo -ne "\033[$sign;1HWithout the piece" && continue
	fi
	if [[ "$piece" =~ [♜♞♝♛♚♟♖♘♗♕♔♙] ]];then
		echo -ne "\033[$sign;1H$piece                                          "
		echo -ne "\033[$(($sign-1));13H                                        "
		echo -ne "\033[$(($sign-1));13HTo:"
		read pos
		if [[ "$pos" =~ ^[a-hA-H][1-8]$ ]];then
			pr=`echo $pos | cut -b2`
			pc=`echo $pos | cut -b1 | sed -e 's/a/1/I' -e 's/b/2/I' -e 's/c/3/I' -e 's/d/4/I' -e 's/e/5/I' -e 's/f/6/I' -e 's/g/7/I' -e 's/h/8/I'`
			arrnum=$(($pc+$((($pr-1)*8))))
			arrpos=${all[$arrnum]}
			echo -ne "\033[$sign;13H$pos"
			all[$(($pc+$((($pr-1)*8))))]=$piece
			all[$(($c+$((($r-1)*8))))]=' '
			echo -ne "\033[$(($sign-$pr-3));$(($pc*2+2))H${all[$(($pc+$((($pr-1)*8))))]}"
			echo -ne "\033[$(($sign-$r-3));$(($c*2+2))H${all[$(($c+$((($r-1)*8))))]}"
		else
			echo -ne "\033[$sign;1HWithout the pos" && continue
		fi
	else
		echo -ne "\033[$sign;1HWithout the piece" && continue
	fi
done

代码: 全选

  ╭───────────────╮
 8│♜   ♝   ♜   ♚  │
 7│♟ ♟   ♞   ♟ ♝ ♟│
 6│    ♟ ♖   ♞ ♟  │
 5│        ♟      │
 4│    ♙   ♙      │
 3│    ♘   ♗ ♘   ♙│
 2│♙ ♙   ♙   ♙ ♙  │
 1│    ♔         ♖│
  ╰───────────────╯
   A B C D E F G H
Piece:      To:e3                                   
♗           e3      
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

#2

帖子 bones7456 » 2008-07-16 16:29

先顶了再运行...
关注我的blog: ε==3
头像
lovewine
帖子: 1233
注册时间: 2006-03-25 10:36
联系:

#3

帖子 lovewine » 2008-07-16 16:29

有gnuchess珠玉在前, 这个shell 程序估计没有名堂可做了。
楼主辛苦了,创意不错。
让自由的声音传传传传传传传传天下。。。
Spread the words of freedom.
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

#4

帖子 bones7456 » 2008-07-16 16:33

赞一个

汗一个
关注我的blog: ε==3
头像
solcomo
帖子: 2838
注册时间: 2007-04-25 13:12

#5

帖子 solcomo » 2008-07-16 16:33

lovewine 写了:有gnuchess珠玉在前, 这个shell 程序估计没有名堂可做了。
楼主辛苦了,创意不错。
gunchess :shock:
没玩过
下来玩玩
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

#6

帖子 bones7456 » 2008-07-16 16:34

其实AI可以调用其他程序来作的哦...
关注我的blog: ε==3
头像
solcomo
帖子: 2838
注册时间: 2007-04-25 13:12

#7

帖子 solcomo » 2008-07-16 16:36

bones7456 写了:其实AI可以调用其他程序来作的哦...
...怎么调用...
问题是现在连走棋规则都弄不出来..
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#8

帖子 eexpress » 2008-07-16 16:37

c吧
● 鸣学
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

#9

帖子 bones7456 » 2008-07-16 16:40

c了就没意思了啊,呵呵,不就是整着好玩嘛
关注我的blog: ε==3
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

#10

帖子 xiooli » 2008-07-16 16:45

不会玩任何棋类和牌类的超级纯粹强悍难遇前无古人后无来者的人高傲滴飘过~~~~~~~
头像
solcomo
帖子: 2838
注册时间: 2007-04-25 13:12

#11

帖子 solcomo » 2008-07-16 16:52

xiooli 写了:不会玩任何棋类和牌类的超级纯粹强悍难遇前无古人后无来者的人高傲滴飘过~~~~~~~
我也只是在遥远的小时候玩过...
现在就记得基本规则了...
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

#12

帖子 xiooli » 2008-07-16 16:57

怎么走棋啊?
头像
solcomo
帖子: 2838
注册时间: 2007-04-25 13:12

#13

帖子 solcomo » 2008-07-16 17:01

xiooli 写了:怎么走棋啊?
:shock: 按棋盘上的坐标来啊

piece: 的坐标一定要有棋子
to: 就随便你去哪了,把自己的王吃了都行 :lol:
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
头像
syrano
帖子: 4313
注册时间: 2007-10-06 18:40

#14

帖子 syrano » 2008-07-16 17:08

solcomo 写了:
xiooli 写了:怎么走棋啊?
:shock: 按棋盘上的坐标来啊

piece: 的坐标一定要有棋子
to: 就随便你去哪了,把自己的王吃了都行 :lol:
一直用jin,上FICS(free internet chess server)跟高手玩。
上次由 syrano 在 2008-07-16 17:16,总共编辑 1 次。
E=m c^2
头像
kofshower
帖子: 1343
注册时间: 2007-03-13 11:23
联系:

#15

帖子 kofshower » 2008-07-16 17:16

syrano 写了:
solcomo 写了:
xiooli 写了:怎么走棋啊?
:shock: 按棋盘上的坐标来啊

piece: 的坐标一定要有棋子
to: 就随便你去哪了,把自己的王吃了都行 :lol:
一直用Jinx,上网跟高手玩。
jinx是什么?科普先?jinx=谢军?
"We are all in the mud, but some of us are looking at the stars." (Oscar Wilde)
We are not born for ourselves.
人生天地间,并非为自己
Homepage:http://sites.google.com/site/polarisnotme/
回复