键盘映射(按键连续操作)
映射是指按住键后程序连续操作。
而读键是指按一次键程序操作。
原理:每一行映射的数值是和二进制有关的,文曲行将键盘映射从上倒下那一行的按键被按下用0/1表示,1表示没被按下,0表示被按下,这就是为什么平时内存映射的值都是255的原因了,也就是说,当最下面一排的按键中有键被按下,则对应映射变为01111111就是127,当倒数第二排的按键被按下,则映射变为10111111就是191,当不在同一排的按键同时被按下时(同一映射区的),则处理法则也相同,即同时由1变成0如[符号][B|1][G|4][T|7]键被同时按下时,映射变为00000111就是7。其他以此类推。如果不是同一行的,且不属于同一个映射,则单独算就是了!
如:IF PEEK(188)=127 THEN GOSUB 200
就是指若按住向左键不放则连续运行200行的子程序。
括号内的是下表的竖行上对应的数字,所等于的值是下表横行上对应的数字。
NC1020键盘映射详表 :
██127---191--123--239--247---251
188 左---上页---K----I---右-----?
189 =------M----J----U---下页---?
190 。-----N----H----Y---输入--发音
191 符号---B----G----T----P----报时
192 跳出---V----F----R---下-----F4
193 输入法-C----D----E---上-----F3
194 中英数-X----S----W----L-----F2
195 求助---Z----A----Q----O-----F1
这个表是有规律的,127竖行对应文曲星键盘最底下一行的键,
191竖行对应倒数第二行,223对应倒数三行,239对应倒数四行,247
每行剩下的键,251最右边一竖排键。?指没查到。
10 X=76:Y=44
20 IF PEEK(193)=247 GOTO 70
30 IF PEEK(192)=247 GOTO 120
40 IF PEEK(188)=247 GOTO 170
50 IF PEEK(188)=127 GOTO 220
60 BEEP :GOTO 20
70 CIRCLE X,Y,4,1,0
80 Y=Y-1
90 IF Y〈 1 THEN Y=Y+80
100 CIRCLE X,Y,4,1,1
110 GOTO 20
120 CIRCLE X,Y,4,1,0
130 Y=Y+1
140 IF Y〉79 THEN Y=Y-80
150 CIRCLE X,Y,4,1,1
160 GOTO 20
170 CIRCLE X,Y,4,1,0
180 X=X+1
190 IF X〉159 THEN X=X-160
200 CIRCLE X,Y,4,1,1
210 GOTO 20
220 CIRCLE X,Y,4,1,0
230 X=X-1
240 IF X〈 1THEN X=X+160
250 CIRCLE X,Y,4,1,1
260 GOTO 20
这样就可以通过方向键映射来连续控制这个小黑圆移动了。
只要映射值的横纵两个值均不相等,就可以同时映射,
文曲星最多可同时映射6个键。
就是你同时按下6个键都会有反应。
再转一个帖说明一下:
[转帖]屏幕动画控制示例
原作者:追风
1 CLS:GRAPH:PRINT "屏幕动画控制示例":LOCATE 3,10 :PRINT "制作:追风":LOCATE
4,10
10 PRINT "鸣谢:LP":B$=INKEY$:CLS
20 XZ=2 :XY=14 :XSD=8 :YZY=6 :YS=4 :YD=12 :N=0 :EX=176 :EY=76 :CIRCLE EX,EY,4
25 CIRCLE EX,EY,2,0,0 :XZZ=XZ :YZYY=YZY :XYY=XY :YDD=YD :YSS=YS :XSDD=XSD
30 CIRCLE XZ,YZY,2,1 :CIRCLE XY,YZY,2,1 :CIRCLE XSD,YS,2,1 :CIRCLE XSD,YD,4,1
40 FOR I=1 TO 2 STEP 0 :N=0
50 IF PEEK(195)=247 THEN GOSUB 60
51 IF PEEK(196)=247 THEN GOSUB 70
52 IF PEEK(191)=127 THEN GOSUB 80
53 IF PEEK(191)=247 THEN GOSUB 90
54 IF PEEK(199)=155 THEN POKE 199,155
55 IF N>0 THEN 123 ELSE 140
60 YZYY=YZYY+4-(YZYY>=70)*4 :YSS=YSS+4-(YSS>=68)*4 :YDD=YDD+4-(YDD>=76)
*4 :N=1 :RETURN
70 YZYY=YZYY-4+(YZYY<=6)*4 :YSS=YSS-4+(YSS<=4)*4 :YDD=YDD-4+(YDD<=12)
*4 :N=1 :RETURN
80 XZZ=XZZ-4+(XZZ<=2)*4 :XYY=XYY-4+(XYY<=14)*4:XSDD=XSDD-4+(XSDD<=8)
*4 :N=1 :RETURN
90 XYY=XYY+4-(XYY>=158)*4 :XZZ=XZZ+4-(XZZ>=146)*4 :XSDD=XSDD+4-(XSDD>=152)
*4 :N=1 :RETURN
123 CIRCLE XZ,YZY,2,1,0 :CIRCLE XY,YZY,2,1,0
125 CIRCLE XSD,YS,2,1,0 :CIRCLE XSD,YD,4,1,0
126 XZ=XZZ :YZY=YZYY :XY=XYY :YD=YDD :YS=YSS :XSD=XSDD
130 CIRCLE XZ,YZY,2,1 :CIRCLE XY,YZY,2,1 :CIRCLE XSD,YS,2,1 :CIRCLE XSD,YD,4,1
140 EXD=0 :EYD=0 :FX=INT(RND(8)*2)
150 WHILE EXD=0 AND EYD=0
160 IF EX>XSD AND FX=0 THEN EXD=-4
170 FX=INT(RND(9)*2)
180 IF EX<XSD AND FX=0 THEN EXD=4
190 FX=INT(RND(2)*2)
200 IF EY>YD AND FX=1 THEN EYD=-4
210 FX=INT(RND(1)*2)
220 IF EY<YD AND FX=1 THEN EYD=4
225 IF EX=XSD AND EY=YD THEN 280
226 IF ABS(INT(EX-XSD))<4 AND ABS(INT(EY-YD))<4 THEN 280
230 FX=INT(RND(11)*2):WEND
245 CIRCLE EX,EY,4,1,0
250 EX=EX+EXD :EY=EY+EYD
260 CIRCLE EX,EY,4,1 :CIRCLE EX,EY,2,0,0 :GOTO 300
280 BEEP:CLS:PRINT "GAME OVER":B$=INKEY$
290 END
映射是指按住键后程序连续操作。
而读键是指按一次键程序操作。
原理:每一行映射的数值是和二进制有关的,文曲行将键盘映射从上倒下那一行的按键被按下用0/1表示,1表示没被按下,0表示被按下,这就是为什么平时内存映射的值都是255的原因了,也就是说,当最下面一排的按键中有键被按下,则对应映射变为01111111就是127,当倒数第二排的按键被按下,则映射变为10111111就是191,当不在同一排的按键同时被按下时(同一映射区的),则处理法则也相同,即同时由1变成0如[符号][B|1][G|4][T|7]键被同时按下时,映射变为00000111就是7。其他以此类推。如果不是同一行的,且不属于同一个映射,则单独算就是了!
如:IF PEEK(188)=127 THEN GOSUB 200
就是指若按住向左键不放则连续运行200行的子程序。
括号内的是下表的竖行上对应的数字,所等于的值是下表横行上对应的数字。
NC1020键盘映射详表 :
██127---191--123--239--247---251
188 左---上页---K----I---右-----?
189 =------M----J----U---下页---?
190 。-----N----H----Y---输入--发音
191 符号---B----G----T----P----报时
192 跳出---V----F----R---下-----F4
193 输入法-C----D----E---上-----F3
194 中英数-X----S----W----L-----F2
195 求助---Z----A----Q----O-----F1
这个表是有规律的,127竖行对应文曲星键盘最底下一行的键,
191竖行对应倒数第二行,223对应倒数三行,239对应倒数四行,247
每行剩下的键,251最右边一竖排键。?指没查到。
10 X=76:Y=44
20 IF PEEK(193)=247 GOTO 70
30 IF PEEK(192)=247 GOTO 120
40 IF PEEK(188)=247 GOTO 170
50 IF PEEK(188)=127 GOTO 220
60 BEEP :GOTO 20
70 CIRCLE X,Y,4,1,0
80 Y=Y-1
90 IF Y〈 1 THEN Y=Y+80
100 CIRCLE X,Y,4,1,1
110 GOTO 20
120 CIRCLE X,Y,4,1,0
130 Y=Y+1
140 IF Y〉79 THEN Y=Y-80
150 CIRCLE X,Y,4,1,1
160 GOTO 20
170 CIRCLE X,Y,4,1,0
180 X=X+1
190 IF X〉159 THEN X=X-160
200 CIRCLE X,Y,4,1,1
210 GOTO 20
220 CIRCLE X,Y,4,1,0
230 X=X-1
240 IF X〈 1THEN X=X+160
250 CIRCLE X,Y,4,1,1
260 GOTO 20
这样就可以通过方向键映射来连续控制这个小黑圆移动了。
只要映射值的横纵两个值均不相等,就可以同时映射,
文曲星最多可同时映射6个键。
就是你同时按下6个键都会有反应。
再转一个帖说明一下:
[转帖]屏幕动画控制示例
原作者:追风
1 CLS:GRAPH:PRINT "屏幕动画控制示例":LOCATE 3,10 :PRINT "制作:追风":LOCATE
4,10
10 PRINT "鸣谢:LP":B$=INKEY$:CLS
20 XZ=2 :XY=14 :XSD=8 :YZY=6 :YS=4 :YD=12 :N=0 :EX=176 :EY=76 :CIRCLE EX,EY,4
25 CIRCLE EX,EY,2,0,0 :XZZ=XZ :YZYY=YZY :XYY=XY :YDD=YD :YSS=YS :XSDD=XSD
30 CIRCLE XZ,YZY,2,1 :CIRCLE XY,YZY,2,1 :CIRCLE XSD,YS,2,1 :CIRCLE XSD,YD,4,1
40 FOR I=1 TO 2 STEP 0 :N=0
50 IF PEEK(195)=247 THEN GOSUB 60
51 IF PEEK(196)=247 THEN GOSUB 70
52 IF PEEK(191)=127 THEN GOSUB 80
53 IF PEEK(191)=247 THEN GOSUB 90
54 IF PEEK(199)=155 THEN POKE 199,155
55 IF N>0 THEN 123 ELSE 140
60 YZYY=YZYY+4-(YZYY>=70)*4 :YSS=YSS+4-(YSS>=68)*4 :YDD=YDD+4-(YDD>=76)
*4 :N=1 :RETURN
70 YZYY=YZYY-4+(YZYY<=6)*4 :YSS=YSS-4+(YSS<=4)*4 :YDD=YDD-4+(YDD<=12)
*4 :N=1 :RETURN
80 XZZ=XZZ-4+(XZZ<=2)*4 :XYY=XYY-4+(XYY<=14)*4:XSDD=XSDD-4+(XSDD<=8)
*4 :N=1 :RETURN
90 XYY=XYY+4-(XYY>=158)*4 :XZZ=XZZ+4-(XZZ>=146)*4 :XSDD=XSDD+4-(XSDD>=152)
*4 :N=1 :RETURN
123 CIRCLE XZ,YZY,2,1,0 :CIRCLE XY,YZY,2,1,0
125 CIRCLE XSD,YS,2,1,0 :CIRCLE XSD,YD,4,1,0
126 XZ=XZZ :YZY=YZYY :XY=XYY :YD=YDD :YS=YSS :XSD=XSDD
130 CIRCLE XZ,YZY,2,1 :CIRCLE XY,YZY,2,1 :CIRCLE XSD,YS,2,1 :CIRCLE XSD,YD,4,1
140 EXD=0 :EYD=0 :FX=INT(RND(8)*2)
150 WHILE EXD=0 AND EYD=0
160 IF EX>XSD AND FX=0 THEN EXD=-4
170 FX=INT(RND(9)*2)
180 IF EX<XSD AND FX=0 THEN EXD=4
190 FX=INT(RND(2)*2)
200 IF EY>YD AND FX=1 THEN EYD=-4
210 FX=INT(RND(1)*2)
220 IF EY<YD AND FX=1 THEN EYD=4
225 IF EX=XSD AND EY=YD THEN 280
226 IF ABS(INT(EX-XSD))<4 AND ABS(INT(EY-YD))<4 THEN 280
230 FX=INT(RND(11)*2):WEND
245 CIRCLE EX,EY,4,1,0
250 EX=EX+EXD :EY=EY+EYD
260 CIRCLE EX,EY,4,1 :CIRCLE EX,EY,2,0,0 :GOTO 300
280 BEEP:CLS:PRINT "GAME OVER":B$=INKEY$
290 END