You will want to use polling unless you want people to shoot each time they press the button. Polling will allow you to check every frame if they can shoot, while events give you the system repeat rate.
Also, a time-based approach instead of frame-based approach is generally better since you can make your program frame-independent that way. I don't think there is much frame-based game development these days since people have various refresh rates, you want to allow low-end machines to simulate the gameplay the same even if the frame rate is below the target frame rate, and its a relatively cheap operation for modern systems.