是说错误仅在11点之后,但我无法确定,请帮忙
11 * RND(1) + 1;a
if a = 1 then let pinsb = 01110111
if a = 2 then let pinsb = 00010100
if a = 3 then let pinsb = 10110011
if a = 4 then let pinsb = 10110110
if a = 5 then let pinsb = 11010100
if a = 6 then let pinsb = 11100110
if a= 7 then let pinsb = 11100111
if a = 8 then let pinsb = 00110100
if a = 9 then let pinsb = 11110111
if a = 10 then let pinsb = 11110100
答案 0 :(得分:1)
由于[picaxe]
标签,我假设这个问题与PICAXE microcontroller及其基本语言有关。所发布的代码中有几件事在PICAXE BASIC中不起作用,因此我猜您对另一种方言很熟悉,或者正在尝试获取为另一种方言编写的一些代码并在PICAXE上使用它。如果不是这种情况,请告诉我们。
要使此代码在PICAXE上运行,您需要修复以下问题:
b0
,b1
,b2
等(字节变量)或w0
,w1
,w2
等(单词变量),除非您使用symbol
关键字为其定义另一个名称。random
关键字,该关键字将随机值分配给您指定的word变量。if … then
,goto
或gosub
使用单行exit
命令。否则,您需要使用if … then … endif
结构,但是可以使用:
在一行中编写此命令以分隔命令。%
字符。所以我认为您要这样做的是:
symbol a = w0 ; use the name 'a' for word variable w0
random a ; assign a random value of 0...65535 to a
a = a // 10 + 1 ; // is modulo i.e. remainder of a / 10, so result is in range 1 - 10
if a = 1 then : pinsB = %01110111 : endif
if a = 2 then : pinsB = %00010100 : endif
if a = 3 then : pinsB = %10110011 : endif
if a = 4 then : pinsB = %10110110 : endif
if a = 5 then : pinsB = %11010100 : endif
if a = 6 then : pinsB = %11100110 : endif
if a = 7 then : pinsB = %11100111 : endif
if a = 8 then : pinsB = %00110100 : endif
if a = 9 then : pinsB = %11110111 : endif
if a = 10 then : pinsB = %11110100 : endif
请始终记住,每个单词变量都由两个字节变量组成,因此,如果您使用过w0
,则不能同时使用b0
或b1
,等等。
答案 1 :(得分:0)
根据随机值分配二进制值:
此程序是用QB64编写的,它支持&B前缀,而QB45不支持。
REM assign binary values based on a random value
a = INT(RND * 10 + 1)
IF a = 1 THEN LET pinsb = &B1110111
IF a = 2 THEN LET pinsb = &B10100
IF a = 3 THEN LET pinsb = &B10110011
IF a = 4 THEN LET pinsb = &B10110110
IF a = 5 THEN LET pinsb = &B11010100
IF a = 6 THEN LET pinsb = &B11100110
IF a = 7 THEN LET pinsb = &B11100111
IF a = 8 THEN LET pinsb = &B110100
IF a = 9 THEN LET pinsb = &B11110111
IF a = 10 THEN LET pinsb = &B11110100
答案 2 :(得分:0)
使用二进制转换函数基于随机值分配二进制值:
REM assign binary values based on a random value using a binary convert function
A = INT(RND * 10 + 1)
IF A = 1 THEN pinsb = GetBinary("1110111")
IF A = 2 THEN pinsb = GetBinary("10100")
IF A = 3 THEN pinsb = GetBinary("10110011")
IF A = 4 THEN pinsb = GetBinary("10110110")
IF A = 5 THEN pinsb = GetBinary("11010100")
IF A = 6 THEN pinsb = GetBinary("11100110")
IF A = 7 THEN pinsb = GetBinary("11100111")
IF A = 8 THEN pinsb = GetBinary("110100")
IF A = 9 THEN pinsb = GetBinary("11110111")
IF A = 10 THEN pinsb = GetBinary("11110100")
END
FUNCTION GetBinary (B$)
FOR V = LEN(B$) TO 1 STEP -1
IF MID$(B$, V, 1) = "1" THEN
X# = X# + 2 ^ (V - 1)
END IF
NEXT
GetBinary = X#
END FUNCTION
答案 3 :(得分:0)
使用二进制基于随机值分配二进制值 转换函数从数据中读取值。
Canvas.SetLeft(ellipse, Convert.ToDouble(Seasonallist[i].X.Ticks));