学习的过程中,总会有一些新的想法,有些东西,总要努力把它实现了,然后才有可能进一步做得更好!
能够一下子就把事情做好的,要么这件事情太简单了(不必学),要么你的经验已经足够了(不必学)~
表格有时能很形象的反映一个程序的组织结构,也比较利于理解。
昨天试着用链表解决了蛇的身体增加及移动的函数,脑子里就不停的思考如果没有指针的其它语言,应该怎样来做?在EXCEL里是否也容易实现?
一个念头一旦起来,便一时间抑制不住,不把它做个大概出来总是觉着不踏实。
还好RUN起来了(也仅仅是能RUN起来了),基本功能也实现了七七八八,至少蛇的移动、吃蛋、改变方向搞出来了,可以踏实的继续后面的C++学习了~
下面简单记录一下: EXCEL 简易贪吃蛇
界面设计:
EXCEL的SHEET1中,使用单元格16*16做界面
加入四个箭头图做方向控制,加入开始和结束图控制开始和结束
六个宏sub UpArrow(); DownArrow(); LeftArrow(); RightArrow() ; Start(); EndArrow()
思路:
因暂时无法解决While循环+wait会造成运行时不能点按键,采用OnTime的方法,1秒钟执行一次,在期间可以进行点方向箭头图控制转向
snake_init() '使用INIT初始化界面(围栏)(二维数组arr)、三节蛇身(二维数组snake)、第一个蛋("E")myTime() '利用Application.Ontime实现无限1秒1次的循环,
Application.OnTime Now() + TimeSerial(0, 0, 1), "mytime", , True
judgeArrow() '在myTime()中,调用此函数判断下一步能否移动、是否GameOver、是否吃蛋并再产生蛋getEgg(),然后实现移动(先把蛇头数据用tempX,tempY,tempZ临时变量存起来,并清理围栏中的蛇坐标所赋的值)
show() ‘显示函数功能,输出数组
Range("D2:S17").Resize = arr
关注点:
如何实现蛇身移动(增长后仍能移动)? snake[255][3] :
必须先缓存蛇头的数据,t = snake(1,1) 然后for循环实现数据交换