📄 enigma4j.c
字号:
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 + -