在Commodore 64 BASIC中选择随机字符串

时间:2010-10-12 02:36:30

标签: string random basic commodore

我的程序中有这个变量声明:

X="MAGENTA"
Y="CYAN"
Z="TAN"
A="KHAKI"

现在我想要的是随机选择其中一个和PRINT它。但是怎么做呢?

3 个答案:

答案 0 :(得分:4)

我的BASIC非常生疏,但你应该能够使用类似的东西:

10 X$ = "MAGENTA"
20 Y$ = "CYAN"
30 Z$ = "TAN"
40 A$ = "KHAKI"
50 N = INT(RND(1) * 4)
60 IF N = 0 THEN PRINT X$
70 IF N = 1 THEN PRINT Y$
80 IF N = 2 THEN PRINT Z$
90 IF N = 3 THEN PRINT A$

或者,将其放在子程序中以便重复使用代码:

  10 X$ = "MAGENTA"
  20 Y$ = "CYAN"
  30 Z$ = "TAN"
  40 A$ = "KHAKI"
  50 GOSUB 1000
  60 PRINT RC$
  70 END

1000 TV = INT(RND(1) * 4)
1010 IF TV = 0 THEN RC$ = X$
1020 IF TV = 1 THEN RC$ = Y$
1030 IF TV = 2 THEN RC$ = Z$
1040 IF TV = 3 THEN RC$ = A$
1050 RETURN

当然,你可能应该使用数组来做这类事情,所以你可以使用:

10 DIM A$(3)
10 A$(0) = "MAGENTA"
20 A$(1) = "CYAN"
30 A$(2) = "TAN"
40 A$(3) = "KHAKI"
50 PRINT A$(INT(RND(1)*4))

答案 1 :(得分:1)

以上答案是正确而全面的。

另一方面,这个答案没有,但是我上个月实际上在做Commodore BASIC的一点工作,并决定有时候字符串索引可能会有用,所以这是一个非答案,它重新构造了您的问题

100 X$ = "MAGENTACYAN TAN KHAKI " 110 PRINT MID$(X$,INT(RND(1)*4)*7, 7)

此代码获取从0到3的随机int,然后使用它在包含所有四个条目的单个字符串中查找起始索引,每个条目都被填充(必要时)为7个字符。之所以需要填充,是因为MID $的最终参数是要提取的子字符串的长度。

为什么要生?

何时考虑在数组上建立索引: (1) when your string data is near-uniform length, and (2) when you have a LOT of little strings.

如果这两个条件为真,则包括数据在内的完整代码将更加紧凑,并且由于分配了更少的指针而占用了更少的内存。

P.S。如果您发现我犯了一个错误,那就加分了!

答案 2 :(得分:0)

这是另一种实现方法,对输出使用一个变量,然后根据[1..4]范围内的随机数对ON..GOSUB进行设置。

10 ON INT(RND(1)*4+1) GOSUB 100,110,120,130 20 PRINT A$ 30 END 100 A$ = "MAGENTA":RETURN 110 A$ = "CYAN":RETURN 120 A$ = "TAN":RETURN 130 A$ = "KHAKI":RETURN