- 注册时间
- 2005-8-7
- 最后登录
- 1970-1-1
|
在我编写的作图程序中,为了使用方便,需要自定义字符串
用最直接也是最SB的方法是这样的:
30 LOCATE 1,6RINT P$;
31 W=ASC(INKEY$):IF W=99 THEN P$=P$+"EXP(":K=3
32 IF W=113 THEN P$=P$+"SIN(":K=3
33 IF W=119 THEN P$=P$+"COS(":K=3
34 IF W=101 THEN P$=P$+"TAN(":K=3
35 IF W=97 THEN P$=P$+"LOG(":K=3
36 IF W=100 THEN P$=P$+"^"
37 IF W=102 THEN P$=P$+"SQR(":K=3
38 IF W=122 THEN K=K=0:IF K THEN P$=P$+"(" ELSE P$=P$+")"
39 IF W=120 THEN P$=P$+"X"
40 IF W=21 THEN P$=P$+"+"
41 IF W=20 THEN P$=P$+"-"
42 IF W=108 THEN P$=P$+"*"
43 IF W=111 THEN P$=P$+"/"
44 IF W=32 THEN P$=P$+"="
45 IF W=22 THEN P$=P$+">"
46 IF W=23 THEN P$=P$+"<"
47 IF W=46 THEN P$=P$+"."
48 IF W=48 THEN P$=P$+"0"
49 IF W=98 THEN P$=P$+"1"
50 IF W=110 THEN P$=P$+"2"
51 IF W=109 THEN P$=P$+"3"
52 IF W=103 THEN P$=P$+"4"
53 IF W=104 THEN P$=P$+"5"
54 IF W=106 THEN P$=P$+"6"
55 IF W=116 THEN P$=P$+"7"
56 IF W=121 THEN P$=P$+"8"
57 IF W=117 THEN P$=P$+"9"
58 IF W=115 THEN P$=P$+"ABS(":K=3
59 IF W=29 AND K-2 THEN IF LEN(P$)>1 THEN P$=LEFT$(P$,LEN(P$)-1)ELSE P$=""
60 IF W=29 AND K=2 THEN IF LEN(P$)>4 THEN K=0$=LEFT$(P$,LEN(P$)-4)ELSE P$="":K=0
61 IF W=27 THEN 800
62 IF K>1 THEN K=K-1
63 IF W-13 THEN 30
经windybell点拨之后发现了以下自定义的字符串映射的改进版,是这样的:
30 X1$=CHR$(60)+CHR$(62)+CHR$(21)+CHR$(20)+"dxlo .0bnmghjtyu":Y1$="<>+-^X*/=.0123456789":定义一个1对1的映射,具体在39~41行实施
31 X2$="cqweasf":Y2$="EXPSINCOSTANLOGABSSQR":定义一个1对3的映射,具体在34~36行实施
32 LOCATE 1,6RINT P$;
33 W=ASC(INKEY$)
34 FOR I=0 TO 6
35 IF CHR$(W)=MID$(X2$,I+1,1)THEN P$=P$+MID$(Y2$,I*3+1,3)+"(":K=3
36 NEXT
38 IF W=122 THEN K=K=0:IF K THEN P$=P$+"(" ELSE P$=P$+")"
39 FOR I=1 TO 18
40 IF CHR$(W)=MID$(X1$,I,1)THEN P$=P$+MID$(Y1$,I,1)
41 NEXT
59 IF W=29 AND K-2 THEN IF LEN(P$)>1 THEN P$=LEFT$(P$,LEN(P$)-1)ELSE P$=""
60 IF W=29 AND K=2 THEN IF LEN(P$)>4 THEN K=0:P$=LEFT$(P$,LEN(P$)-4)ELSE P$="":K=0
61 IF W=27 THEN 800
62 K=K-(K>1)
63 IF W-13 THEN 30
这样改动之后代码缩减了400个字节
不过一捧米说还有更简单的方法,搞得我跟windybell都一头雾水,如果有谁知道的话分享一下也不妨啊^_^ |
|