Как разделить строку в commodore 64 basic?

У меня есть доска ".", инициализированная в доску в commodore 64.

Я хочу случайным образом размещать слова на доске, где каждая буква слова представляет собой "." на доске (как игра по поиску слов). Если слово не подходит, то можно поставить следующее слово. Я хочу разместить слова вертикально и горизонтально. Это то, что у меня есть до сих пор: (это делает доску точек 10x10)

Любые идеи по разделению слова (у меня слова жестко закодированы) и размещению их по вертикали и горизонтали на экране?

1060 rem: Subroutine Fill 
1070 rem: Purpose: read and data construct which fills b3$(x,x) with
1080 rem: either "."s or other random words depending on whether or not
1090 rem: the subroutine has been run before.
1100 x = 10
1110 rem: x represents the dimension for the board; in this case, 10
1120 rem: took out dim b3$(x, x)
1130 rem: array b3 = board = specifications for width and height (10)
1140 rem: i to x allows the horizontal aspect of board to be filled with "."s
1150 for i = 0 to x 
1160 rem: j to x allows the vertical aspect of board to be filled with "."s
1170 for j = 0 to x
1180 rem: board filled with dots horizontally and vertically
1190 b3$(i, j) = "."
1200 rem: end of first nested for loop
1210 next
1220 rem: end of second nested for loop
1230 next
1240 return

1400 dim wo$(9)
1410 wo$(0) = "word"
1420 wo$(1) = "stack"
1430 wo$(2) = "overflow"
1440 wo$(3) = "hello"
1450 wo$(4) = "no"
1460 wo$(5) = "how"
1470 wo$(6) = "why"
1480 wo$(7) = "start"
1490 wo$(8) = "end"
1500 wo$(9) = "done"
1510 print wo$(7)
1520 return

10 print "START"
20 rem: go to line 1100 in order to fill board with "."s because this is
30 rem: the board's initialization
40 gosub 1100
50 rem: looping from i to x allows for horizontal aspect of board to be printed
60 rem: x represents the width dimension of board, in this case, 10
70 for i = 0 to x
80 rem: looping from j to x allows for vertical aspect of board to be printed
90 rem: x represents the height dimension of board, in this case, 10
100 for j = 0 to x
110 rem: board initialized with "."s is printed
120 print b3$(i,j), 
130 rem: end of first for loop, looping from i to x put on 130; , USED 4 TAB
140 next
150 print
160 rem: end of second for loop, looping from j to x
170 next
180 rem: checks what at the random number is equal to; places word vertically
190 rem: if rand is 0 and places the word horizontally if rand is 1

Теперь мне нужно поместить слова в сетку

Любые идеи?


person Surz    schedule 23.03.2014    source источник


Ответы (1)


Строковая функция MID$

Еще одна жизненно важная функция — MID$. Эта функция выбирает часть любой строки, переданной ей в качестве аргумента.

Введите команду:

PRINT MID$("ABCOEFG",2,4)

Результат покажет вам, как работает MID$. В этом случае он отображает строку из 4 символов, начиная со 2-го символа «ABCDEFG».

Формально функция MID$ принимает три аргумента, разделенных запятыми и заключенных в квадратные скобки. Аргументы следующие:

  • Во-первых, это строка, которая будет использоваться.
  • Второй — это число, указывающее позицию первого символа в результате.
  • Третье — это еще одно число, указывающее длину результата.

Как и следовало ожидать, любой из аргументов может быть переменным соответствующего вида. Длина результата может быть любой от 0 (называемой строкой null) до полной длины первого аргумента. На практике это часто один символ.

Вот простая программа для ввода слова и отображения его в обратном порядке. Внимательно изучите его и обратите внимание на то, как используются функции LEN и MID$:

10 INPUT "PLEASE TYPE A WORD"; X$  
20 PRINT "YOUR WORD BACKWARD IS"  
30 FOR J = LEN(X$) TO 1 STEP - 1  
40 PRINT MID$(X$,J, 1);  
50 NEXT J  
60 STOP  

Введите программу и проверьте ее самостоятельно; попробуйте слова из 1, 2 или более символов.

person Surz    schedule 24.03.2014