用户:小多6tl4查看:2 回复:2 评论:2 创建时间:2022-07-27T12:20:04
【作品展示】

【作品介绍】
哈哈1.可以双人对战
2.可以分辨谁赢
3.缺点:转不了积木模式
请点赞加油,我就继续努力的
谢谢
【作品源代码】
# 1、画棋盘,初始化棋盘
from turtle import *
screensize()
tracer(0)
for i in range(15): # 画横向
penup()
goto(-280, -280+i*40)
pendown()
fd(560)
left(90)
for i in range(15): # 画竖向
penup()
goto(-280+i*40, -280)
pendown()
fd(560)
penup() # 画标点
goto(0, 0)
dot()
goto(160, 160)
dot()
goto(-160, 160)
dot()
goto(160, -160)
dot()
goto(-160, -160)
dot()
#如果要使用列表创建一个二维数组,可以使用生成器来辅助实现。
#棋盘上每一个点初始值为0
arr = [[0 for i in range(15)] for j in range(15)]
# 3、判断4个方向是否连成五个子
def fun_null(x, y):
return
def black_is_end(i, j):
global arr
for m in range(11): # 竖向
if arr[m][j] == 1 and arr[m+1][j] == 1 and arr[m+2][j] == 1 and \
arr[m+3][j] == 1 and arr[m+4][j] == 1:
print("游戏结束,黑子胜利!")
onscreenclick(fun_null)
for m in range(11): # 横向
if arr[i][m] == 1 and arr[i][m+1] == 1 and arr[i][m+2] == 1 and \
arr[i][m+3] == 1 and arr[i][m+4] == 1:
print("游戏结束,黑子胜利!")
onscreenclick(fun_null)
if i <= j: # \向
m = j-i
for k in range(m, 11):
if arr[k-m][k] == 1 and arr[k-m+1][k+1] == 1 and arr[k-m+2][k+2] == 1 and \
arr[k-m+3][k+3] == 1 and arr[k-m+4][k+4] == 1:
print("游戏结束,黑子胜利!")
onscreenclick(fun_null)
if i > j: # \向
m = i-j
for k in range(m, 11):
if arr[k][k-m] == 1 and arr[k+1][k-m+1] == 1 and arr[k+2][k-m+2] == 1 and \
arr[k+3][k-m+3] == 1 and arr[k+4][k-m+4] == 1:
print("游戏结束,黑子胜利!")
onscreenclick(fun_null)
n = i+j # /向
if n <= 14:
for k in range(0, n-4):
if arr[k][n-k] == 1 and arr[k+1][n-k-1] == 1 and arr[k+2][n-k-2] == 1 and \
arr[k+3][n-k-3] == 1 and arr[k+4][n-k-4] == 1:
print("游戏结束,黑子胜利!")
onscreenclick(fun_null)
if n > 14:
for v in range(n-14, 11):
if arr[v][n-v] == 1 and arr[v+1][n-v-1] == 1 and arr[v+2][n-v-2] == 1 and \
arr[v+3][n-v-3] == 1 and arr[v+4][n-v-4] == 1:
print("游戏结束,黑子胜利!")
onscreenclick(fun_null)
def white_is_end(i, j):
global arr
for m in range(11): # 竖向
if arr[m][j] == -1 and arr[m+1][j] == -1 and arr[m+2][j] == -1 and \
arr[m+3][j] == -1 and arr[m+4][j] == -1:
print("游戏结束,白子胜利!")
onscreenclick(fun_null)
for m in range(11): # 横向
if arr[i][m] == -1 and arr[i][m+1] == -1 and arr[i][m+2] == -1 and \
arr[i][m+3] == -1 and arr[i][m+4] == -1:
print("游戏结束,白子胜利!")
onscreenclick(fun_null)
if i <= j: # \向
m = j-i
for k in range(m, 11):
if arr[k-m][k] == -1 and arr[k-m+1][k+1] == -1 and arr[k-m+2][k+2] == -1 and \
arr[k-m+3][k+3] == -1 and arr[k-m+4][k+4] == -1:
print("游戏结束,白子胜利!")
onscreenclick(fun_null)
if i > j: # \向
m = i-j
for k in range(m, 11):
if arr[k][k-m] == -1 and arr[k+1][k-m+1] == -1 and arr[k+2][k-m+2] == -1 and \
arr[k+3][k-m+3] == -1 and arr[k+4][k-m+4] == -1:
print("游戏结束,白子胜利!")
onscreenclick(fun_null)
n = i+j # /向
if n <= 14:
for k in range(0, n-4):
if arr[k][n-k] == -1 and arr[k+1][n-k-1] == -1 and arr[k+2][n-k-2] == -1 and \
arr[k+3][n-k-3] == -1 and arr[k+4][n-k-4] == -1:
print("游戏结束,白子胜利!")
onscreenclick(fun_null)
if n > 14:
for v in range(n-14, 11):
if arr[v][n-v] == -1 and arr[v+1][n-v-1] == -1 and arr[v+2][n-v-2] == -1 and \
arr[v+3][n-v-3] == -1 and arr[v+4][n-v-4] == -1:
print("游戏结束,白子胜利!")
onscreenclick(fun_null)
# 2、鼠标事件,点击落子
turn = 0 # 记录该哪方落子
def funclick(x, y):
global turn
global arr
if turn == 0: # 黑子先下1
for i in range(15):
Y = 280-i*40
for j in range(15):
X = -280+j*40 # 棋盘上的整点
if abs(X-x) < 20 and abs(Y-y) < 20 and arr[i][j] == 0:
arr[i][j] = 1
goto(X, Y)
dot(20)
turn = 1 # 交替下子
black_is_end(i, j)
if turn == 1: # 白子-1
for i in range(15):
Y = 280-i*40
for j in range(15):
X = -280+j*40 # 棋盘上的整点
if abs(X-x) < 20 and abs(Y-y) < 20 and arr[i][j] == 0:
arr[i][j] = -1
goto(X+10, Y)
pendown()
circle(10)
penup()
turn = 0 # 交替下子
white_is_end(i, j)
onscreenclick(funclick)
done()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn