返回
用笨办法写个连连看-1.核心功能实现
前端
2024-02-15 15:43:03
写在前面
前段时间在码上掘金看见大佬用【文言文】写了一个连连看,于是乎突发奇想,能不能用brython也实现一个连连看呢?顺便复习下python基础,于是乎,你们就看到了这个码上掘金项目 和 这篇文章了,但是 brython的环境搭建巨坑无比,还有,这篇文章先从python实现讲起,对brython实现仅在文末做简单说明。
定义基本数据结构
两个类,Point
和Block
。
class Point:
def __init__(self, x:int, y:int):
self.x = x
self.y = y
class Block:
def __init__(self, pos:Point, state:int):
self.pos = pos
self.state = state
核心算法
即检查连线条件是否成立,用4个点组成一条线段,如果是横线或竖线,那么容易判断,如果是斜线,那么麻烦了,且存在两种情况:
1. /
/
/
\
\
\
如何判断呢?其实就一个条件,即 斜率为1,即:
y1 - y0 = x1 - x0
当然,也要考虑线段的起始点和终点,即:
point1.x < point2.x < point3.x < point4.x
下面,看看具体的代码实现:
def check_condition(point1:Point, point2:Point, point3:Point, point4:Point) -> int:
# 先算斜率
gradient = (point3.y - point1.y) / (point3.x - point1.x)
if gradient != 1:
return 0
# 再判断四个点的位置
if point1.x < point2.x < point3.x < point4.x:
return 1
elif point4.x < point3.x < point2.x < point1.x:
return 1
return 0
运行测试
接下来就是简单的运行测试啦:
p1 = Point(0,0)
p2 = Point(0,1)
p3 = Point(1,2)
p4 = Point(2,3)
print(check_condition(p1, p2, p3, p4))
输出结果:
1
brython实现
brython实现非常简单,在python代码的基础上,添加以下代码,然后运行html文件即可:
<script src="brython.js"></script>
<script type="text/python">
import my_package
</script>