会向前序节点移动,后序节点移动完毕后,头部会根据此时按键的方向对相应的横纵坐标进行加减。
f2、食物放置N
开始
蛇头与食物坐标重合
Y蛇身节数1
创建新的食物
创建是否成功N
Y
显示新的食物
结束
贪吃蛇向前移动后,此时要判断蛇头是否与食物的横纵坐标一一对应,如果不是则退出该模块,进入下一模块;如果是,则贪吃蛇的节数增加一。随后将进入创建新的食物模块,为了避免食物与贪吃蛇的节点坐标重复,食物在创建后要与贪吃蛇的每个节点的坐标一一比较,如果重合则重新创建食物的坐标,直到创建成功为止。
f3、加速处理N
开始
加速键是否按下
Y蛇加速
结束
在游戏过程中,贪吃蛇的初始速度很慢,为了提高游戏娱乐性,设置独立按键加速键,当按下加速键,则贪吃蛇的移动速度即时间间隔变短,使游戏更具有挑战性,当再按下则恢复原来的速度。
f4、结束N
开始
Y蛇的节数最大
NY
蛇头碰到墙壁
N
蛇头碰到蛇身
Y
结束
贪吃蛇在向前移动后,有可能撞到墙壁或自己的身体,也有可能吃到食物,或者只是向前移动一格,移动完毕后如果吃到了食物,如果贪吃蛇的节数达到了最大值,那么玩家将会通关游戏,并且游戏退出,此时需要判断游戏是否结束,一共有三种判别,前两种为失败结局,即撞到了墙壁或自己的身体,最后一种为通关结局,游戏将初始化。
f源代码如下:
i
cludereg51hdefi
eucharu
sig
edchardefi
eSNAKE20defi
eTIME50defi
eSPEED80
sbitupP33sbitdow
P31sbitrightP32sbitleftP34sbitspeedupP35sbitLATCH1P36sbitLATCH2P37ucharxSNAKE1ucharySNAKE1uchartime
ieu
sig
edcharco
stseg0x810x420x240x180x180x240x420x81u
sig
edcharcodewei0x7f0xbf0xdf0xef0xf70xfb0xfd0xfecharaddxaddy
voiddelaycharMScharusus
whileMS0us
0whileus
0us0xffwhileus0usus
MS
bitk
ockbitkk0ifx17y17k1fori2i
iifx1xiy1yik1retur
kvoidgameOver
whilei8
P20x00P10xffLATCH11LATCH10P2weiiLATCH21LATCH20P1segidelay1000i
f
voidtur
keyifleftaddy0ifaddx1addx1elseaddx1ifrightaddy0ifaddx1addx1elseaddx1ifupaddx0ifaddy1addy1elseaddy1ifdow
addx0ifaddy1addy1elseaddy1ifspeedup
ee40whilee39eSPEED
ucharmuxuchartempiftemp7retur
128iftemp6retur
64iftemp5retur
32iftemp4retur
16iftemp3retur
8iftemp2retur
4iftemp1retur
2iftemp0retur
1retur
0
voidtimer0ucharkwhilekfori0iSNAKE1iP2muxxiP1255muxyitur
keydelayr