不用库的python斗兽棋源代码
时间: 2023-07-08 22:53:50 浏览: 57
好的,以下是一个简单的不依赖库的Python斗兽棋源代码,仅供参考:
```
# 斗兽棋游戏
# 定义棋盘
board = [
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']
]
# 定义棋子
# 1:狮子 2:虎 3:豹 4:狼 5:狗 6:猫 7:鼠 8:象
pieces = {
'1': '狮',
'2': '虎',
'3': '豹',
'4': '狼',
'5': '狗',
'6': '猫',
'7': '鼠',
'8': '象'
}
# 显示棋盘
def show_board():
print(' ', end='')
for i in range(9):
print(' ' + str(i + 1) + ' ', end='')
print()
for i in range(9):
print(str(i + 1) + ' ', end='')
for j in range(9):
print('|' + board[i][j], end='')
print('|')
print(' ' + '-' * 17)
# 获取坐标
def get_coord():
x = input('请输入横坐标:')
y = input('请输入纵坐标:')
return int(x) - 1, int(y) - 1
# 判断是否越界
def is_out_of_range(x, y):
if x < 0 or x > 8 or y < 0 or y > 8:
print('坐标越界,请重新输入!')
return True
return False
# 判断是否有棋子
def has_piece(x, y):
if board[x][y] != ' ':
print('该位置已有棋子,请重新输入!')
return True
return False
# 判断是否可以移动
def can_move(x1, y1, x2, y2):
piece1 = board[x1][y1]
piece2 = board[x2][y2]
if piece1 == ' ':
print('该位置没有棋子,请重新输入!')
return False
if piece2 != ' ':
print('目标位置已有棋子,请重新输入!')
return False
if x1 == x2 and y1 == y2:
print('目标位置与当前位置相同,请重新输入!')
return False
if piece1 == '1' and piece2 == '8':
print('不能吃自己的棋子,请重新输入!')
return False
if piece1 != '1' and piece2 == '1':
if y1 != y2 and x1 != x2:
print('狮、虎、豹、狼、狗不能跳河,请重新输入!')
return False
if piece1 == '7':
print('鼠不能吃象,请重新输入!')
return False
if piece1 == '8' and piece2 == '7':
print('象不能下水,请重新输入!')
return False
if piece1 == '7' and piece2 == '1':
return True
if y1 == y2:
for i in range(min(x1, x2) + 1, max(x1, x2)):
if board[i][y1] != ' ':
print('中间有棋子挡路,请重新输入!')
return False
return True
if x1 == x2:
for i in range(min(y1, y2) + 1, max(y1, y2)):
if board[x1][i] != ' ':
print('中间有棋子挡路,请重新输入!')
return False
return True
print('只能横着或竖着移动,请重新输入!')
return False
# 移动棋子
def move_piece():
print('请移动棋子:')
while True:
x1, y1 = get_coord()
if is_out_of_range(x1, y1) or has_piece(x1, y1):
continue
x2, y2 = get_coord()
if is_out_of_range(x2, y2) or not can_move(x1, y1, x2, y2):
continue
board[x2][y2] = board[x1][y1]
board[x1][y1] = ' '
break
# 判断游戏是否结束
def is_game_over():
red_lion_count = 0
black_lion_count = 0
for i in range(9):
for j in range(9):
if board[i][j] == '1':
if i < 3:
black_lion_count += 1
else:
red_lion_count += 1
if red_lion_count == 0:
print('黑方获胜!')
return True
if black_lion_count == 0:
print('红方获胜!')
return True
return False
# 游戏循环
while True:
show_board()
move_piece()
if is_game_over():
break
```
这个源代码实现了基本的斗兽棋游戏逻辑,但是还有很多可以改进和扩展的地方,例如添加更多的游戏规则和特殊棋子能力等。