⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 enigma4j.c

📁 ENIGMA3模拟WW II加密算法(含EXE文件)
💻 C
📖 第 1 页 / 共 5 页
字号:
        case 'a':
            return(6+KEY_XOFFS);
        case 'b':   
            return(42+KEY_XOFFS);
        case 'c':
            return(26+KEY_XOFFS);
        case 'd':
            return(22+KEY_XOFFS);
        case 'e':
            return(18+KEY_XOFFS);
        case 'f':
            return(30+KEY_XOFFS);
        case 'g':
            return(38+KEY_XOFFS);
        case 'h':
            return(46+KEY_XOFFS);
        case 'i':
            return(58+KEY_XOFFS);
        case 'j':   
            return(54+KEY_XOFFS);
        case 'k':   
            return(62+KEY_XOFFS);
        case 'l':
            return(66+KEY_XOFFS);
        case 'm':
            return(58+KEY_XOFFS);
        case 'n':   
            return(50+KEY_XOFFS);
        case 'o':   
            return(66+KEY_XOFFS);
        case 'p':   
            return(2+KEY_XOFFS);
        case 'q':
            return(2+KEY_XOFFS);
        case 'r':   
            return(26+KEY_XOFFS);
        case 's':   
            return(14+KEY_XOFFS);
        case 't':
            return(34+KEY_XOFFS);
        case 'u':   
            return(50+KEY_XOFFS);
        case 'v':   
            return(34+KEY_XOFFS);
        case 'w':   
            return(10+KEY_XOFFS);
        case 'x':   
            return(18+KEY_XOFFS);
        case 'y':   
            return(10+KEY_XOFFS);
        case 'z':   
            return(42+KEY_XOFFS);
        default :
            return(-1); 
    }
}
            
int keyy(c)                             /* returns the y cordinate */
                                        /* of a given key   */
int c;
{
    switch(c){
        case 'q':
        case 'w':
        case 'e':
        case 'r':
        case 't':
        case 'z':
        case 'u':
        case 'i':
        case 'o':
            return(19);
        case 'a':
        case 's':
        case 'd':
        case 'f':
        case 'g':
        case 'h':
        case 'j':
        case 'k':
            return(21);
        case 'y':
        case 'x':
        case 'c':
        case 'v':
        case 'b':
        case 'n':
        case 'm':
        case 'l':
        case 'p':
            return(23);
        default:
            return(-1);         
        
    }
}



void drawface()                         /* paint Enigma */
{
    cls(BG);                                /* screen black */
    
                                            /* head */
    writexy("*** ENIGMA 0.4 ***",BG,28,0);
    writexy("<ESC> Exit   <F1> Setup   <Cursorkey> move rotors",
        BG,6,1);

    putxy('Q',KEY_NOR,2+KEY_XOFFS,19);      /* keyboard */
    putxy(' ',KEY_NOR,1+KEY_XOFFS,19);
    putxy(' ',KEY_NOR,3+KEY_XOFFS,19);
    putxy('W',KEY_NOR,10+KEY_XOFFS,19);
    putxy(' ',KEY_NOR,9+KEY_XOFFS,19);
    putxy(' ',KEY_NOR,11+KEY_XOFFS,19);
    putxy('E',KEY_NOR,18+KEY_XOFFS,19);
    putxy(' ',KEY_NOR,17+KEY_XOFFS,19);
    putxy(' ',KEY_NOR,19+KEY_XOFFS,19);
    putxy('R',KEY_NOR,26+KEY_XOFFS,19);
    putxy(' ',KEY_NOR,25+KEY_XOFFS,19);
    putxy(' ',KEY_NOR,27+KEY_XOFFS,19);
    putxy('T',KEY_NOR,34+KEY_XOFFS,19); 
    putxy(' ',KEY_NOR,33+KEY_XOFFS,19); 
    putxy(' ',KEY_NOR,35+KEY_XOFFS,19); 
    putxy('Z',KEY_NOR,42+KEY_XOFFS,19);
    putxy(' ',KEY_NOR,41+KEY_XOFFS,19);
    putxy(' ',KEY_NOR,43+KEY_XOFFS,19);
    putxy('U',KEY_NOR,50+KEY_XOFFS,19);
    putxy(' ',KEY_NOR,49+KEY_XOFFS,19);
    putxy(' ',KEY_NOR,51+KEY_XOFFS,19);
    putxy('I',KEY_NOR,58+KEY_XOFFS,19);
    putxy(' ',KEY_NOR,59+KEY_XOFFS,19);
    putxy(' ',KEY_NOR,57+KEY_XOFFS,19);
    putxy('O',KEY_NOR,66+KEY_XOFFS,19);
    putxy(' ',KEY_NOR,65+KEY_XOFFS,19);
    putxy(' ',KEY_NOR,67+KEY_XOFFS,19);
    putxy('P',KEY_NOR,2+KEY_XOFFS,23);
    putxy(' ',KEY_NOR,3+KEY_XOFFS,23);
    putxy(' ',KEY_NOR,1+KEY_XOFFS,23);
    putxy(' ',KEY_NOR,5+KEY_XOFFS,21);
    putxy('A',KEY_NOR,6+KEY_XOFFS,21);
    putxy(' ',KEY_NOR,7+KEY_XOFFS,21);
    putxy(' ',KEY_NOR,13+KEY_XOFFS,21);
    putxy('S',KEY_NOR,14+KEY_XOFFS,21);
    putxy(' ',KEY_NOR,15+KEY_XOFFS,21);
    putxy(' ',KEY_NOR,21+KEY_XOFFS,21);
    putxy('D',KEY_NOR,22+KEY_XOFFS,21);
    putxy(' ',KEY_NOR,23+KEY_XOFFS,21);
    putxy(' ',KEY_NOR,29+KEY_XOFFS,21);
    putxy('F',KEY_NOR,30+KEY_XOFFS,21);
    putxy(' ',KEY_NOR,31+KEY_XOFFS,21);
    putxy(' ',KEY_NOR,37+KEY_XOFFS,21);
    putxy('G',KEY_NOR,38+KEY_XOFFS,21);
    putxy(' ',KEY_NOR,39+KEY_XOFFS,21);
    putxy(' ',KEY_NOR,45+KEY_XOFFS,21);
    putxy('H',KEY_NOR,46+KEY_XOFFS,21);
    putxy(' ',KEY_NOR,47+KEY_XOFFS,21);
    putxy(' ',KEY_NOR,53+KEY_XOFFS,21);
    putxy('J',KEY_NOR,54+KEY_XOFFS,21);
    putxy(' ',KEY_NOR,55+KEY_XOFFS,21);
    putxy(' ',KEY_NOR,61+KEY_XOFFS,21);
    putxy('K',KEY_NOR,62+KEY_XOFFS,21);
    putxy(' ',KEY_NOR,63+KEY_XOFFS,21);
    putxy(' ',KEY_NOR,65+KEY_XOFFS,23);
    putxy('L',KEY_NOR,66+KEY_XOFFS,23);
    putxy(' ',KEY_NOR,67+KEY_XOFFS,23);
    putxy(' ',KEY_NOR,9+KEY_XOFFS,23);
    putxy('Y',KEY_NOR,10+KEY_XOFFS,23);
    putxy(' ',KEY_NOR,11+KEY_XOFFS,23);
    putxy(' ',KEY_NOR,17+KEY_XOFFS,23);
    putxy('X',KEY_NOR,18+KEY_XOFFS,23);
    putxy(' ',KEY_NOR,19+KEY_XOFFS,23);
    putxy(' ',KEY_NOR,25+KEY_XOFFS,23);
    putxy('C',KEY_NOR,26+KEY_XOFFS,23);
    putxy(' ',KEY_NOR,27+KEY_XOFFS,23);
    putxy(' ',KEY_NOR,33+KEY_XOFFS,23);
    putxy('V',KEY_NOR,34+KEY_XOFFS,23);
    putxy(' ',KEY_NOR,35+KEY_XOFFS,23);
    putxy(' ',KEY_NOR,41+KEY_XOFFS,23);
    putxy('B',KEY_NOR,42+KEY_XOFFS,23);
    putxy(' ',KEY_NOR,43+KEY_XOFFS,23);
    putxy(' ',KEY_NOR,49+KEY_XOFFS,23);
    putxy('N',KEY_NOR,50+KEY_XOFFS,23);
    putxy(' ',KEY_NOR,51+KEY_XOFFS,23);
    putxy(' ',KEY_NOR,57+KEY_XOFFS,23);
    putxy('M',KEY_NOR,58+KEY_XOFFS,23);
    putxy(' ',KEY_NOR,59+KEY_XOFFS,23);
    if(!cell_cover){
    putxy('Q',BULB_NOR,2+KEY_XOFFS,11);                 /* windows */
    putxy(' ',BULB_NOR,1+KEY_XOFFS,11);
    putxy(' ',BULB_NOR,3+KEY_XOFFS,11);
    putxy('W',BULB_NOR,10+KEY_XOFFS,11);
    putxy(' ',BULB_NOR,9+KEY_XOFFS,11);
    putxy(' ',BULB_NOR,11+KEY_XOFFS,11);
    putxy('E',BULB_NOR,18+KEY_XOFFS,11);
    putxy(' ',BULB_NOR,17+KEY_XOFFS,11);
    putxy(' ',BULB_NOR,19+KEY_XOFFS,11);
    putxy('R',BULB_NOR,26+KEY_XOFFS,11);
    putxy(' ',BULB_NOR,25+KEY_XOFFS,11);
    putxy(' ',BULB_NOR,27+KEY_XOFFS,11);
    putxy('T',BULB_NOR,34+KEY_XOFFS,11); 
    putxy(' ',BULB_NOR,33+KEY_XOFFS,11); 
    putxy(' ',BULB_NOR,35+KEY_XOFFS,11); 
    putxy('Z',BULB_NOR,42+KEY_XOFFS,11);
    putxy(' ',BULB_NOR,41+KEY_XOFFS,11);
    putxy(' ',BULB_NOR,43+KEY_XOFFS,11);
    putxy('U',BULB_NOR,50+KEY_XOFFS,11);
    putxy(' ',BULB_NOR,49+KEY_XOFFS,11);
    putxy(' ',BULB_NOR,51+KEY_XOFFS,11);
    putxy('I',BULB_NOR,58+KEY_XOFFS,11);
    putxy(' ',BULB_NOR,59+KEY_XOFFS,11);
    putxy(' ',BULB_NOR,57+KEY_XOFFS,11);
    putxy('O',BULB_NOR,66+KEY_XOFFS,11);
    putxy(' ',BULB_NOR,65+KEY_XOFFS,11);
    putxy(' ',BULB_NOR,67+KEY_XOFFS,11);
    putxy('P',BULB_NOR,2+KEY_XOFFS,15);
    putxy(' ',BULB_NOR,1+KEY_XOFFS,15);
    putxy(' ',BULB_NOR,3+KEY_XOFFS,15);
    putxy(' ',BULB_NOR,5+KEY_XOFFS,13);
    putxy('A',BULB_NOR,6+KEY_XOFFS,13);
    putxy(' ',BULB_NOR,7+KEY_XOFFS,13);
    putxy(' ',BULB_NOR,13+KEY_XOFFS,13);
    putxy('S',BULB_NOR,14+KEY_XOFFS,13);
    putxy(' ',BULB_NOR,15+KEY_XOFFS,13);
    putxy(' ',BULB_NOR,21+KEY_XOFFS,13);
    putxy('D',BULB_NOR,22+KEY_XOFFS,13);
    putxy(' ',BULB_NOR,23+KEY_XOFFS,13);
    putxy(' ',BULB_NOR,29+KEY_XOFFS,13);
    putxy('F',BULB_NOR,30+KEY_XOFFS,13);
    putxy(' ',BULB_NOR,31+KEY_XOFFS,13);
    putxy(' ',BULB_NOR,37+KEY_XOFFS,13);
    putxy('G',BULB_NOR,38+KEY_XOFFS,13);
    putxy(' ',BULB_NOR,39+KEY_XOFFS,13);
    putxy(' ',BULB_NOR,45+KEY_XOFFS,13);
    putxy('H',BULB_NOR,46+KEY_XOFFS,13);
    putxy(' ',BULB_NOR,47+KEY_XOFFS,13);
    putxy(' ',BULB_NOR,53+KEY_XOFFS,13);
    putxy('J',BULB_NOR,54+KEY_XOFFS,13);
    putxy(' ',BULB_NOR,55+KEY_XOFFS,13);
    putxy(' ',BULB_NOR,61+KEY_XOFFS,13);
    putxy('K',BULB_NOR,62+KEY_XOFFS,13);
    putxy(' ',BULB_NOR,63+KEY_XOFFS,13);
    putxy(' ',BULB_NOR,65+KEY_XOFFS,15);
    putxy('L',BULB_NOR,66+KEY_XOFFS,15);
    putxy(' ',BULB_NOR,67+KEY_XOFFS,15);
    putxy(' ',BULB_NOR,9+KEY_XOFFS,15);
    putxy('Y',BULB_NOR,10+KEY_XOFFS,15);
    putxy(' ',BULB_NOR,11+KEY_XOFFS,15);
    putxy(' ',BULB_NOR,17+KEY_XOFFS,15);
    putxy('X',BULB_NOR,18+KEY_XOFFS,15);
    putxy(' ',BULB_NOR,19+KEY_XOFFS,15);
    putxy(' ',BULB_NOR,25+KEY_XOFFS,15);
    putxy('C',BULB_NOR,26+KEY_XOFFS,15);
    putxy(' ',BULB_NOR,27+KEY_XOFFS,15);
    putxy(' ',BULB_NOR,33+KEY_XOFFS,15);
    putxy('V',BULB_NOR,34+KEY_XOFFS,15);
    putxy(' ',BULB_NOR,35+KEY_XOFFS,15);
    putxy(' ',BULB_NOR,41+KEY_XOFFS,15);
    putxy('B',BULB_NOR,42+KEY_XOFFS,15);
    putxy(' ',BULB_NOR,43+KEY_XOFFS,15);
    putxy(' ',BULB_NOR,49+KEY_XOFFS,15);
    putxy('N',BULB_NOR,50+KEY_XOFFS,15);
    putxy(' ',BULB_NOR,51+KEY_XOFFS,15);
    putxy(' ',BULB_NOR,57+KEY_XOFFS,15);
    putxy('M',BULB_NOR,58+KEY_XOFFS,15);
    putxy(' ',BULB_NOR,59+KEY_XOFFS,15);
    }
    
    putxy(ULC,ROTOR,29,5);                  /* ROTOR 1*/
    putxy(HOR,ROTOR,30,5);
    putxy(URC,ROTOR,31,5);
    putxy(VER,ROTOR,29,6);
    putxy(' ',ROTOR,30,6);
    putxy(VER,ROTOR,31,6);
    putxy(LLC,ROTOR,29,7);
    putxy(HOR,ROTOR,30,7);
    putxy(LRC,ROTOR,31,7);
    
    putxy(ULC,ROTOR,39,5);                  /* ROTOR 2*/
    putxy(HOR,ROTOR,40,5);
    putxy(URC,ROTOR,41,5);
    putxy(VER,ROTOR,39,6);
    putxy(' ',ROTOR,40,6);
    putxy(VER,ROTOR,41,6);
    putxy(LLC,ROTOR,39,7);
    putxy(HOR,ROTOR,40,7);
    putxy(LRC,ROTOR,41,7);
    
    putxy(ULC,ROTOR,49,5);                  /* ROTOR 3*/
    putxy(HOR,ROTOR,50,5);
    putxy(URC,ROTOR,51,5);
    putxy(VER,ROTOR,49,6);
    putxy(' ',ROTOR,50,6);
    putxy(VER,ROTOR,51,6);
    putxy(LLC,ROTOR,49,7);
    putxy(HOR,ROTOR,50,7);
    putxy(LRC,ROTOR,51,7);
    
    return;

}



void light(c)                           /* light one bulb */
int c;
{
    int x,y;
 
    x=keyx(c);
    y=keyy(c)-8;
    if((y>0)&&(x>0)){
        if(cell_cover){
            putxy(toupper(c),BULB_DIM,x,y);
        }else{
            putxy(toupper(c),BULB_LIT,x,y);
            putxy(' ',BULB_LIT,x-1,y);
            putxy(' ',BULB_LIT,x+1,y);
        }
    }   
}

void dim(c)                             /* turn off bulb */
int c;
{
    int x,y;
 
    x=keyx(c);
    y=keyy(c)-8;
    if((y>0)&&(x>0)){
        if(cell_cover){
            writexy("   ",MENU,x-1,y);
        }else{
            putxy(toupper(c),BULB_NOR,x,y);
            putxy(' ',BULB_NOR,x-1,y);
            putxy(' ',BULB_NOR,x+1,y);
        }
    }   
}

void press(c)                           /* mark key as pressed */
int c;
{
    int x,y;
 
    x=keyx(c);
    y=keyy(c);
    if((y>0)&&(x>0)){
        putxy(' ',KEY_PRES,x-1,y); 
        putxy(toupper(c),KEY_PRES,x,y);
        putxy(' ',KEY_PRES,x+1,y);
    }
    
    return;   
}

void release(c)                         /* unmark key */
int c;
{
    int x,y;
 
    x=keyx(c);
    y=keyy(c);
    if((y>0)&&(x>0)){
        putxy(' ',KEY_NOR,x-1,y); 
        putxy(toupper(c),KEY_NOR,x,y);
        putxy(' ',KEY_NOR,x+1,y);
    }
    return;   
}

void rotor_act()                        /* actualize rotor window */
{
    putxy(toupper(window[0]),ROTOR,50,6);
    putxy(toupper(window[1]),ROTOR,40,6);
    putxy(toupper(window[2]),ROTOR,30,6);
    
    return;
}

int r_mark(n)                           /* mark rotor */
int n;
{
    int ret;
    ret=n;
    if(ret<0){
        ret=2;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -