The code was written so that each state could be easily
broken up into sub-parts in order to reduce flicker. Several sound and animation segments, such as the opening
screen and the fireworks which are displayed when the user beats the computer
can take anywhere from thirty to over two-hundred frames to execute, and thus
segmentation is important for the states. We
also noticed, when first writing the code, that our reset function caused much
“noise” to be introduced onto the screen. That is, pixels which we had drawn had disappeared, and
pixels which we had not drawn were appearing from nowhere. Eventually, we determined that this occurred from attempting
to draw the entire board in only one frame.
Once this was broken up into several segments, the problem went away.
After similar modifications throughout the code, flicker and the
aforementioned “noise” were eliminated.
The design should be very safe. We have no moving parts and all of the hardware we used was obtained from the lab. The overall hardware design is rather simple, and thus quite robust. Thus, we did not experience any interference from any other groups.
The biggest problem which we faced was that our code was simply too long for the mcu's memory. This caused us considerable headache. Because we wanted the AI to be the best that it could, other areas of our program was forced to suffer. For example, we had to eliminate a substantial amount of animation and sound in order to make room for the AI. As we continued developing the program and came aware of different situations that we would have to take into account for our AI, we had to continually trim the fat off of our program. By the end, our program had only basic features to go with the rigorous AI. However, we left most of the code in the program, simply commenting it out, so that we could document the work.