单击按钮一次joypad
问题描述:
我正在创建一个将要玩视频游戏的程序。当它读取它们是RAM值为0x0016的敌人时,它需要按B.我想也许是因为我的while循环B得到垃圾邮件的方式太多了?我不确定。目前,在FCEUX上它说B按钮被按下,但它保持橙色。我需要B按钮只能按一次。单击按钮一次joypad
这里是我的代码:
JoypadB = {B=true}
JoypadRight = {right=true}
while (true) do
c = memory.readbyte(0x0016);
if (c == 6) then
joypad.set(1,JoypadB)
else
joypad.set(1,JoypadRight)
end;
gui.text(100,100,c);
emu.print(c);
emu.frameadvance();
end;
答
这个问题是不是真正的FCEUX,它是不是真正的LUA。它仅仅是编程的95%,但一些视频游戏常识会有所帮助。重复按钮,因为0x0016重复包含6。只要有敌人,就添加一个切换开关以实现重复拍摄。您可能需要选择不同的涡轮间隔不是每隔一个,而这正是在这个例子中完成的:
JoypadB = {B=true}
JoypadRight = {right=true}
toggle = 0
while (true) do
c = memory.readbyte(0x0016);
if (c == 6) then
if(toggle==0) then
joypad.set(1,JoypadB)
toggle = 1;
else
joypad.set(1,JoypadRight)
toggle = 0;
end
else
joypad.set(1,JoypadRight)
end;
emu.frameadvance();
end;
或者,做什么你从字面上问,假设敌人只需要一枪干掉,然后只需按一次按钮,等待下一次的敌人消失,直到然后又重新出现:
c = memory.readbyte(0x0016);
joypad.set(1,JoypadRight)
if (c == 6) then
if(toggle==0) then
joypad.set(1,JoypadB)
toggle = 1;
end
else
toggle = 0;
end;
我们需要对你的期望的结果是,程序正在做什么,以帮助更多的信息。代码在语法上看起来很好。 –