易码技术论坛

 找回密码
 加入易码
搜索
查看: 152735|回复: 2

E路客进~求助你的原码(LavaX1的问题,热心者也进哦)

[复制链接]
发表于 2007-1-20 20:29:42 | 显示全部楼层
stri函数要ismid在前面,还要定义全局char str[足够大,根据maxl];
 楼主| 发表于 2007-1-20 20:44:43 | 显示全部楼层
啊~~~~~~
stri里面可是调用了ismid的啊,而且这一段是在你的EWW里摘抄的
 楼主| 发表于 2007-1-20 15:17:01 | 显示全部楼层 |阅读模式
  1. long xx;
  2. char str[60],sstr[19];
  3. long ismid(long nowp,long end){
  4. long i;
  5. for(i=nowp;*i>=160&&i>=end;i--);
  6. return(!((nowp-i)%2));
  7. }
  8. //整数输入,参数:(Locate的y,Locate的x)
  9. long numi(char y,char x){
  10. long ans,max;
  11. char k,i;
  12. char c[11],show[30];
  13. k=0;ans=0;max=100000000;strcpy(c,"0bnmghjtyu");
  14. while(k!=13&&k!=27){
  15. memset(show,0,30);
  16. Locate(y,x);
  17. if(ans>max)ans=max;
  18. printf("%d ",ans);
  19. k=getchar();
  20.   for(i=0;i<10;i++){if(k==c[i])ans=ans*10+i;}
  21.   if(k==29||k==23)ans=ans/10;
  22.   else if(k==27)ans=-1;
  23. }//while
  24. return(ans);
  25. }
  26. void stri(char y,char x,int o,int maxl){
  27. char ch[3],show[21];
  28. int word,n,l,sx;
  29. memset(str,0,maxl+1);memset(ch,0,3);strcpy(str,o);n=0;sx=0;
  30. while(ch[0]!=13){
  31. memset(show,0,21);
  32. if(n<sx)sx=n;
  33. if(n>sx+20)sx=n-20;
  34. memcpy(show,str+sx,20);
  35. l=strlen(str);
  36. if(show[0]>=160&&ismid(str+sx,str))show[0]=&#39;_&#39;;
  37. if(show[19]>=160&&!ismid(show+19,show))show[19]=&#39;_&#39;;
  38. Locate(4,0);printf("              ");
  39. Locate(y,0);printf("%s  ",show);Box(8*(n-sx),16*y,8*(n-sx)+1,16*y+16,1,2);
  40. if(ch[0]==22||ch[0]==23){Delay(80);ReleaseKey(128);}
  41. word=GetWord(3);
  42. ch[0]=word;
  43. if(isprint(ch[0])&&l<maxl){memmove(str+n+1,str+n,l-n);str[n]=ch[0];n++;}
  44. else if(ch[0]>=160&&l<maxl-1){ch[1]=word>>8;memmove(str+n+2,str+n,l-n);memcpy(str+n,ch,2);n=n+2;}
  45. else if(ch[0]==27){strcpy(str,"");return;}
  46. else if(ch[0]==29&&n>0){
  47. if(str[n-1]>=160){memmove(str+n-2,str+n,l-n);memset(str+l-2,0,2);n=n-2;}
  48. else {memmove(str+n-1,str+n,l-n);str[l-1]=0;n--;}}
  49. else if(ch[0]==23){if(n==0)n=l;else if(str[n-1]>=160)n=n-2;else n--;
  50.   }//if完
  51. else if(ch[0]==22){if(n>=l)n=0;else if(str[n]>=160)n=n+2;else n++;
  52.   }//if完
  53. else if(ch[0]==30){memset(str,0,maxl+1);Locate(y,0);printf("              ");n=0;}
  54. else if(ch[0]==28)n=0;
  55. else if(ch[0]==31)n=strlen(str);
  56. }//while完
  57. }
  58. void main()
  59. {
  60. SetScreen(0);
  61. xx=numi(3,1);
  62. stri(0,0,"默认",10);
  63. printf("\n%s\n%d",str,xx);
  64. getchar();
  65. }
复制代码
从你的EWW中提取出的对我有用的函数,我只想要字符输入和数字输入,请指教stri函数和numi函数中还有没有无关的语句.
找来找去还是这里面的输入最好用,先谢过
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-3-28 21:25 , Processed in 0.010048 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表