• 回答数

    5

  • 浏览数

    135

cherrychoi25
首页 > 学术期刊 > 超级玛丽java毕业论文

5个回答 默认排序
  • 默认排序
  • 按时间排序

福星蛋蛋

已采纳

做这个需要很多的资源还耐心,我找了个做过的作者,把他的心得贴给你,希望有用!大家好。今天有空写了点东西,主要是我做“超级玛丽”的经过和经验总结,也许对初学者有用。这是我整理过的,不是编程顺序。先说明编程语言,我是用QB做“超级玛丽”游戏,VB做的地图编辑器。确定游戏规模,我的设定是:没有怪和金币,没有可以出入的水管,通关时没有动画。这样,程序的主要操作是显示前景、背景和玛丽,进行玩家和前景的碰撞检测。资源:图像资源:我参考了一个C语言的“超级玛丽”,借用并修改了其中部分图像(在此向原作者表示感谢)。声音:无。图像处理:图像分前景和背景,前景和背景都为十六个16*16像素的图像块;前景分三组,用来显示不同关卡,每组的前两个图像块为过关标志(旗杆和横放的水管)。我为了使程序简单,程序中不考虑不同前景,检测过关的程序对旗杆和水管也就不分别判断了,所以只好横向判断,这样“站”在水管上面时不算过关,必须横向走进水管才算过关,旗杆也是一样。图像是BMP格式,不是标准十六色,必须把它转换成QB能识别的格式,并设置调色板。我做了两个辅助程序,一个是VB程序,功能是读取颜色值和像素,写入两个文本文件,一个是颜色值,QB通过它来设置调色板,另一个是图像中转文件;第二个辅助程序是QB程序,它读取刚才的图像中转文件,以GET格式用binary方式分图像块写入“tp.xp”文件。这样做的好处是游戏程序可以用数组存储GET格式图像文件,显示时不用“select case 图像索引 case 1 put (x,y),p1% case 2 put (x,y),p2%……”,可以“PUT (x,y), bj(0, 图像索引值), PSET”一条语句搞定。地图:地图文件是文本文件,每行长度是200个字节,高21行。上5行没用,因为玛丽可以跳得高过屏幕,为了在碰撞检测时少点罗嗦,所以加上这五行。然后12行是地图内容,大写字母是背景,小写字母是前景,字母的ascii值与图像索引顺序相同。最后是前景号(前景共三组)和游戏开始时玛丽的位置。确定了这些做地图编辑器就好办了,地图编辑器没什么好讲的。注意做地图时要注意游戏的乐趣和平衡性。游戏程序:输入要求能检测多个键同时按下,这一部分是我从咱们火客下的,要是没有它真做不了。运动。模拟玛丽跳起和自由下落时费了点周折,我甚至想过用平方函数曲线(它不是叫做抛物线吗?),后来发现了一个更好的办法:重力因素。试试下面这个小程序,是不是个抛物线?SCREEN 12dim x,y,ty,zl as integerzl=1 '重力因素y = 100 '高度ty = 20 '跳起时加这条FOR x = 100 TO 200 STEP 2ty = ty - zly = y + ty '游戏程序中如果没有发生碰撞则执行这一条PSET (x, 480 - y), 15NEXT它的好处是简单和真实。特点是任何时候都会因重力而下落。当人跳起时升高的高度会越来越小,到达顶点后下落,下落时落差越来越大(也就是越来越快),非常真实。从悬崖上掉下(非跳起的情况)时会自由下落。而如果人在实地上行走,则在碰撞检测时会检测到,不让他下落,游戏中看不出来这一点。当然了,这只是模拟。 卷屏。地图用数组存储,每个数组元素代表一个地图块,显示时只显示一部分(宽十九个地图块,高十二个地图块)。我设了两个变量,一个是要显示的地图部分的首地址;另一个是地图显示的位置。要平滑卷动地图就得细致点,移动距离越小看起来越平滑。看一下程序:IF x - pyl * 16 > 120 AND pyl < 181 THEN wyl = wyl + 4IF wyl >= 16 THEN wyl = 0: pyl = pyl + 1X是人在地图上的横坐标,pyl是显示的地图的首地址,x - pyl * 16是人在显示器上的横坐标,120大约在屏幕中线,wyl是显示的首块地图的显示位置,叫它位移量吧,取值为0、4、8、12。第一条:当人向右行走超过中线且没到终点时,位移量加四,每块地图显示时向左移动四像素。第二条:当移动十六像素时显示的地图范围向右移动一格,位移量置零。这样循环就实现了地图平滑卷动。碰撞检测。这一部分很简单,依次检查人所占的四格地图是否为空,如果人已进入前景,就把他拉回来。人物图像的显示:IF dz < 3 THEN dz = dz + 1 ELSE dz = 0 '正常行走时,三幅行走图交替显示。IF GameKey(75) = 0 AND 0 = GameKey(77) THEN dz = 0 '没有行走时,站立资势。IF d = 0 THEN dz = 5 '跳跃时,显示跳的图片。它们的顺序也是优先级。再加上方向,就很自然了。方向是在检测输入时设置的。刚才说了“tp.xp”文件和显示地图块,再用源码解释一下。我并不懂GET图像格式,不过我的辅助程序是这样写文件的:OPEN "tp.xp" FOR BINARY AS #2for ………f = 1GET (,)-(,), aFOR j = 0 TO 130PUT #2, f, a(j)f = f + 2NEXT……NEXTCLOSE游戏初始化时读文件:f = 1OPEN "tp.xp" FOR BINARY AS #2FOR i = 0 TO 15FOR j = 0 TO 130GET #2, f, bj(j, i)f = f + 2NEXTNEXTCLOSE #2显示时:PUT (,), bj(0, 图像索引值), PSET一条就行了。嗯,主要的就这些了。这些只是我在编程时摸索得来的,可能与正规游戏开发有出入。如果有不当或错误的地方,欢迎批评指正.谢谢。

233 评论

甜菜阿姨

基本上java不适合写游戏。说写超级马里奥的这个人,基本上是忽悠你的。当然,如果真的写了个超级玛丽,功力还是不错的。基本J2SE和java图形用的还比较熟悉。但是也局限在j2se当中。其实java主要的作用还是在j2ee吧。

177 评论

小优雅0811

用关系型数据表来保存, 一张主表 关联着 另N个表, (主表包含 一些基本信息 ,如人物等) 关联表包含 道具信息 或 怪物等 ,诸如此类....

356 评论

工藤新之助

不用二维数组,两个个并行一维数组就行,一个存地图背景的瓦片下标 一个存是否检测碰撞(也就是是否可以让人穿过) 一个障碍物就是通过背景的图块拼接与碰撞数组相应下标的不可穿越同时的效果,当然如果是二维数组,其原理是一样的,只是把两个数组合在一块

269 评论

纵横四海2000

全是垃圾、、、

261 评论

相关问答

  • 毕业论文查重超级低

    论文重复率非常低,这一点应该是不少毕业生所希望的。大部分毕业生都会设法降低论文查重率,认为查重率越低的论文越好。那初稿在论文查重之后,检测结果显示,查重率为0。

    cynthia20056 8人参与回答 2023-12-12
  • java语言毕业论文

    TAGS: 毕业论文 计算机 基于 远程 对象 RMI 方法 实现 调用 哪位老兄有计算机毕业设计论文啊?是基于java的,小弟急用,谢谢!用RMI开发基

    竹林听雨57 7人参与回答 2023-12-09
  • java毕业论文日志

    package homework.day15;import java.awt.Font;import java.awt.GridLayout;import ja

    不服沙拉 3人参与回答 2023-12-07
  • java毕业论文项目

    Java可以按照面向过程来实施项目,但是它本身是一门面向对象的语言,如果你是毕业论文的话,建议还是按照面向对象的方式来写,期间添加一些uml的图表体现,这样更容

    琳子Yulander 8人参与回答 2023-12-08
  • 超级玛丽毕业论文总结

    说到超级玛丽,每个人都对这个童年游戏并不陌生。这个游戏可以说是伴随着我们整个童年的游戏。为了在开始时玩这个游戏,我们还与父母有各种各样的纠缠。然而,随着越来越多

    激动的小胖 7人参与回答 2023-12-07