home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <stdlib.h>
- #include <dos.h>
- #include <string.h>
- #include "system.c"
- #include "system2.c"
- char scr[10][250];
- int x,y;
- int curr,curc;
- int Ins,width;
- char *level[11];
- int count3;
- main(argc,argv)
- int argc;
- char *argv[];
- {
- int dow[2],dol[2];
- int dcount1,dcount2;
- int i,j,m,n,hanzi;
- int srow[2],scol[2];
- int logic;
- char mid[250],c1,c2;
- int charact;
- FILE *fp;
- level[0]="⌐º";level[1]="⌐Ñ";level[2]="⌐∩";
- level[3]="⌐╫";level[4]="⌐╟";level[5]="⌐╧";
- level[6]="⌐▀";level[7]="⌐│";level[8]="⌐╖";
- level[9]="⌐╗";level[10]="⌐┐"; width=250;
- dcount1=dcount2=0; curr=0; curc=0; Ins=0;
- x=0; y=0; setcursor(x,y);
- for (i=0;i<10;i++)
- for (j=0;j<250;j++)
- scr[i][j]='\n';
- if ((fp=fopen(argv[1],"r"))!=NULL)
- while (fgets(mid,250,fp)!=NULL)
- {
- for (i=0;i<9;i++)
- for (j=0;j<width;j++)
- scr[i][j]=scr[i+1][j];
- for (j=0;j<width;j++)
- scr[9][j]='\n';
- sscanf(mid,"#%[^#]#",scr[9]);
- }
- fclose(fp);
- for (x=0;x<10;x++) {
- setcursor(x,0);
- for (y=0;y<78;y++) {
- if (scr[curr+x][y]!='\n') printf("%c",scr[curr+x][y]);
- else printf(" ");
- }
- }
- count3=0;
- setcursor(0,0); display();
- while ((charact=getchb())!=27){ switch (charact){
- case 12:getcursor(&x,&y);
- if ((curc+y)%2==1){
- setcursor(24,0);printf("╣Γ ▒Ω ┴╨ ╩² ▒╪ ╨δ ╬¬ ┼╝ ╩²ú");
- printf("╝ⁿ ╚╬ ╥Γ ╝ⁿ ╝╠ ╨° ...");
- getchb();setcursor(x,y);display();break;}
- srow[count3]=x+curr;scol[count3++]=curc+y;
- if (count3!=2) break;
- if (srow[0]>srow[1])
- {i=srow[0]; srow[0]=srow[1]; srow[1]=i;}
- if (scol[0]>scol[1])
- {i=scol[0]; scol[1]=scol[0]; scol[1]=i;}
- for (m=srow[0];m<=srow[1];m++)
- for (n=0;n<=scol[1]+1;n++)
- if (scr[m][n]=='\n') scr[m][n]=' ';
- if (srow[0]==srow[1]){
- lline(srow[0],scol[0],scol[1]);count3=0;continue;}
- if (scol[1]==scol[0]){
- hline(scol[0],srow[0],srow[1]);count3=0;continue;}
- hline(scol[1],srow[0],srow[1]);
- hline(scol[0],srow[0],srow[1]);
- lline(srow[1],scol[0],scol[1]);
- lline(srow[0],scol[0],scol[1]);
- count3=0;
- display(); break;
- case 20:getcursor(&x,&y);
- if ((y+curc)%2==1){
- setcursor(24,0);
- printf("╣Γ ▒Ω ┴╨ ╩² ▒╪ ╨δ ╬¬ ┼╝ ╩²ú¼ ╝ⁿ ╚╬ ╥Γ ╝ⁿ ╝╠ ╨° ... ");
- getchb();setcursor(x,y);display();break;}
- dow[dcount2]=curr+x;dol[dcount2++]=curc+y;
- if (((dcount2%2)==0)&&(dol[0]==dol[1])){
- if (dow[0]>dow[1]){
- i=dow[0];dow[0]=dow[1];dow[1]=i;}
- for (i=dow[0];i<=dow[1];i++){
- mid[0]=scr[i][dol[0]];mid[1]=scr[i][dol[0]+1];mid[2]='\0';
- if (streq(mid,level[0])){
- scr[i][dol[0]]=' ';scr[i][dol[0]+1]=' ';
- continue;}
- logic=0;
- for (j=2;j<11;j++)
- logic=logic||streq(mid,level[j]);
- logic=logic||streq(mid,level[0]);
- if (logic&&(i!=dow[0])&&(i!=dow[1])){ scr[i][dol[0]]=level[1][0];scr[i][dol[0]+1]=level[1][1];continue;}
- if (i==dow[0]){
- logic=streq(mid,level[3])||streq(mid,level[7])||streq(mid,level[8]);
- if (logic){
- scr[i][dol[0]]=level[1][0];scr[i][dol[0]+1]=level[1][1];continue;}
- if (streq(mid,level[2])){
- scr[i][dol[0]]=level[6][0];scr[i][dol[0]+1]=level[6][1];continue;}
- if (streq(mid,level[4])){
- scr[i][dol[0]]=level[9][0];scr[i][dol[0]+1]=level[9][1];continue;}
- if (streq(mid,level[5])){
- scr[i][dol[0]]=level[10][0];scr[i][dol[0]+1]=level[10][1];continue;}
- }
- if (i==dow[1]){
- logic=streq(mid,level[6])||streq(mid,level[9])||streq(mid,level[10]);
- if (logic){
- scr[i][dol[0]]=level[1][0];scr[i][dol[0]+1]=level[1][1];continue;}
- if (streq(mid,level[2])){
- scr[i][dol[0]]=level[3][0];scr[i][dol[0]+1]=level[3][1];continue;}
- if (streq(mid,level[4])){
- scr[i][dol[0]]=level[7][0];scr[i][dol[0]+1]=level[7][1];continue;}
- if (streq(mid,level[5])){
- scr[i][dol[0]]=level[8][0];scr[i][dol[0]+1]=level[8][1];continue;}
- }
- }
- if (dow[0]<curr){
- for (i=curr;i<=dow[1];i++){
- setcursor(i-curr,dol[0]-curc);
- printf("%c%c",scr[i][dol[0]],scr[i][dol[0]+1]);} }
- if (dow[1]>curr+8){
- for (i=dow[0];i<curr+19;i++){
- setcursor(i-curr,dol[0]-curc);
- printf("%c%c",scr[i][dol[0]],scr[i][dol[0]+1]);}
- }
- if (dow[0]>=curr&&dow[1]<=curr+8){
- for (i=dow[0];i<=dow[1];i++){
- setcursor(i-curr,dol[0]-curc);
- printf("%c%c",scr[i][dol[0]],scr[i][dol[0]+1]);}
- }
- dcount2=0;}
- if (dcount2%2==0&&dol[0]!=dol[1]) dcount2=0;
- display();break;
- case 4:getcursor(&x,&y);
- if ((y+curc)%2==1){
- setcursor(24,0);
- printf("╣Γ ▒Ω ┴╨ ╩² ▒╪ ╨δ ╬¬ ┼╝ ╩²ú¼╝ⁿ ╚╬ ╥Γ ╝ⁿ ╝╠ ╨δ ... ");
- getchb();setcursor(x,y);display();break;}
- dow[dcount1]=curr+x;dol[dcount1++]=curc+y;
- if (((dcount1%2)==0)&&(dow[0]==dow[1])){
- if (dol[0]>dol[1]){
- i=dol[0];dol[0]=dol[1];dol[1]=i;}
- for (i=dol[0];i<=dol[1];i=i+2){
- mid[0]=scr[dow[0]][i];mid[1]=scr[dow[1]][i+1];mid[2]='\0';
- if (streq(mid,level[1])){
- scr[dow[0]][i]=' ';scr[dow[0]][i+1]=' ';continue;}
- logic=0; for(j=2;j<11;j++)
- logic=logic||streq(mid,level[j]);
- if (logic&&(i!=dol[0])&&(i!=dol[1])){
- scr[dow[0]][i]=level[0][0];scr[dow[0]][i+1]=level[0][1];continue;}
- if (i==dol[0]){
- logic=streq(mid,level[4])||streq(mid,level[7])||streq(mid,level[9]);
- if (logic){
- scr[dow[0]][i]=level[0][0];scr[dow[0]][i+1]=level[0][1];continue;}
- if (streq(mid,level[2])){
- scr[dow[0]][i]=level[5][0];scr[dow[0]][i+1]=level[5][1];continue;}
- if (streq(mid,level[3])){
- scr[dow[0]][i]=level[8][0];scr[dow[0]][i+1]=level[8][1];continue;}
- if (streq(mid,level[6])){
- scr[dow[0]][i]=level[10][0];scr[dow[0]][i+1]=level[10][1];continue;}
- }
- if (i==dol[1]){
- logic=streq(mid,level[5])||streq(mid,level[8])||streq(mid,level[10]);
- if (logic){
- scr[dow[0]][i]=level[0][0];scr[dow[0]][i+1]=level[0][1];continue;}
- if (streq(mid,level[2])){
- scr[dow[0]][i]=level[4][0];scr[dow[0]][i+1]=level[4][1];continue;}
- if (streq(mid,level[6])){
- scr[dow[0]][i]=level[9][0];scr[dow[0]][i+1]=level[9][1];continue;}
- if (streq(mid,level[3])){
- scr[dow[0]][i]=level[7][0];scr[dow[0]][i+1]=level[7][1];continue;}
- }
- } if (dol[0]<curc){
- i=curc; setcursor(dow[0]-curr,i-curc);
- while (i<=dol[1]+1){
- printf("%c",scr[dow[0]][i++]);}
- }
- if (dol[1]>curc+79){
- setcursor(dow[0]-curr,dol[0]-curc);
- for (i=dol[0];i<curc+80;i++)
- printf("%c",scr[dow[0]][i]);
- }
- if ((dol[0]>=curc)&&(dol[1]<=curc+79)){
- setcursor(dow[0]-curr,dol[0]-curc);
- for (i=dol[0];i<=dol[1]+1;i++)
- printf("%c",scr[dow[0]][i]);
- }
- dcount1=0;}
- if ((dcount1%2==0)&&(dow[0]!=dow[1])) dcount1=0;
- display(); break;
- /* case 259:help();
- clear();
- display_all();
- break;
- case 260:save_format(); break;*/
- case 272:top_move(); break;
- case 280:bottom_move(); break;
- case 275:left_move(); break;
- case 277:right_move(); break;
- case 271:row_head(); break;
- case 279:row_tail(); break;
- case 282:Ins=(Ins==0)?1:0; break;
- case 9:getcursor(&x,&y);
- if (curc>=234) break;
- if (y+10>75) {
- curc=curc+39; display_all();
- y=y-39;
- }
- y=y+10; setcursor(x,y); break;
- case 1:getcursor(&x,&y);
- if ((y-10<0)&&(curc==0)) {setcursor(x,0); break;}
- if ((y-10<0)&&(curc!=0)) {
- curc=curc-39; y=y+39;
- display_all();
- } y=y-10; setcursor(x,y); break;
- case 8:getcursor(&x,&y);
- if ((y==0)&&(curc==0)) break;
- if ((y==0)&&(curc!=0)) {
- curc=curc-39; y=y+39;
- display_all();
- setcursor(x,y);
- }
- n=y+curc;
- scr[curr+x][n-1]=scr[curr+x][n];
- display_row(); setcursor(x,y-1);
- break;
- case 283:getcursor(&x,&y); m=curc+y;
- if (scr[curr+x][curc+y]=='\n') break;
- while (scr[curr+x][m]!='\n'){
- scr[curr+x][m]=scr[curr+x][m+1]; m++;}
- display_row(); setcursor(x,y); break;
- case 25:getcursor(&x,&y);
- logic=0; for (m=curr+x;m>=1;m--){
- for (n=0;n<width;n++)
- scr[m][n]=scr[m-1][n];}
- for (n=0;n<width;n++) scr[m][n]='\n';
- setcursor(1,0);
- display_all(); setcursor(x,0);
- break;
- case 14:getcursor(&x,&y);
- for (m=curr+x;m>=1;m--)
- for (n=0;n<width;n++)
- scr[m-1][n]=scr[m][n];
- for (n=0;n<width;n++)
- scr[curr+x][n]='\n';
- downmove(x,9,1); setcursor(x,0);
- display_row();
- setcursor(x,0);
- display(); break;
- case 13:getcursor(&x,&y);
- if (curc==0&&x<9) {setcursor(x+1,0); break;}
- if (curc!=0) curc=0;
- display_all(); setcursor(x,0);
- break;
- default: getcursor(&x,&y);
- if (y+1>74){
- curc=curc+40;
- display_all(); y=y-40;
- setcursor(x,y);
- break;
- }
- if ((charact<=26)||(charact>255)) break;
- n=y+curc;
- putchar(charact);
- if (scr[curr+x][n]=='\n'){
- scr[curr+x][n]=charact;
- n--;
- while (scr[curr+x][n]=='\n') scr[curr+x][n--]=' ';
- break;
- }
- switch(Ins){
- case 1:while (scr[curr+x][n]!='\n') {
- n++;
- }
- while (n>y+curc){
- scr[curr+x][n]=scr[curr+x][n-1];
- n--;}
- scr[curr+x][y]=charact; getcursor(&x,&y);
- display_row(); setcursor(x,y);
- break;
- case 0:if (scr[curr+x][n]=='&') {
- setcursor(x,y); putchar('&'); break;
- }
- scr[curr+x][n]=charact;
- break;
- }
- }
- display();
- }
- /* setcursor(24,0);
- printf("╩╟ ╖± ╜½ ╕± ╩╜ ╬─ ╝■ ┤µ ┼╠ (Y/N) ");
- charact=getchb();
- if ((charact=='y')||(charact=='Y')) save_format();
- return(1);*/
- fp=fopen(argv[1],"w");
- for (i=0;i<10;i++)
- {
- if (scr[i][0]=='\n') continue;
- fprintf(fp,"#");
- for (j=0;j<width;j++)
- {
- if (scr[i][j]!='\n') fprintf(fp,"%c",scr[i][j]);
- else break;
- }
- fprintf(fp,"#,#F#,,\n");
- }
- fclose(fp);
- }
-
- /*-------------------------------display_all-------------------------------*/
- display_all()
- {
- int curbuf; curbuf=x;
- for (x=0;x<10;x++) {setcursor(x,0); display_row();}
- x=curbuf;
- }
- /*-------------------------------right_move--------------------------------*/
- right_move()
- {
- getcursor(&x,&y);
- if (y+curc==width-2) return(0);
- if (y+1<75) setcursor(x,y+1);
- else {
- curc=curc+39;
- display_all(); y=y-39; setcursor(x,y);
- }
- }
- /*--------------------------------left_move--------------------------------*/
- left_move()
- {
- getcursor(&x,&y);
- if ((y==0)&&(curc==0)) return(0);
- if ((y==0)&&(curc!=0)) {
- curc=curc-39; y=y+39; display_all();
- }
- setcursor(x,y-1);
- }
- /*---------------------------------top_move-------------------------------*/
- top_move()
- {
- int curbuf;
- getcursor(&x,&y);
- if (x>0) { setcursor(x-1,y); return(0);}
- display_row();
- }
- /*---------------------------------bottom_move-----------------------------*/
- bottom_move(){
- int curbuf;
- getcursor(&x,&y);
- if (curr+x==9) return(0);
- if (x<9) {setcursor(x+1,y); return(0);}
- }
- /*---------------------------------row_head--------------------------------*/
- row_head()
- {
- int curbuf;
- getcursor(&x,&y); curbuf=x;
- if (curc==0) {setcursor(x,0); return(0);}
- curc=0;
- display_all(); setcursor(curbuf,0);
- }
- /*----------------------------------row_tail-------------------------------*/
- row_tail()
- {
- int curbuf,m;
- getcursor(&x,&y); curbuf=x;
- for (m=0;scr[x+curr][m]!='\n';m++);
- curc=(m/39)*39; y=m%39;
- display_all(); setcursor(curbuf,y);
- }
- /*----------------------------------display------------------------------*/
- display()
- {
- getcursor(&x,&y);
- x=x & 0x0ff;
- setcursor(24,0);
- if (Ins==1)
- printf(" ╣Γ ▒Ω ╨╨ ║┼:%2d ┴╨ :%2d ▓σ ╚δ ",curr+x+1,curc+y);
- if (Ins==0)
- printf(" ╣Γ ▒Ω ╨╨ ║┼:%2d ┴╨ :%2d ╕▓ ╕╟ ",curr+x+1,curc+y);
- setcursor(x,y);
- }