VB游戏设计教程之大家来找茬
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
前言:
VB大家来找茬游戏设计教程适合刚入门的新手学习,高手就没有必要看了。这套找茬游戏引擎并没有什么很高深的代码,适合新手学习。这个教程主要是对引擎的相关代码进行讲解。
目录:
前六章主要讲的是找茬类游戏的设计思路和一些算法的讲解。
从第七章开始,讲的就是引擎的代码。
第一章想好找茬这种类型的游戏主要算法(难度:★★☆☆☆☆☆☆☆☆)
第二章不同区域算法的编写(难度:★★★☆☆☆☆☆☆☆)
第三章不同处坐标等相关数据的储存(难度:★★★☆☆☆☆☆☆☆)
第四章怎么才能避免重复的图片出现(难度:★★★★★☆☆☆☆☆)
第五章图片的相关制作(难度:★★☆☆☆☆☆☆☆☆)
第六章程序的美化(难度:★★☆☆☆☆☆☆☆☆)
教程部分:
第一章想好找茬这种类型的游戏主要算法:
找茬类游戏最核心的代码就是找到两幅图片不同处的算法,那么我们要有个思路,应该怎样写这个算法。请大家看到图一。大家是不是发现了这个坐标系跟我们数学中的坐标系有些不同,对的,编程中,y轴的正半轴方向是和数学坐标系中正半轴方向相反。通常,我们的鼠标当前坐标为(X,Y),我们设(x1,y1)这个点(也就是图中红点)是不同处的坐标。
数学好的同学是不是不需要费多大力就能想出这个代码。有同学会讲这还不简单么,点中这个不同处的点不就是要让X=X1 ,Y=Y1同时成立么?当然,不可否认这种思路。可能也有同学想到了,对!就是,这只是个点,而不同处是一块区域,只靠这个点是不能判断不同处区域的。下面请大家看到图二。
因为不同处是块区域而不是点,所以我们可以把这块不同处的区域看做是一个矩形,那么图二中,这个矩形的长为A,宽为B,(x1,y1)是这个矩形的对角线焦点。请入门同学注意,这里矩形的长和宽的单位是和坐标系的单位一致的,不必深究。我们的程序需要识别不同处区域是不是被鼠标点中,也就是鼠标的当前坐标(X,Y)在不在矩形的范围内。OK,这一章就讲这么多,东西不多,大家可以先别急着看第二章,想想这个算法应该怎么写。更多内容请看第二章。
---------------------------------------------------------------------------2013-02-09-------------- 未完待续…
祝大家新年快乐!作者:狡猾的皮球 QQ:871245007
第二章不同区域算法的编写
OK,大家继续看到图二。
运用我们的数学知识,要识别鼠标是不是点中的矩形区域,可以这样写。
若x>x1-A/2(也就是鼠标的横坐标要大于矩形左边宽所在的横坐标)
x Y>y1-B/2(也就是鼠标的纵坐标要大于矩形左边宽所在的纵坐标) Y 同时成立,则鼠标当前坐标就在矩形区域里了。想想看,是不是这样。在鼠标的单击事件中写出这些相对应的代码就可以判断鼠标是否点中的可识别的这块区域。 这里,我再简单的讲一下判断圆形区域的算法(找茬类游戏一般都用矩形算法的,圆形算法有一定的局限性)。这个代码也非常的简单。请大家看到图三。 这是一个以(x1,y1)为圆心,R为半径的圆。这里只需要用一个勾股定理就能轻松判断鼠标是否点中圆形区域。 若(x-x1)^2+(y-y1)^2 好了,这一章就到这里。 -------------------------------------------------------------------------------2013-02-10 15:00--- 未完待续 第三章不同处坐标等相关数据的储存 不同处坐标也就是可识别的矩形区域的矩形对角线交点。那么我们应该怎么记录它?我现在用的方法是定义X1到X5储存五个不同处的横坐标,同理储存纵坐标Y1-Y5。矩形的长宽也用同样的方法储存。我调用它的方法就是将每张图片都编号,之后就可以根据图片号来给X1-X5,Y1-Y5 这五个点赋值。 举个例子:设矩形长为AA,宽为BB Public sub GetXY(Picnumber as Integer) If PicNumber = 0 Then X1 = 495: Y1 = 780: AA1 = 500: BB1 = 600 X2 = 600: Y2 = 2310: AA2 = 600: BB2 = 700 X3 = 850: Y3 = 5445: AA3 = 700: BB3 = 700 X4 = 1980: Y4 = 4785: AA4 = 800: BB4 = 900 X5 = 2325: Y5 = 1200: AA5 = 1000: BB5 = 1000 ElseIf PicNumber = 1 Then X1 = 1980: Y1 = 780: AA1 = 700: BB1 = 900 X2 = 2082: Y2 = 5385: AA2 = 800: BB2 = 1000 X3 = 2460: Y3 = 3225: AA3 = 500: BB3 = 500 X4 = 4295: Y4 = 1965: AA4 = 500: BB4 = 700 X5 = 4035: Y5 = 3630: AA5 = 500: BB5 = 500 End if End sub 这里就定义了一个函数GetXY(PicNumber),其中PicNumber就是图片编号。以上代码的功能就是,当图片编号是0时则给这些点赋值,若图片编号是1则给这些点赋值。 -------------------------------------------------------------------------------2013-02-24 15:35--- 未完待续