一起游 手游攻略 软件教程 超级玛丽单机版操作,单机超级玛丽最新版本

超级玛丽单机版操作,单机超级玛丽最新版本

时间:2024-11-30 18:41:17 来源:互联网 浏览:50

怀念小时候的超级玛丽游戏吗?用纸箱和瓶盖就能自己做,非常好玩

大家好,我是美麻。今天教大家用纸箱制作超级玛丽掌上游戏机,只要两根手指就能操作,画面非常真实。

不但可以锻炼宝宝的手眼协调能力,还能让孩子远离手机危害。

下面开始超级玛丽游戏机的制作教程。

先简单画一幅超级玛丽的游戏画面。

然后按照小时候玩的超级玛丽涂上颜色,画面非常真实。

当然少不了欢蹦乱跳的超级马里奥。

准备一块15*15厘米的纸板,中间挖掉7*9厘米。

矿泉水瓶盖,一次性筷子,橡皮筋,如上图所示固定。

把画好的超级玛丽画面从两根筷子下面穿过来,图画的两头用双面胶连接好。

用一根白色细绳固定在右侧的瓶盖上,把马里奥用热熔胶粘在细绳上。

然后用纸板封顶,再贴上一层卡纸,好玩的超级玛丽掌上游戏机就做好了。

左边手指不停向左滑动瓶盖,画面就会向左一直滚动。右边手指上下轻微滑动瓶盖,控制马里奥跳跃。两根手指配合默契,很有小时候的感觉。

看完我的超级玛丽掌上游戏机制作教程,你还不心动吗?如果你在制作过程中有任何的疑问,都可以在文章下面评论留言给我哦。如果你有更好的改进建议或创作思路,也请给我留言,谢谢!

微信这样设置可以玩“超级玛丽”,快乐又回来了

这台复古电视机不仅可以有声音有动画,还可以转台和调倍速噢~

点击电视机的机身右下角按钮可打开电视,开关上方的两个按钮分别是“调节音量”和“倍速播放”。

每次打开“小电视”都会出现不同的电视频道,有80 90年代的经典歌曲,还有动漫、演唱会等等,电视剧有153个频道可以切换,歌曲影片有28个频道可切换。

如果想体验关灯看电视的感觉,也可以开启手机的深色模式,瞬间氛围满满!

这款童年回忆款的“微信游戏机”,包括有超级玛丽、冒险岛、魂斗罗等等几十款小游戏,可以收藏起来,打发时间玩玩。

功能操作也非常简单,选择想玩的游戏,下方有常规的方向键、选择键、启动键等,还可直接在小屏幕里选择游戏、暂停/重启、开启/关闭声音等操作。

除了上面介绍的两种娱乐工具,还有两个好玩的降温工具,一并为大家介绍。

为你的夏日带去清凉的空调,上下标按钮是调温度,最低温16℃,最高温31℃,开关左右两边的“雪花”和“太阳”按钮,分别对应“制冷”和“制热”两个模式,启动的同时伴有仿真音效,达到心理降温的极速效果。

除了没有风什么都好的夏日小风扇,有三档风速可选,扇叶转动的频率随着档速而变,档数越高转动速度越快,声音越大觉得越凉爽了有没有?

教你用三菱PLC制作《超级玛丽》,仿真运行无需硬件

昨天在我的西瓜视频更新了PLC制作的《超级玛丽》的演示视频:

视频链接: ()

再来个动图:

这个游戏虽然玩起来简单,但做起来内容太多了,以一人之力做起来不太现实,所以希望通过讲解这个程序的制作方法,来让更多的人参与其中,丰富游戏内容。

HMI界面

想要显示出内容必须要有屏幕,常用的HMI都有内置的开关、指示灯,可以用字指示灯来代替屏幕的像素,通过D软元件的值来控制指示灯显示的颜色。

那这个颜色是按照什么规律设置的呢?我是按照Excel里面get.cell函数里对于单元格颜色定义的顺序来设置HMI指示灯颜色的,这个函数的颜色定义可以在网上找到:

为什么要用excel的函数定义呢?后面会讲到。

这个函数一共定义了56种颜色,虽然我们用不到这么多,但我还是勤劳的把所有颜色都设置了!

我们在PLC全局标签内建立一个容量为30*30的二维数组,设定起始地址软元件为D0与HMI的虚拟屏幕对应

这样就可以用XY坐标来定位像素的具体位置,例如我们想要将第4列第5行的像素显示黑色,通过查看颜色定义知道黑号为1,只需要写gDisplay[3.4]:=1 即可。

制作游戏元素

超级玛丽游戏中包含很多元素,背景:大地、山丘、树木、蓝天白云、水管、石块。。。。

动态人物:马里奥、蘑菇怪、乌龟怪、炮弹。。。。

想要将这些元素在我们制作的屏幕中显示出来,需要算出这些图片在我们的屏幕数组中每一个变量的颜色号。以主角马里奥为例,展示我的制作方法:

1.先在excel中,按照网上找到的像素图片,使用“填充颜色”画出马里奥模型:

2.然后使用get.cell函数,得出每一个单元格颜色号(get.cell函数的使用方法自行百度):

想要保存这个数据,需要在程序中建立一个容量为16*17的二维数组。为了简化程序篇幅,我们将数据保存至FC函数中。

3.建立函数 FC_Mario,设定返回值为:字[有符号](0..15,0..16),

4.在刚才的excel中使用简单的公式和下拉操作,将FC_mario赋值:

这样一个图片元素的制作就完成了,我这里在马里奥的FC中还添加了States变量,来选择马里奥的不同姿态。

使用上述方法制作所有元素:

到这里,我们已经可以写几行代码的在虚拟屏幕中显示图片了,可以将上面建立的FC返回值传递给一个容量相同的数组,再使用两层for循环传递给屏幕显示数组gDisplay,画面中就会显示对应的图片。例如显示马里奥:

adjMario:=FC_Mario(0);

for ii:=0 to 15 do

for jj:=0 to 16 do

gDisplay[ii,jj]:=adjMario[ii,jj];

end_for;

end_for;

adjMario为与FC_Mario元素相同的双层字数组,感兴趣的可以试试。

编程

我们将程序通过iStep的值分为3个部分来编辑:

case iStep of

0:

//初始化地图

1:

//计算显示位置

2:

//刷新屏幕

end_case;

初始化地图

屏幕的尺寸很小,不能显示游戏的整个地图,所以我们需要一个容量更大的数组来存储整个地图的所有元素。

我这里建立了4个标签,两个常量表示数组X、Y两个方向的最大值,方便后面程序更改。一个背景元素显示数组BackGround,和一个背景元素属性数组bgAttribute。显示数组用来保存各个元素的颜色数据;属性数组用于保存元素的属性,比如0是背景,人物可以重叠,1是固定物体,人物不能重叠,用于判断碰撞。

以后可以增加其他属性,比如怪物可以是2,可以下蹲进入的管道是3,变大的蘑菇buff是4等等。

2:设置背景色

在地图中没有元素的格子认为是蓝天,设为蓝色,查找一个蓝色的号码比如47,属性是可重叠,设为0:

3:添加位置不变的元素

比如地砖、山丘、石块等元素都是相对地图位置固定不变的,我们可以直接初始化的步骤里添加。例如添加地砖:

先使用上个步骤建立好的函数生成一个地砖的颜色数据,保存在地砖数组objGround里面,然后指定地砖在地图中的位置(由于屏幕、地图、所有元素的数组零点位置都是左上角,所以用数组零点[0.0]来定位)。

比如第一块砖的零点[0.0]在地图的[0,55]的位置,在X方向,一块砖占8个格子,所以第kk块砖的零点[0,0]在地图的[0+8*kk,55]的位置。再使用两层for循环传递所有砖块的所有X、Y的值。别忘了元素属性,地砖是不可重叠的,属性设置为1。

用同样的方法赋值所有的元素,如果元素中存在数值为0的空位,需要增加判断将空位去掉:

计算显示位置

在演示视频中,Mario的在屏幕中的位置、窗口显示地图的位置都是随着按钮上下左右移动的,实现这个目的需要根据马里奥的相对于屏幕偏移、屏幕相对地图的偏移来计算。

Mariooffset用于记录马里奥元素[0..15,0..16]相对于屏幕[0..29,0..29]零点的偏移,也就是马里奥在屏幕中的显示位置。

偏移为0时

偏移X=8,Y=6 时

bgOffset用于记录屏幕[0..29,0..29]相对地图[0..175,0..59]的偏移,不再展示了。

2:设定屏幕刷新率

用1000ms除以刷新率FPS(默认值15)得到一帧画面的保留时间,使用ton功能块计时,计时结束后做一次计算,并复位计时触发。

3:根据上下左右移动方向进行偏移计算

我们以向右移动为例:

M0为右移按钮的地址,M0触发时,马里奥的姿态在pose=1,2,3之间循环变化,做出走动的动作。

在移动前我们要判断是否将要接触到属性为1的固定物体,先将接触状态变量iTouch复位,通过for循环遍历马里奥右侧的地图属性是否为1,判断的距离为马里奥一帧内移动的距离(也就是马里奥的移动速度),我们用变量iSpeed来表示。这样我们就可以根据itouch的状态,判断马里奥右侧有无障碍。

根据touch变量的状态来决定我们是不是要改变两组偏移。如果touch为false,先判断马里奥是不是在屏幕左面(mariooffsetX<7),在左面的情况下增加马里奥X方向的偏移mariooffsetX的值(mariooffsetX+ispeed),将马里奥移动至画面的中间。

当mariooffsetX=7时,马里奥在屏幕的中间,此时马里奥位置不动,将背景地图在屏幕中向左侧移动,并判断屏幕是否还没超过地图的最右侧(bgOffsetX<175-30,30为屏幕的宽度),如果屏幕已经显示到了地图的最右侧,地图的位置不动,马里奥继续向屏幕的右侧移动,直到移动到屏幕的最右侧(mariooffsetX=29-13,13为马里奥的宽度)。

上下和左移动都与此类似。

刷新屏幕

位置计算完成,我们需要根据两组偏移的值刷新屏幕内显示的内容即可,但要先刷新背景地图,后刷新马里奥,目的是将上一帧马里奥的图形抹掉。

马里奥的左右朝向使用iDirection变量来表示,实现的方法是马里奥在X方向上赋值顺序的变化。

程序编辑完成,将PLC和HMI进行仿真开始游戏。

你学会了么!