Point Destroy
设计文档
【数据】
circle
:定义
CIRCLE
类,每个圆为
CIRCLE
的一个实例对象,存储第一个点坐标、方向、
类型(长度)
、颜色,以及包含剩余圆的个数。所有圆的对象放进一个列表
circles
里。
棋盘:
使用二维列表,
grid[i][j]
存储棋盘第
i
行第
j
列的信息,
grid[i][j]=’
-
’
表示没有,
grid[i][j]
为数字
x
表示
grid[i][j]
上摆的是编号为
x
的圆。
【主算法】
用伪代码的形式给出主算法流程:
点击数
shoot
初始化为
0
击中数
hit
初始化为
0
#
随机得到整张棋盘的信息
剩余圆数
circlenum
随机为
Min_Circles, MAX_Circles
之间的随机数
圆的类型数
classnum
初始化为
0
每种类型圆的数量列表
classcount[]
初始化为空
for i in range(circlenum):
随机圆
i
的信息(第一个点坐标
(
保证不出界
)
、方向、类型、颜色)
while i
和
[0..i-1]
中的圆有相交或
(i
是最后一条圆且
classnum==1):
重新随机
i
的信息
根据
i
的类型更新
classnum
和
classcount
打印棋盘信息(供调试)
#
正式开始游戏
While True:
p=win.getMouse()
if p
点在棋盘内:
inc(click)
获得
p
点所在的格子
(x,y)
if (x,y)
点过了
:
输出已点过信息
else:
if (x,y)
没圆
:
标记
(x,y)
已点过,并输出
wrong
信息
在
(x,y)
显示
’X’
else:
标记
(x,y)
已点过,并输出打中信息
inc(hit)
获得
(x,y)
的圆的编号
S
在
(x,y)
显示
S
的颜色
if S
剩余圆体长度
==0:
dec(circlenum)
变换圆
S
占的所有格子的样式
输出
S
被点中信息
获得
S
的类型
type
if classcount[type]==0: