|The MSX Version with boy and girl characters|
"Create Everyday" website.
The questions marks represent PRINT commands. The LCx,y commands are equivalent to PRINT@ or LOCATE commands in MS Basics. SCR(x,y) commands do the job of checking the character values stored at specific screen locations. The rest are pretty much standard Basic.1 'BINARY ROOM
10 S=1 15 CLS:LC4,0:?"STAGE:";S
20 FOR I=0 TO 15
80 SRNDS:FOR I=1 TO S*3
90 X=RND(12)+10:Y=RND(12)+4:IF SCR(X,Y) CONT
100 LCX,Y:IF I%3 ?"#" ELSE ?I/3
120 X=15:Y=16:V=16:W=16:C=1:CLT 125 K=INKEY()
140 IF SCR(X+A,Y+B)=0 LCX,Y:?CHR$(0):X=X+A:Y=Y+B
150 IF SCR(V-A,W+B)=0 LCV,W:?CHR$(0):V=V-A:W=W+B
160 LCX,Y:?"A":LCV,W:?"B" 165 LC(X+V)/2,(Y+W)/2:IF SCR()-48=C IF Y=W AND ABS(X-V)=2 OR X=V AND ABS(Y-W)=2 ?CHR$(0);:C=C+1:IF C=S+1 LC4,20:?"CLEAR!":WAIT30:IF S=9 END ELSE S=S+1:GOTO 15
170 LC16,0:?"TIME:";TICK()/60:WAIT3:GOTO 125
I found that the logic for placing the numbers was completely random, so sometimes they could be placed in a way, depending on where other numbers and blocks were placed, that there was not room on either side or above and below, to maneuver the characters around it to straddle it. This would make a stage impossible to complete. I changed the logic so that after placement, each number is checked to see if there are spaces to the right and left or above and below. If not, the number is moved somewhere else and re-checked. This vastly decreased the possibility of generating incompletable stages, but not entirely. Very occasionally you might end up with something like this:
The check shows that the top and bottom spaces are clear, but not really because the top space is not really accessible but has been blocked off to access by the character. The number of blocks placed per round is equivalent to the number of the round multiplied by two, so this possibility is very rare. Even on level nine there will only be 18 random blocks placed on screen. But to prevent frustration I added the ability of the player to press R to redraw any stage and allow play to continue. So check your stage before setting out! The object of the game is to complete the 9 stages before 1000 seconds run out. The faster you complete, the higher your score. High score is saved. When you complete the puzzle Beethoven's 'Ode to Joy' is played. I tried to translate the music from an updated version that Taisuke also posted. It's not a very good job, but my son Charlie is away at university, and he's my musical expert. Perhaps when he comes back at Christmas I get him to take a listen and try to improve on my poor job.
Here's a video that Taisuke posted showing his updated version with music:
Anyway, hi to the folks doing the RetroChallenge 2017/10! I've been peeking around a little but hope to have some more time soon to check out the other projects being done. If you are not one of the participants please check out the RetroChallenge website.