贪吃蛇2.0来了 界面美化+玩法拓展
vb吧
全部回复
仅看楼主
level 13


2020年10月10日 13点10分 1
level 13
原贴:https://tieba.baidu.com/p/7000927317
2020年10月10日 13点10分 2
厉害。感觉你脑袋很聪明。模型建的好
2020年10月10日 14点10分
@xxdoc [太开心]过奖,会点PS就行的
2020年10月11日 11点10分
吧务
level 15
不错嘛[真棒]
2020年10月10日 13点10分 3
吧主顶贴[太开心][太开心]
2020年10月11日 11点10分
吧主,最终成品源码分享在15楼和16楼了,可否加个精[小乖]
2020年10月18日 14点10分
吧主,我缺少vistawx老师的gdi封装模块,麻烦吧主发到95424253qq.com,我是到处挖坟。特别感谢。
2021年03月21日 08点03分
level 2
楼主,求源码!!!
2020年10月11日 01点10分 4
level 3
大哥,软件打不开,339怎么办大哥,有偿解决
2020年10月15日 19点10分 8
一般是缺控件,你看提示你缺哪个文件
2020年10月16日 00点10分
@隨風🍁缒夢 咋解决,私信我联系方式
2020年10月16日 03点10分
@空中熬翔🌴 大哥私信我联系方式
2020年10月16日 03点10分
@隨風🍁缒夢 你帮我看看,大哥
2020年10月16日 03点10分
level 1
高手可以分享下源码么,谢谢啦
2020年10月16日 01点10分 9
私信给你了
2020年10月16日 05点10分
level 9
其实这个贪吃蛇不错,把按钮美化一下更加好了
2020年10月16日 04点10分 10
按钮美化你有没有比较好的方法?不太想用外部控件,感觉太臃肿
2020年10月16日 05点10分
或许可以试试使用image美化
2020年10月16日 05点10分
@空中熬翔🌴 就是把按钮美化成win10形式
2020年10月16日 23点10分
@抠脽酝jq87 没有做成Win10样式,看看13楼效果图
2020年10月17日 13点10分
level 13
@隨風🍁缒夢 大佬帮忙看一下,关于图标兼容,是不是改成这样就可以了?
2020年10月16日 04点10分 11
对,加256色的就可以了,24位的可加可不加随你
2020年10月16日 04点10分
还有128x128的图标不是这样用的,按你这种方法虽然加128x128,其实在桌面上显示时根本体现不出来,和48x48一样,128x128的要正确显示要转成png格式的icon(新图标格式,某些图标制作软件是不支持的,只支持256x256及以上的尺寸转vista的png格式图标)
2020年10月16日 04点10分
所以没必要的情况下48x48就够了
2020年10月16日 04点10分
@隨風🍁缒夢 谢大佬指点
2020年10月16日 05点10分
level 5
大佬,可以私发一份吗
2020年10月17日 08点10分 12
已发
2020年10月17日 13点10分
@空中熬翔🌴 来份源码地址呀?看看怎么逻辑
2020年10月17日 14点10分
@xxdoc 已经分享出来了,见15楼和16楼,按需下载
2020年10月18日 07点10分
level 13
再度美化,为了完全替换掉默认的干巴巴的按钮,把msgbox和inputbox也替换掉了
2020年10月17日 13点10分 13
level 9
哈哈!这样子看起来好多了
2020年10月18日 04点10分 14
level 13
正式分享源码,首先是V1.1版本(另一个帖子分享过,但过期了,现统一分享到这里)
【链接】
[无效] https://pan.baidu.com/s/1FO_Qu23gSst3oV0ooqpbyQ 提取码: gxm4
【效果图】
【游戏说明】
1、使用方向键控制蛇的转向,长按可加速移动
2、设4个难度,难度越高,蛇移动速度越快
3、每吃到一个食物得分+1,满100分过关
【版本说明】
此版本为简易版本,蛇和食物均使用的PictureBox,主要实现贪吃蛇的算法
简单说下该版本的算法:
1、蛇头移动后,其后的每节身体移动到前一节身体的位置
2、吃到食物时,食物移动到蛇尾后面,变成新的尾巴
代码只有150行,源码加了详细的注释,供交流探讨。
2020年10月18日 07点10分 15
level 13
接下来是V2.5版本
【链接】
[无效] https://pan.baidu.com/s/1ieRdBYUydjNvaaqGhprfvg 提取码: nvrm
【效果图】
【游戏说明】
1、基本操作同V1.1版本
2、还是4个难度,难度设置在游戏菜单——选择难度中进行选择
3、食物有以下4种:
a.草莓:常规食物,效果:得分+1,身体长度+1。每吃掉一个立即刷新。
b.蘑菇:额外食物,效果:得分-5,若当前得分不足5分则直接死亡。随机刷新。
c.苹果:额外食物,效果:操作方向反转,持续3秒。随机刷新。
d.老鼠:额外食物,效果:得分+3,老鼠每0.5秒移动一次。随机刷新。
4、其他道具:
a.障碍物:碰撞障碍物等同于碰撞边界,直接死亡。
b.地洞:钻入其中一个地洞后,将穿越至另一个地洞出来。地洞的穿越效果同样适用于移动的老鼠。在完全离开某一个地洞前,再次进入该地洞将会碰撞自身。
5、地图关卡:
a.默认自带9个地图关卡配置(我自己编辑的,玩家也可以自行添加新的地图关卡,有多少个关卡配置文件就有多少关),从第1关到第9关,将逐步出现各种额外食物、更复杂的障碍物、地洞。满50分过关,并自动加载下一关。
b.通过关卡菜单或双击游戏背景进入地图编辑模式。该模式自定义关卡地图,对于每一关的地图,可设置以下内容:随意放置障碍物;随意放置两个地洞;随意设置3种额外食物随机刷新的概率。
c.地图编辑中的操作:
方向键——移动闪烁的障碍物单元;
空格键——确认在当前位置放置障碍物;
Shift键——在放置障碍物和放置地洞之间切换;
退格键——撤销上一步的放置;
回车键——保存当前编辑的结果,并生成地图关卡配置到文件;
ESC键——退出地图编辑模式。
【版本说明】
此版本为全局美化版本,应该不再更新了,除了没做得分统计,自认为可以算是一个比较完整的游戏了。
美化的过程中,因为要实现图片背景透明,所以把V1.1版本的PictureBox改成了Image。但当时有个问题,使用过多的Image加载图片,且每次移动都要更新图片,会使蛇在移动时偶尔出现闪烁(其实1楼的视频V2.0版本就有这个问题),因此,在V2.5版本中改成了更为高效更节约资源的算法。
再简单说下该版本的算法:
1、游戏开始前,对蛇的每一节身体进行编码,用一个数组记录从头到尾每个Image的Index
2、蛇头移动后,蛇尾直接移动到蛇头移动前的位置,身体其他位置无需移动
3、然后就是判断并更新蛇头、第二节身体、蛇尾的图形了,其他位置仍无需更新
4、如果吃到食物,则加载一个新的Image直接放到蛇头移动前的位置,取代第2步,原来的蛇尾也不用动了
5、重新排列记录身体编码的数组,数组第二项开始,每一项都把值传递给后一项,最后一项的值传递给第二项(这样才能随时知道第二节和最后一节Image的Index)
这种算法每次只需移动头尾两个Image,更新三个Image的图形,即使在蛇很长的时候也不太会出现闪烁了,游戏更加流畅。
为了彻底美化,使用了一个新的窗体自行制作了一个简单的MsgBox和InputBox。为保证兼容性、易用性和流畅度,美化没有使用任何外部控件。
此版本代码共740行,也全部加了很详细的注释。本人业余自学VB,当然不可避免会有写得不当之处,敬请大佬指点。
2020年10月18日 07点10分 16
有个小BUG,虽然不太影响,还是说一下:Picture2_KeyDown事件中Image6(1).Picture = ImageList1.ListImages(35).Picture,应该把35改成32
2020年10月18日 07点10分
level 13
游戏已经很不错了,其实蛇用Image拼揍不是怎么好,用了这么多Image控件,VB的PaintPicture不能将GIF透明显示(有白边),所以有些人会改用Image控件来做,其实可以用StdPicture的Render函数来绘制(很多人不知道),这样可以省下很多Image控件。
Dim pic As StdPicture
'从文件中读取
Set pic = LoadPicture(App.Path & "\11.gif")
'或者从ImageList读取
Set pic = ImageList1.ListImages(1).Picture
pic.Render Me.hDC, 0, 0, 48, 48, 0, pic.Height, pic.Width, -pic.Height, ByVal 0 '48x48就是图标绘制后的大小
'如果在PictureBox上绘制,推荐将AutoRedraw属性设置为True,这样就开启了两缓冲,在PictureBox控件的hDC上绘制不会闪烁,用Refresh更新图像后才能显示出来
以后有能力了可以用GDI函数,GDI+函数(可以直接显示PNG图像,比GIF的好,可以显示Alpha透明通道),大的游戏就用DirectX或OpenGL
2020年10月18日 10点10分 17
两缓冲打错了,应该叫双缓冲
2020年10月18日 10点10分
好的谢大佬,有时间我研究试试。不过如果直接在picturebox上面绘制,位置判断不会更麻烦吗?用控件组的好处是一个for next就解决了全部
2020年10月18日 14点10分
level 5
不错。
2020年11月01日 15点11分 18
1 2 尾页