Dick is correct. I implied something in my original posting that was not true. I've changed the wording of the posting so hopefully it is now clear.
As Dick notes, in Alice a while is always evaluated at the
start of a loop. You can see this in the example by making the default test value zero instead of one - in that case the gun never fires. If the default is one, the gun just continues to fire since the test is never made again due to the infinite loop.
An interesting test is if you leave the default test value at one but reset to zero before enlarging the cone. In this case, whether the while is evaluated first seems to depend on it's position in the program. If the while block is first, the gun fires - if not, it doesn't. Don't know that I have seen this documented - can anyone give a reference?
Also, as an aside, many languages have an "until" function which actually goes through the loop block once before making its test and then evaluates the test condition at the end of each execution of the block. This sounds a little like what Dick describes as a "do-while." Regardless of the name, this is not supported in Alice.
As a final, mostly historical note, one of the reasons I answered the original question was that the "while" and "until" constructs are relatively new additions to programming languages (though they still have been around probably since before the majority of forum members were born

). They were a very useful addition - but because they were "add-ons", there was not a lot of consistancy in either naming or positioning of the conditional test at first - and this has stayed around long enough that beginning programmers may just avoid them because of these inconsistancies. I believe Alice does follow the current standards for the While statement - but since no language
specification for Alice is available (a major lack IMO), I can't say for sure.