若是按 键B按下

发布日期:2024-11-28 04:50:10 作者: 九游会J9国际


  运用掌控板载的物理A/B按键、蜂鸣器和OLED 屏幕做一个弹球互动游戏:在掌 控板的OLED 屏幕上,有弹球和挡板两个角色。按下A键,挡板向左移动;按下B键, 挡板向右移动。若挡板接住弹球,弹球反弹;若挡板未能接住弹球,蜂鸣器响起,游戏结束。

  因为弹球是会移动的,所以不需要将弹球的(x,y)坐标设为变量X,Y ;弹球在X,Y 轴的移动速度分别设为变量a,b;

  设置布尔型变量start-flag,通过掌控板按键A或B触发start-flag,如果为真, 弹球开始向+X,-Y方向运动。

  定义函数a1:程序调试/输入后,如果变量FMQ为线秒后, 变量FMQ为假,声音停止。

  定义函数a2:蜂鸣器提示游戏开始后,首先清空OLED 屏幕。在OLED 屏幕上 绘制弹球为实心圆,半径=5;绘制档板为矩形,宽=40,高=5,放置于OLED 屏幕 底部,Y坐标=55。

  按键A、B分别控制挡板向左、向右移动。如果按键A和B同时按下,程序恢复 初始化。

  掌控板OLED显示屏的分辨率为 128x64,采用16x16字体,能够显示 以左上角顶点为起始坐标的文本内容。

  掌控板OLED显示屏的分辨率为 128x64,采用16x16字体,能够显示 以左上角顶点为起始坐标的文本内容。

  定义函数a3:在初始化中,我们设置了变量start控制游戏的开始与否,A、B 按键按下时,变量start_flag为真。

  当变量start为真,游戏开始。如果按键A按下,变量start_flag为真,挡板向左移动; 若挡板移动接近OLED 屏幕左边缘,挡板将停在0处,不能继续左移。反之,如果按 键B按下,变量start_flag为真,挡板向右移动;因为挡板本身宽为40(x=40),如果挡板大于88时,将移出屏幕,所以设loc>88时,停止向右移动。

  定义函数a4:在初始化中,我们设置了当A、B按键按下时,变量start_flag为 真,弹球开始向+X,-Y方向运动,也就是向右上方运动。

  因为弹球本身半径为5,如果X≥122时,弹球已经接近OLED 屏幕最右边缘, 此时将变量a设为a×(-1),弹球就会向x轴反方向移动。同理,如果X≤5时,弹 球已经接近OLED 屏幕最左边缘,此时将变量a设为a×(-1),弹球就会向x轴反方 向移动。

  如果Y≤5时,弹球已经接近OLED 屏幕最上边缘,此时将变量b设为b× (-1),弹球就会向Y轴下方移动。

  如果Y≥48时,弹球已经接近OLED 屏幕最下边缘。会有两种可能出现的结果: 结果1:如果碰到挡板:也就是不满足X>(loc+50)或不满足X<(loc-10)时,将变 量b设为b×(-1)。结果2:如果没碰到挡板:也就是满足X>loc+50或满足X<loc-10时,此时挡板未能接住弹球,将变量start_flag设为假,游戏结束,蜂鸣器响起。