单击按钮一次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; 
+0

我们需要对你的期望的结果是,程序正在做什么,以帮助更多的信息。代码在语法上看起来很好。 –

这个问题是不是真正的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;