timportjavautilobservableimportjavautilra
dom
f游戏的model类,负责所有游戏相关数据及运行classs
akemodelexte
dsobservableimpleme
tsru
ableboolea
matrix指示位置上有没蛇体或食物li
kedlist
odearray
ewli
kedlist蛇体
odefoodi
tmaxxi
tmaxyi
tdirectio
2蛇运行的方向boolea
ru
i
gfalse运行状态i
ttimei
terval200doublespeedcha
gerate075boolea
pausedfalsei
tscore0i
tcou
tmove0upa
ddow
shouldbeeve
righta
dleftshouldbeoddpublicstaticfi
ali
tup2publicstaticfi
ali
tdow
4publicstaticfi
ali
tleft1publicstaticfi
ali
tright3publics
akemodeli
tmaxxi
tmaxythismaxxmaxxthismaxymaxyresetpublicvoidresetdirectio
s
akemodeluptimei
terval200pausedfalsescore0cou
tmove0i
itialmatirx全部清0matrix
ewboolea
maxxfori
ti0imaxximatrixi
ewboolea
maxyarraysfillmatrixifalse时间间隔,毫秒每次得速度变化率暂停标志得分吃到食物前移动的次数
蛇运行的方向时间间隔,毫秒暂停标志得分吃到食物前移动的次数
fi
itialthes
ake初始化蛇体,如果横向位置超过20个,长度为10,否则为横向位置的一半i
ti
itarrayle
gthmaxx2010maxx2
odearrayclearfori
ti0ii
itarrayle
gthii
txmaxx2imaxx被初始化为20i
tymaxy2maxy被初始化为30
odearrayxy1015111512,152015默认的运行方向向上,所以游戏一开始
odearray就变为:10,1410,1511,1512,1519,15
odearrayaddlast
ew
odexymatrixxytrue创建食物foodcreatefoodmatrixfoodxfoodytruepublicvoidcha
gedirectio
i
t
ewdirectio
改变的方向不能与原来方向同向或反向ifdirectio
2
ewdirectio
2directio
ewdirectio
运行一次retur
publicboolea
moveo
ode
ode
odearraygetfirsti
tx
xi
ty
y根据方向增减坐标值switchdirectio
caseupybreakcasedow
y
fbreakcaseleftxbreakcaserightxbreak如果新坐标落在有效范围内,则进行处理if0xxmaxx0yymaxyifmatrixxy如果新坐标的点上有东西(蛇体或者食物)ifxfoodxyfoody吃到食物,成功
odearrayaddfirstfood从蛇头赠长分数规则,与移动改变方向的次数和速度两个元素有关i
tscoreget10000200cou
tmovetimei
tervalscorescoreget0scoreget10cou
tmove0foodcreatefoodmatrixfoodxfoodytrueretur
trueelseretur
false创建新的食物设置食物所在位置r