約 2,658,175 件
https://w.atwiki.jp/sinapusu2002/pages/203.html
http //odz.sakura.ne.jp/projecteuler/index.php?cmd=read page=Problem%2096 数独の盤面を解く問題。 入る可能性のある数字の少ないマスから優先して全探索するだけです。 #include stdio.h #include stdlib.h #include vector #include algorithm struct E{ int x,y; std vector char vec; bool operator (const E e)const{ if(vec.size()!=e.vec.size())return vec.size() e.vec.size(); return false; } }; FILE *fp; char map[9][10]; bool inOK(int x,int y,char n){ for(int i=0;i 9;i++){ if(map[y][i]==n)return false; if(map[i][x]==n)return false; } int x1=x/3*3; int y1=y/3*3; for(int i=0;i 3;i++){ for(int j=0;j 3;j++){ if(map[y1+i][x1+j]==n)return false; } } return true; } std vector E vec; int ans=0; bool isHit; bool search(int p){ if(vec.size()==p){ ans+=(map[0][0]- 0 )*100+(map[0][1]- 0 )*10+(map[0][2]- 0 ); return true; }else{ for(int i=0;i vec[p].vec.size();i++){ char c=vec[p].vec[i]; int x=vec[p].x; int y=vec[p].y; if(inOK(x,y,c)==true){ map[y][x]=c; if(search(p+1)==true){ return true; } map[y][x]= 0 ; } } } return false; } void calc(){ for(int i=0;i 9;i++){ fscanf(fp,"%s",map[i]); } bool bs[9][9][10]; memset(bs,0,sizeof(bs)); while(vec.empty()==false){ vec.pop_back(); } for(int y=0;y 9;y++){ for(int x=0;x 9;x++){ if(map[y][x]!= 0 )continue; E e1; e1.x=x; e1.y=y; for(char a= 1 ;a = 9 ;a++){ if(inOK(x,y,a)==true){ e1.vec.push_back(a); } } vec.push_back(e1); } } std sort(vec.begin(),vec.end()); search(0); } int main(){ if ((fp = fopen("sudoku.txt", "r")) == NULL) { fprintf(stderr, "%s\n", "error can t read file."); return EXIT_FAILURE; } char top[10],top2[10]; while(fscanf(fp,"%s %s",top,top2)!=EOF){ calc(); } fclose(fp); printf("%d\n",ans); }
https://w.atwiki.jp/bambooflow/pages/266.html
re2cの始めかた re2cの始めかたサンプルコード"Hello World" コンパイル 結果 説明 re2cを始めるには、小さいプログラムだと理解が早いと思います。 ここでは、"Hello,World"を字句解析するプログラムを用意しました。 文字もしくは文字列パタンに1対1で対応した番号を返す処理を行います。 サンプルコード"Hello World" hello.re #include stdio.h #include stdlib.h enum { TOKEN_HELLO = 1, TOKEN_WORLD = 2, TOKEN_COMMA = 3, TOKEN_ERR = -1 }; char* yyin; char* yymarker; int yylex() { /*!re2c re2c define YYCTYPE = "char"; re2c define YYCURSOR = yyin; re2c define YYMARKER = yymarker; re2c yyfill enable = 0; re2c indent top = 1; "Hello" { return TOKEN_HELLO; } "World" { return TOKEN_WORLD; } "," { return TOKEN_COMMA; } [^] { return TOKEN_ERR; } */ } int main( int argc, char* argv[] ) { char* pBuf = "Hello,World"; yyin = pBuf; printf( "str = %s\n", pBuf ); printf( "yylex = %d\n", yylex() ); printf( "yylex = %d\n", yylex() ); printf( "yylex = %d\n", yylex() ); printf( "yylex = %d\n", yylex() ); printf( "yylex = %d\n", yylex() ); return 0; } コンパイル re2c -o hello.cpp hello.re g++ -o run.x hello.cpp 最適化 re2c -is -o hello.cpp hello.re -i #lineを表示しません。 -s switch文の代わりにをネストしたif文を吐き出します。 コードは最適化されます。(人には読みづらくなります) 結果 実行 ./run.x str = Hello,World yylex = 1 yylex = 3 yylex = 2 yylex = -1 yylex = -1 説明 re2cの変換は、/*!re2cから*/で囲まれた部分が対象となります。 /*!re2c この部分が変換対象 */ 最低限、次が必要です。 re2c define YYCTYPE = "char"; re2c define YYCURSOR = yyin; re2c define YYMARKER = yymarker; re2c yyfill enable = 0; YYCTYPEには、文字型を指定します。普通は"char"もしくは"unsigned char"になります。 YYCURSORには、解析する文字列の先頭ポインタを示す変数名を指定します。 YYMARKERには、解析中に現在の位置を示すポインタ変数を指定します。 yyfill enable=0とすることで、バッファに充填する関数を必要としなくなります。大きなソースコードの場合は、これを有効(1)にし、fill関数を用意することになります。
https://w.atwiki.jp/otya128/pages/40.html
@S_HELLO GOSUB @WINFLAG WINX2=64 WINY2=19 WINTTL$="HELLO" RETURN @WIN_HELLO WINSX=0 WINSY=0 WINSC=1 WINSTR$="Hello!" GOSUB@WINSTRPUT RETURN @S_HELLO2 WIN_MODE=1 GOSUB @WINFLAG HELLO2_X2=LEN("Windowsテ゛コンヒ゜ュ-タ-ノ")*8 HELLO2_Y2=64+18+16+8 HELLO2_SCY=8 HELLO2_SCX=8 WINTTL$="HELLOFONT" WINTTL$="Form1" HELLOTXT$="WINDOWS" HELLORF[0]=1 HELLO2_RADMAX=4-1 RETURN @WIN_HELLO2 WIN_MODE=1 WINCLS=1 WINTTL$="Form1 - "+STR$(HELLOBC) WINX2=HELLO2_X2 WINY2=HELLO2_Y2 WINSCX=HELLO2_SCX WINSCY=HELLO2_SCY GOSUB @WINDOW HELLO2_SCX=WINSCX HELLO2_SCY=WINSCY IF WINIDFLG==1THEN RETURN WINSX=0 WINSY=0 WINSC=1 WINSTR$=WINTXT$+"テ゛コンヒ゜ュ-タ-ノ IF LEN(WINSTR$)*8 HELLO2_X2 THEN HELLO2_X2=HELLO2_X2+1 IF LEN(WINSTR$)*8 HELLO2_X2 THEN HELLO2_X2=HELLO2_X2-1 IF HELLOCHKF==1AND LEN(WINSTR$)*8!=HELLO2_X2 THEN HELLO2_X2=LEN(WINSTR$)*8 GOSUB @WINSTRPUT WINSX=0 WINSY=8 WINSC=1 WINSTR$="セカイカ゛ヒロカ゛リマス。 GOSUB @WINSTRPUT WINBX=37 WINBY=16 WINBSTR$="button1" GOSUB @WINBTN IF WINBTNF==1THEN HELLO2F=1 HELLOBC=HELLOBC+1 IF HELLO2F==1THEN WINSX=0 WINSY=26 WINSC=4 WINSTR$="ЁЖ"+STR$(HELLOBC)+"ホ゛タンオサレタ" GOSUB@WINSTRPUT WINPX=5 WINPY=26+8 WINPX2=HELLO2_X2 WINPY2=26+16 WINPS=HELLOBC GOSUB @WINPROGBAR WINTR=HELLORF[1]+HELLORF[3] WINTM=HELLORF[2]+HELLORF[3] WINTX=0 WINTX2= HELLO2_X2 WINTY=26+16 WINTXTP$=HELLOTXT$ WINTSX=HELLOTSX WINTA=HELLOAC GOSUB @WINTXTBOX HELLOTSX=WINTSX HELLOTXT$=WINTXT$ HELLOAC=WINTA WINCX=2 WINCY=26+25 WINCSTR$="checkBox1 WINCHKF=HELLOCHKF GOSUB @WINCHKBOX HELLOCHKF=WINCHKF WINRX=2 WINRY=26+25+8 WINRSTR$="radioButton1 WINRF=HELLORF[0] GOSUB @WINRADBTN HELLORF[0]=WINRF IF WINNRF==1THEN HELLO2_RAD=0 GOSUB @HELLO2_RAD WINRF=HELLORF[1] WINRX=2 WINRY=26+25+8+8 WINRSTR$="Readonly GOSUB @WINRADBTN HELLORF[1]=WINRF IF WINNRF==1THEN HELLO2_RAD=1 GOSUB @HELLO2_RAD WINRF=HELLORF[2] WINRX=2 WINRY=26+25+8+8+8 WINRSTR$="Masked GOSUB @WINRADBTN HELLORF[2]=WINRF IF WINNRF==1THEN HELLO2_RAD=2 GOSUB @HELLO2_RAD WINRF=HELLORF[3] WINRX=2 WINRY=26+25+8+8+8+8 WINRSTR$="MaskedReadonly GOSUB @WINRADBTN HELLORF[3]=WINRF IF WINNRF==1THEN HELLO2_RAD=3 GOSUB @HELLO2_RAD RETURN @HELLO2_RAD HELLORF[HELLO2_RAD]=1 FOR I=0TO HELLO2_RADMAX IF HELLO2_RAD!=I THEN HELLORF[I]=0 NEXT RETURN '-シュウリョウ- '(ラシ゛オホ゛タンヲショキカ) @C_HELLO2 FOR I=1TO HELLO2_RADMAX HELLORF[I]=0 NEXT HELLORF[0]=1 HELLOCHKF=0 GOSUB @WINCLOSE RETURN @S_SETTING WIN_MODE=1 GOSUB @WINFLAG SETTING_X2=64+48 SETTING_Y2=74 WINTTL$="SETTING" SETTING_RF[0]=MODE==0 SETTING_RF[1]=MODE==1 SETTING_RADMAX=2-1 RETURN @WIN_SETTING WIN_MODE=1 WINX2=SETTING_X2 WINY2=SETTING_Y2 WINSCX=SETTING_SCX WINSCY=SETTING_SCY GOSUB @WINDOW SETTING_SCX=WINSCX SETTING_SCY=WINSCY IF WINIDFLG==1THEN RETURN WINSX=0 WINSY=0 WINSC=1 WINSTR$="マウス" GOSUB @WINSTRPUT WINRF=SETTING_RF[0] WINRX=0WINRY=8 WINRSTR$="MODE0" GOSUB @WINRADBTN SETTING_RF[0]=WINRF IF WINNRF==1THEN SETTING_RF[1]=0 MOUSEMODE=0 WINRF=SETTING_RF[1] WINRX=0WINRY=16 WINRSTR$="MODE1" GOSUB @WINRADBTN SETTING_RF[1]=WINRF IF WINNRF==1THEN SETTING_RF[0]=0 MOUSEMODE=1 WINSX=8 WINSY=24 WINSC=1 WINSTR$="ホ゛タン" GOSUB @WINSTRPUT WINCHKF=SETTING_CHKF WINCX=0 WINCY=32 WINCSTR$="Aテ゛クリック GOSUB @WINCHKBOX SETTING_CHKF=WINCHKF IF SETTING_CHKF==1THEN CLICKBTN=16 ELSE CLICKBTN=256 P$=STR$(FPS/60) WINSX=0 WINSY=40 WINSC=1 WINSTR$="ハ゜フォ-マンス "+P$ GOSUB @WINSTRPUT RETURN @S_FREE GOSUB @WINFLAG WINX2=48 WINY2=32 WINTTL$="FREE RETURN @WIN_FREE WINSTR$=STR$(FREEVAR) WINSX=0 WINSY=0 WINSC=1 GOSUB @WINSTRPUT RETURN @S_RUN WINMLT[TSK]=RUN_P GOSUB @WINFLAG WINX2=80 WINY2=40 WINTTL$="RUN RUN_P=RUN_P+1 RETURN @WIN_RUN P=WINMLT[TSK] WINTX2=WINX2-1 WINTA=RUNTA[P] WINTX=1 WINTY=8 WINTXTP$=RUNNAME$[P] WINTSX=RUNSX[P] GOSUB @WINTXTBOX RUNSX[P]=WINTSX RUNNAME$[P]=WINTXT$ RUNTA[P]=WINTA WINBX=2 WINBY=18 WINBSTR$="RUN" GOSUB@WINBTN RUNBTNF=WINBTNF IF RUNBTNF==1THEN GOSUB @RUN_EXE RETURN @RUN_EXE WINEXE$=RUNNAME$[P] GOSUB @WINEXE CLICK=0 CLICK2=0 CLICK3=0 CLICKR=0 CLICKR2=0 CLICKR3=0 CLICKF=0 'TSK=TSKMAX-1 RETURN 'カンイ エテ゛ィタ @S_LED WINTTL$="エテ゛ィタ WINX2=130 WINY2=41 LED_LINE=1 RETURN @WIN_LED WINBX=2 WINBY=1 WINBSTR$="LD" GOSUB @WINBTN IF WINBTNF==1THEN LED_FL=1 WINBX=24 WINBY=1 WINBSTR$="SV" GOSUB @WINBTN IF WINBTNF==1THEN LED_FL=2 WINBX=46 WINBY=1 WINBSTR$="UP" GOSUB @WINBTN LED_F=0 IF WINBTNF==1THEN LED_F=2 WINBX=68 WINBY=1 WINBSTR$="DW" GOSUB @WINBTN IF WINBTNF==1THEN LED_F=1 WINSX=1 WINSY=13 WINSTR$="line "+STR$(LED_LINE) WINSC=1 GOSUB @WINSTRPUT LED_B$=LED_LINES$ WINTX2=WINX2-1 WINTX=0 WINTY=22 WINTA=LED_A WINTXTP$=LED_LINES$ WINTSX=LED_TSX GOSUB @WINTXTBOX LED_A=WINTA LED_LINES$=WINTXT$ IF LED_B$!=WINTXT$ THEN GOSUB @LED_APP LED_TSX=WINTSX IF LED_F==1THEN LED_UP=0 GOSUB @LED_DW IF LED_F==2THEN LED_UP=1 GOSUB @LED_DW IF LED_FL!=0THEN GOSUB @LED_FIL RETURN @LED_FIL WINY2=74 WINSTR$="LOAD"*(LED_FL==1)+"SAVE"*(LED_FL==2) WINSX=0 WINSY=32 WINSC=1 GOSUB@WINSTRPUT WINTXTP$=LED_FIL$ WINTX=0 WINTY=40 WINTSX=LED_FLSX WINTX2=WINX2-1 WINTA=LED_FLA GOSUB @WINTXTBOX LED_FLA=WINTA LED_FIL$=WINTXT$ LED_FLSX=WINTSX WINBX=2 WINBY=50 WINBSTR$="LOAD"*(LED_FL==1)+"SAVE"*(LED_FL==2) GOSUB @WINBTN IF WINBTNF==1THEN GOSUB @LED_L_S RETURN @LED_L_S IF LED_FL==1THEN LOAD"MEM "+LED_FIL$,0 LED$=MEM$ IF LED_FL==2THEN MEM$=LED$ SAVE"MEM "+LED_FIL$ LED_I=0 GOSUB @LED_DW RETURN @LED_APP LED$=LEDB$+LED_LINES$+LEDC$ RETURN @LED_DW C$=CHR$(13) L=0 F=0 J=0 I=0 IF LED_LINE 1THEN LED_LINE=0 IF LED_UP==0THEN LED_LINE=LED_LINE+1 ELSE LED_LINE=LED_LINE-1 LED_UP=0 FOR I=0TO LEN(LED$)-1 M$=MID$(LED$,I,1) IF M$==CHR$(13)THEN L=L+1 LED_LS$=MID$(LED$,J,I-J) J=I+1 IF LED_LINE==L AND F==0 THEN F=1 LED_I=I LED_LINES$=LED_LS$ NEXT IF F==0THEN LED_LINES$=MID$(LED$,J,I-J) LED_LINE=L+1 LED_I=J IF LED_LINE==0THEN LED_LINE=0 GOTO @LED_DW LEDB$=MID$(LED$,0,LED_I-1) LEDC$=MID$(LED$,LED_I+LEN(LED_LINES$),256) RETURN @S_MEV WINX2=128 WINY2=74 WINTTL$="MEMViewer" RETURN @WIN_MEV WINTX=0 WINTY=0 WINTXTP$=MEV_F$ WINTSX=MEV_X WINTA=MEVA WINTX2=8*8 GOSUB @WINTXTBOX MEVA=WINTA MEV_X=WINTSX MEV_F$=WINTXT$ WINBX=66 WINBY=-1 WINBSTR$="LOAD" GOSUB @WINBTN IF WINBTNF==1THEN GOSUB @MEV_F IF MEV$==""THEN RETURN X=WX+1 Y=WY+19 C=0 K=0 F=0 FOR I=0TO LEN(MEV$)-1 ' M$=MID$(CHR$(13)+MEV$+CHR$(13),I,1) M$=MID$(MEV$,I,1) IF I =MEV_C THEN K=J I=99998 GOTO @MEV_SKK IF M$==CHR$(13)THEN C=C+1 J=I F=1 @MEV_SKK NEXT IF F==0THEN K=0ELSE K=K+1 MEV_D=K'INSTR(J,MID$(MEV$,0,MEV_C)+CHR$(13),CHR$(13)) IF MEV_D==-1THEN MEV_D=0 Z=MEV_D FOR I=MEV_D TO LEN(MEV$)-1 M$=MID$(MEV$,I,1) IF X =WX2 THEN X=WX+1 Y=Y+8 IF Y =WY2 THEN I=9999 GOTO @MEVSK GPUTCHR X,Y,"BGF",ASC(M$),1,1 IF Z==MEV_C THEN GFILL X,Y+7,X+8,Y+8,14 X=X+8 Z=Z+1 IF M$==CHR$(13)THEN Y=Y+8 X=WX+1 'I=I+1 M$=MID$(MEV$,I,1) @MEVSK NEXT B=BUTTON() IF B==4THEN MEV_C=MEV_C-1 IF B==8THEN MEV_C=MEV_C+1 IF MEV_C 0THEN MEV_C=0 IF MEV_C =LEN(MEV$)THEN MEV_C=LEN(MEV$)-1 KEYFLG=KEYFLG+(WINACTV==1) IF WINACTV==1THEN @MEV_ED RETURN @MEV_ED INK$=KEYBF$ KEYBF$="" IF KEYFLG==1AND INK$!=""THEN MEV$=MID$(MEV$,0,MEV_C)+INK$+MID$(MEV$,MEV_C,256) MEV_C=MEV_C+LEN(INK$) RETURN @MEV_F LOAD "MEM "+MEV_F$,0 MEV$=MEM$ RETURN @S_CLOCK WINX2=66 WINY2=75 WINTTL$="CLOCK WINCLS=1 RETURN @WIN_CLOCK GCIRCLE WX+33,WY+42,32,7 TMREAD(TIME$),A,B,C B=B+C/60 A=A%12 E=35+WX+COS(RAD((180+90+C*6)%360))*31'+2 D=42+WY+SIN(RAD((180+90+C*6)%360))*31'+10 GLINE E,D,WX+34,WY+42,13 E=35+WX+COS(RAD((180+90+B*6)%360))*30'+2 D=42+WY+SIN(RAD((180+90+B*6)%360))*30'+10 GLINE E,D,WX+34,WY+42,14 E=35+WX+COS(RAD((180+90+A*30+B*0.5)%360))*22'+2 D=42+WY+SIN(RAD((180+90+A*30+B*0.5)%360))*22'+10 GLINE E,D,WX+34,WY+42,14 RETURN @C_CLOCK GOSUB @WINCLOSE RETURN @S_MONO GOSUB @OTWCOL WINCLS=1 FOR I=0TO 255 COLREAD("SP",I),R,G,B C=(R+G+B)/3 COLSET "GRP",I,HEX$(C,2)*3 COLSET "SP",I,HEX$(C,2)*3 COLSET "BG",I,HEX$(C,2)*3 NEXT RETURN @WIN_MONO RETURN @C_MONO GOSUB @OTWCOL GOSUB @WINCLOSE RETURN @S_MONO3 GOSUB @S_MONO WINCLS=1 FOR I=0TO 255 COLREAD("SP",I),R,G,B C=(R+G+B)/3 C=0OR (C+1)/128 C=C*127 COLSET "GRP",I,HEX$(C,2)*3 COLSET "SP",I,HEX$(C,2)*3 COLSET "BG",I,HEX$(C,2)*3 NEXT RETURN @WIN_MONO3 RETURN @C_MONO3 GOSUB @WINCLOSE GOSUB @OTWCOL RETURN @S_MONO2 GOSUB @OTWCOL WINCLS=1 FOR I=0TO 255 COLREAD("SP",I),R,G,B C=(R+G+B)/3 IF C 127THEN C=255 ELSE C=0 COLSET "GRP",I,HEX$(C,2)*3 COLSET "SP",I,HEX$(C,2)*3 COLSET "BG",I,HEX$(C,2)*3 NEXT RETURN @WIN_MONO2 RETURN @C_MONO2 GOSUB @WINCLOSE GOSUB @OTWCOL RETURN @S_COL2 WINCLS=1 GOSUB @OTWCOL FOR COL_I=0TO 255 COLREAD("SP",COL_I),R,G,B IF R 64THEN R=0 IF R 64AND R 128THEN R=128 IF R 128AND R 192 THEN R=192 IF R 192 THEN R=255 IF G 64THEN G=0 IF G 64AND G 128THEN G=128 IF G 128 AND G 192THEN G=192 IF G 192 THEN G=255 IF B 64THEN B=0 IF B 64AND B 128THEN B=128 IF B 128 AND B 192THEN B=192 IF B 192 THEN B=255 ' COMP$=STR$(R)+" "+STR$(G)+" "+STR$(B) GOSUB COMPRT$ COLSET "SP",COL_I,HEX$(R,2)+HEX$(G,2)+HEX$(B,2) COLSET "GRP",COL_I,HEX$(R,2)+HEX$(G,2)+HEX$(B,2) COLSET "BG",COL_I,HEX$(R,2)+HEX$(G,2)+HEX$(B,2) NEXT RETURN @WIN_COL2 RETURN @C_COL2 GOSUB @OTWCOL GOSUB @WINCLOSE RETURN @S_COL WINCLS=1 GOSUB @OTWCOL D=128 FOR I=0TO 255 COLREAD("SP",I),R,G,B ' R=(0OR (R/D))*D ' G=(0OR (G/D))*D ' B=(0OR (B/D))*D IF R 128THEN R=255 IF R 128THEN R=0 IF G 128THEN G=255 IF G 128THEN G=0 IF B 128THEN B=255 IF B 128THEN B=0 COLSET "SP",I,HEX$(R,2)+HEX$(G,2)+HEX$(B,2) COLSET "BG",I,HEX$(R,2)+HEX$(G,2)+HEX$(B,2) COLSET "GRP",I,HEX$(R,2)+HEX$(G,2)+HEX$(B,2) NEXT RETURN @WIN_COL RETURN @C_COL GOSUB @WINCLOSE GOSUB @OTWCOL RETURN @S_DBG WINY2=25 WINTTL$="DBG" RETURN @WIN_DBG WINSX=0 WINSY=0 WINSC=1 WINSTR$="X "+STR$(MOUSEX-WINSX[0]) GOSUB @WINSTRPUT WINSX=0 WINSY=8 WINSC=1 WINSTR$="Y "+STR$(MOUSEY-WINSY[0]) GOSUB @WINSTRPUT RETURN @S_M WIN_MODE=1 WINTTL$="オテ゛コ ヒロイ WINX2=100 WINY2=45 GOSUB @WINFLAG RETURN @DGS_WIN_M WINDEGY=20 WINDEGY2=1 WINDEGX=1 WINDEGX2=1 RETURN @DEG_WIN_M GFILL WX,WY,WX2,WY2,0 GFILL WX,WY,WX2,WY+19,15 GBOX WX,WY,WX2,WY2,13 WINSX=8 WINSY=-20 WINSC=1 WINSTR$=WINTTL$[TSK] GOSUB @WINSTRPUT RETURN @WIN_M WINDESIGN$="WIN_M" GOSUB @WINDOW IF WINIDFLG==1THEN RETURN WINSX=5 WINSY=0 WINSC=0 WINSTR$="ト゛クシ゛WINDOW GOSUB @WINSTRPUT RETURN @S_DT WIN_MODE=1 GOSUB @WINFLAG RETURN @WIN_DT WINDESIGN$="WIN_M" GOSUB @WINDOW IF WINIDFLG==1THEN RETURN WINBX=0 WINBY=0 WINBSTR$="TST GOSUB @WINBTN IF WINBTNF==1THEN TALK "ウワアアアアアオサレタアアアア WINTX=0 WINTY=12 WINTX2=WINX2 WINTXTP$=WINDT$ WINTA=WINDT_A WINTSX=WINDT_SX GOSUB @WINTXTBOX WINDT$=WINTXT$ WINDT_A=WINTA WINDT_SX=WINTSX RETURN @S_W3 WINTTL$="WWW WIN_MODE=1 GOSUB @WINFLAG RETURN @DGS_W3 WINDEGY=9 WINDEGX=8 WINDEGY2=8 WINDEGX2=8 RETURN @DEG_W3 GFILL WX,WY,WX2,WY2,WINBG GFILL WX,WY,WX2,WY+8,1 GFILL WX,WY+9,WX+8,WY2,13 GFILL WX+9,WY2-8,WX2,WY2,13 GFILL WX2-8,WY+9,WX2,WY2-8,13 GBOX WX2-8,WY,WX2,WY+8,15 GFILL WX2-7,WY+1,WX2-1,WY+7,13 GLINE WX2-6,WY+2,WX2-2,WY+6,14 GLINE WX2-2,WY+2,WX2-6,WY+6,14 WINSX=-8 WINSY=-8 WINSTR$=WINTTL$ WINSC=0 GOSUB @WINSTRPUT RETURN @WIN_W3 WINDESIGN$="W3" GOSUB @WINDOW IF WINIDFLG==1THEN RETURN WINSX=0 WINSY=0 WINSC=1 WINSTR$="WWWDS GOSUB @WINSTRPUT RETURN @S_SEIUN WINY2=32 WINTTL$="セイウン RETURN @WIN_SEIUN WINTXTP$=STR$(WINSEIUN) WINTA=SEIUN_A WINTSX=SEIUN_X WINTX=0 WINTX2=62 WINTY=0 GOSUB @WINTXTBOX SEIUN_X=WINTSX SEIUN_A=WINTA WINSEIUN=VAL(WINTXT$) WINBX=0 WINBY=12 WINBSTR$="OK GOSUB @WINBTN IF WINBTNF==1 THEN WINSTAR=WINSEIUN RETURN @S_STAR WIN_MODE=1 GOSUB @WINFLAG WINX2=128 WINY2=64 WINSTAR=7 RETURN @WIN_STAR WINTTL$="O"+STR$(WINSTAR)+"セイウン WINBG=14 GOSUB @WINDOW IF WINIDFLG==1THEN RETURN R=0 S=0 FOR I=0TO 10 S=((S+15)*WINSTAR)AND 4095 R=S/4096 S=((S+15)*WINSTAR)AND 4095 T=S/4096 GPSET WFX+R*128,WFY+T*54,15 NEXT RETURN @S_CAVEM CAVE_MU=1 WINNAME$[TSK]="CAVE GOTO @S_CAVE RETURN @S_CAVE GOSUB @WINBUFF IF BF==0THEN GOSUB@SYS_ERR_BUFF RETURN CAVE_BF=BF ' CAVE_MU=0 WINTTL$="CAVE-OCHAME"+"И"*CAVE_MU GOSUB@INI_CAVE RETURN @INI_CAVE CAVE_S=0 CAVE_Y=30 CAVE_V=RND(122) CAVE_P=0 CAVE_W=0 WINY2=191/2+11 WINX2=125 GPAGE 0,CAVE_BF,M GCLS 14 GPAGE 0,!M,M CAVE_SI=2 WINCLS=1 CAVE_U=0 CAVE_X=0 RETURN @C_CAVE CAVE_MU=0 GOSUB @WINCLOSE CAVE_GV=0 CAVE_S=0 BF=CAVE_BF GOSUB @WINBUFFC RETURN @WIN_CAVE GCOPY CAVE_BF,4,0,255/CAVE_SI,191/CAVE_SI,WFX,WFY,0 WINSX=0 WINSY=0WINSC=0WINSTR$=STR$(0OR CAVE_S)+" RESE CLICK"*CAVE_GV GOSUB @WINSTRPUT IF CAVE_GV==1AND WINACTV==1AND CLICK3==1AND WINFLG[TSK]==2THEN GOSUB@INI_CAVE CAVE_GV=0 IF CAVE_GV==1THEN RETURN BF=CAVE_BF GOSUB @WINBUFFP 'GPAGE 0,CAVE_BF,M CAVE_P=CAVE_P+1 CAVE_W=70-CAVE_P/20 GCOPY CAVE_BF,8/CAVE_SI,0,255/CAVE_SI,191/CAVE_SI,0,0,1 GFILL (254-6)/CAVE_SI,0,255/CAVE_SI,191/CAVE_SI,7 GFILL (254-6)/CAVE_SI,CAVE_V/CAVE_SI,255/CAVE_SI,(CAVE_V+CAVE_W)/CAVE_SI,14 CAVE_I=(GSPOIT(34/CAVE_SI,(CAVE_Y)/CAVE_SI+2) 14)CAVE_S=CAVE_S+1/CAVE_SI IF CAVE_I==1AND CAVE_MU==0THEN CAVE_GV=1 GFILL 30/CAVE_SI,CAVE_Y/CAVE_SI,34/CAVE_SI,(CAVE_Y+4)/CAVE_SI,2 CAVE_X=CAVE_X-(16 AND BUTTON())%5+0.5 CAVE_S=CAVE_S+(0OR ABS(CAVE_X))CAVE_U=RND(2)*4-2 CAVE_V=CAVE_V+CAVE_U*(CAVE_U+CAVE_V 0)*(CAVE_U+CAVE_V+CAVE_W 191) CAVE_Y=CAVE_Y+CAVE_X/CAVE_SI GOSUB@WINBUFFP2 'GPAGE 0,!M,M RETURN @S_PAINT WINMLT[TSK]=PAINT_M BF=0 GOSUB @WINBUFF IF BF==0THEN GOSUB@SYS_ERR_BUFF RETURN PAINT_BF[PAINT_M]=BF BFC=15 GOSUB @WINBUFFGCLS PAINTF[PAINT_M]=0 WINTTL$="PAINT PAINT_M=(PAINT_M+1)%2 WINCLS=1 RETURN @C_PAINT BF=PAINT_BF[WINMLT[TSK]] GOSUB @WINBUFFC GOSUB @WINCLOSE RETURN @WIN_PAINT P=WINMLT[TSK]'PAINT_C ' PAINT_C=(PAINT_C+1)%PAINT_M PAINTF2=0 IF PAINTF[P]==0THEN PAINTF[P]=1 RETURN IF WINACTV==0OR WINFLG[0]==3THEN PAINTF2=1 GCOPY PAINT_BF[P],0,0,62,52,WFX,WFY,1 BF=PAINT_BF[P] GOSUB @WINBUFFP IF PAINTF2==0AND CLICK==0AND CLICK2==1THEN GLINE MOUSEX-WFX,MOUSEY-WFY,PAINTX[P],PAINTY[P],14 PAINTX[P]=MOUSEX-WFX PAINTY[P]=MOUSEY-WFY ' PAINT_O=CLICK2 ' GPSET MOUSEX-WFX,MOUSEY-WFY,14 GOSUB @WINBUFFP2 RETURN @INI_GAME1 GAME1_X=16 GAME1_Y=95-20 GAME1_N=10 GAME1_GV=0 RETURN @S_GAME1 WINCLS=1 WINX2=130 WINY2=192/2+11 GOSUB @WINBUFF IF BF==0THEN GOSUB@SYS_ERR_BUFF RETURN BFC=6 GAME1_BF=BF GOSUB @WINBUFFGCLS GOSUB @WINBUFFP GFILL 0,96-16,128,96,7 GOSUB @WINBUFFP2 GOSUB @INI_GAME1 WINTTL$="GAME1 RETURN @WIN_GAME1 GCOPY GAME1_BF,0,0,128,96,WFX,WFY,1 GFILL GAME1_X-4+WFX,WFY+GAME1_Y-4,WFX+GAME1_X+4,GAME1_Y+4+WFY,4 IF GAME1_GV==1AND WINACTV==1AND CLICK3==1AND WINFLG[TSK]==2THEN GOSUB@INI_GAME1 IF GAME1_GV==1THEN RETURN IF BUTTON()AND 4THEN GAME1_X=GAME1_X-1 IF BUTTON()AND 8THEN GAME1_X=GAME1_X+4 IF(BUTTON()AND 16)==16AND GAME1_J==0THEN GAME1_J=1 IF GAME1_J==1THEN GAME1_Y=GAME1_Y*0.9 IF GAME1_J==2THEN GAME1_Y=GAME1_Y*1.1 IF GAME1_J==1AND GAME1_Y =16THEN GAME1_J=2 IF GAME1_J==2AND GAME1_Y =95-20THEN GAME1_J=0 GAME1_Y=95-20 GAME1_X=GAME1_X-2-!!JMPFLG IF GAME1_X 0THEN GAME1_X=0 BF=GAME1_BF GOSUB @WINBUFFP GCOPY GAME1_BF,2,0,128,96,0,0,1 GAME1_A1=GSPOIT(GAME1_X-4,GAME1_Y+8) GAME1_A2=GSPOIT(GAME1_X,GAME1_Y+8) GAME1_A3=GSPOIT(GAME1_X+4,GAME1_Y+8) IF !(GAME1_A1+GAME1_A2+GAME1_A3)THEN GAME1_GV=1 GAME1_R=RND(GAME1_N) GAME1_A=GSPOIT(GAME1_X,GAME1_Y) IF GAME1_A==2THEN GAME1_GV=1 GFILL 128-ABS(RND(15-GAME1_N)),96-16,128,96,!!GAME1_R*7 GAME1_B=RND(24) GAME1_BH=RND(20) IF GAME1_BH==0THEN GFILL 126,GAME1_B+8,128,GAME1_B,2 IF GAME1_BH!=0THEN GFILL 126,0,128,79,6 GAME1_N=GAME1_N-0.001 GOSUB @WINBUFFP2 RETURN @C_GAME1 BF=GAME1_BF GOSUB @WINBUFFC GOSUB @WINCLOSE GAME1_GV=0 RETURN @S_MAC WIN_MODE=1 GOSUB @WINFLAG WINTTL$="MAC RETURN @WIN_MAC WINDESIGN$="MAC GOSUB @WINDOW RETURN @DGS_MAC WINDEGW=1 WINDEGX=1 WINDEGX2=1 WINDEGY=10 WINDEGY2=1 RETURN @DGW_MAC IF WINFLG[TSK]==4THEN @DGW_MAC_S F=0IF MOUSEX =WX AND MOUSEX =WX2 AND MOUSEY =WY AND MOUSEY =WY2 THEN F=1 IF F==0AND CLICKF==1THEN WINFLG[TSK]=1 WINACTV=0 WINFLG=1 RETURN F=0 IF MOUSEX =WX+11 AND MOUSEX =WX2 THEN F=1 IF F==1 AND MOUSEY =WY AND MOUSEY =WFY THEN F=2 IDF=0 IF F==2 AND CLICK==1AND IDOUT==0THEN WINFLG=3 IDOUFLG=1 IDF=1GOSUB @WINSWP RETURN IF F==2 AND CLICKF==1AND IDOUT==0THEN WINFLG[TSK]=2GOSUB @WINSWP RETURN IF WINFLG==3THEN IDOUT=1 GOSUB @WINIDOU2 F=0 IDOUFLG=0 IF MOUSEX =WX AND MOUSEX =WX2 THEN F=1 IF F==1 AND MOUSEY =WFY AND MOUSEY =WY2 THEN F=2 IF F==2 AND CLICKF==1THEN WINFLG[TSK]=2 GOSUB @WINSWP RETURN F=0 IDOUFLG=0 IF MOUSEX =WX AND MOUSEX =WX+11 THEN F=1 IF F==1 AND MOUSEY =WY AND MOUSEY WFY THEN F=2 IF F==2 AND CLICKF==1THEN WINFLG[TSK]=2 GOSUB @WINSWP 'RETURN @DGW_MAC_S F=0 IF MOUSEX =WX+4 AND MOUSEX =WX+9 THEN F=1 IF F==1 AND MOUSEY =WY+3 AND MOUSEY WFY-3 THEN F=2 IF (F==2AND CLICK==1)OR WINFLG[TSK]==4THEN WINCS=0GOTO@DGM_MAC WINCS=0 RETURN @DGM_MAC WINFLG[0]=4 GFILL WX+4,WFY-2,WX+56,WFY+10,15 GBOX WX+4,WFY-2,WX+56,WFY+10,14 F=0 IF MOUSEX WX+4OR MOUSEX WX+56 THEN F=1 IF MOUSEY WY+3OR MOUSEY WFY+10THEN F=1 IF CLICK==1AND F==1THEN WINFLG[TSKB]=2 F=0 IF MOUSEX =WX+5AND MOUSEX =WX+45 THEN F=1 IF F==1AND MOUSEY =WFY AND MOUSEY =WFY+8THEN F=2 IF F==2AND CLICK==1THEN GOSUB @WINCLOSEGT IF F==2THEN GFILL WX+4,WFY-1,WX+55,WFY+8,14 WINSX=4 WINSY=0 WINSTR$="CLOSE" WINSC=1*F!=2 GOSUB @WINSTRPUT RETURN @DEG_MAC IF WINDEGW==1AND WINIDFLG==1THEN GOTO @DGW_MAC GFILL WX,WY,WX2,WFY,15 GFILL WFX,WFY,WFX2,WFY2,WINBG GBOX WX,WY,WX2,WY2,14 GLINE WX,WY+10,WX2,WY+10,14 IF WINACTV==1THEN GOSUB @DEGMAC WINSTR$=WINTTL$ WINSX=(WINX2/2+6.5)-(LEN(WINTTL$[TSK])/2)*8-1 IF WINSX 12THEN WINSX=12 WINSY=-9 WINSX2=WINSX+WX+LEN(WINTTL$)*8 IF WINSX2 WX2 THEN WINSX2=WX2-2 GFILL WINSX+WX,WY+1,WINSX2,WY+9,15 WINSC=1 GOSUB @WINSTRPUT GFILL WX+3,WY+3,WX+10,WY+7,15 GBOX WX+4,WY+3,WX+9,WY+7,14 RETURN @DEGMAC GLINE WX+2,WY+3,WX2-2,WY+3,14GLINE WX+2,WY+5,WX2-2,WY+5,14GLINE WX+2,WY+7,WX2-2,WY+7,14 RETURN @S_LONG WINTTL$="A"*256 RETURN @WIN_LONG RETURN @S_MENU WINTTL$="MENUBAR WINX2=64+8 RETURN @WIN_MENU WFX2=WFX2+800 WINMK=OTYAMKF WINMKS=OTYAMKFS WINMX=0WINMY=0 WINMX2=64 WINMMAX=3 WINM$[0]="MENU1" ' WINMENU[0]=16 WINM$[1]="2" WINM$[2]="3" WINM$[3]="4" GOSUB @WINMENU OTYAMKF=WINMK OTYAMKFS=WINMKS IF WINM==-1THEN OTYAMK2=0 IF WINM==-1GOTO@WIN_MENU_S ' ELSE OTYAMKF=1 OTYAMKFS=WINM WINMX=0WINMY=8 GOSUB "@WIN_MENU_"+STR$(WINM) WINMK=OTYAMK2 WINMKS=OTYAMKS2 GOSUB @WINMENU2 OTYAMK2=WINMK OTYAMKS2=WINMKS WINMK=0 WINMKS=0 IF WINM==1THEN OTYAMENU=1ELSE OTYAMENU=0 IF WINM==1THEN GOSUB @WIN_MENU__ @WIN_MENU_S WFX2=WFX2-800 RETURN @WIN_MENU__ OTYAMK2=1 OTYAMKS2=1 WINM$[0]="FILES WINM$[1]="LOAD" WINM$[2]="RUN" WINM$[3]="CONT" WINM$[4]="SAVE" WINMX2=80 WINMK=OTYAMK3 WINMKS=OTYAMKS3 WINM=-9 WINMX=40WINMY=16 WINMMAX=4 GOSUB @WINMENU2 OTYAMK3=WINMK OTYAMKS3=WINMKS IF WINM==0THEN GOSUB @WIN_MENU___ IF WINM==1THEN GOSUB @WIN_MENU___ IF WINM==4THEN GOSUB @WIN_MENU___ IF WINM==2THEN GOSUB @WIN_MENU___R RETURN @WIN_MENU___ WINM$[0]="PRG WINM$[1]="MEM WINM$[2]="CHR WINM$[3]="GRP WINMX2=120 WINMK=OTYAMK4 WINMKS=OTYAMKS4 WINMX=80WINMY=8 WINMMAX=3 GOSUB @WINMENU2 OTYAMK4=WINMK OTYAMKS4=WINMKS WINM=-1 RETURN @WIN_MENU___R WINM$[0]="@COMMAND WINM$[1]="@OTW WINMX2=143 WINMK=OTYAMK4R WINMKS=OTYAMKS4R WINMX=80WINMY=24 WINMMAX=1 GOSUB @WINMENU2 OTYAMK4R=WINMK OTYAMKS4R=WINMKS RETURN @WIN_MENU_0 WINMX2=40 WINM$[0]="MENU" WINM$[1]="MENU2" WINMMAX=1 RETURN @WIN_MENU_1 RETURN @WIN_MENU_2 RETURN @WIN_MENU_3 RETURN @C_MINE BF=MINE_BF GOSUB @WINBUFFC GOSUB @WINCLOSE MINE_F=0 FOR I=0TO 63 FOR J=0TO 63 MINE_M[I,J]=0 MINE_F[I,J]=0 NEXT NEXT RETURN 'DRAW DATA @N_MINE_N0 GFILL MINE_NX,MINE_NY,MINE_NX+7,MINE_NY+7,13 GLINE MINE_NX,MINE_NY,MINE_NX+6,MINE_NY,15 GLINE MINE_NX,MINE_NY+1,MINE_NX+6,MINE_NY+1,15 GLINE MINE_NX,MINE_NY+2,MINE_NX,MINE_NY+6,15 GLINE MINE_NX+1,MINE_NY+2,MINE_NX+1,MINE_NY+6,15 GLINE MINE_NX+7,MINE_NY+1,MINE_NX+7,MINE_NY+7,1 GLINE MINE_NX+6,MINE_NY+2,MINE_NX+6,MINE_NY+7,1 GLINE MINE_NX+2,MINE_NY+6,MINE_NX+5,MINE_NY+6,1 GLINE MINE_NX+1,MINE_NY+7,MINE_NX+5,MINE_NY+7,1 RETURN @N_MINE_N11 GFILL MINE_NX,MINE_NY,MINE_NX+7,MINE_NY+7,1 GFILL MINE_NX+1,MINE_NY+1,MINE_NX+7,MINE_NY+7,13 RETURN @N_MINE_N1 GFILL MINE_NX,MINE_NY,MINE_NX+7,MINE_NY+7,1 GFILL MINE_NX+1,MINE_NY+1,MINE_NX+7,MINE_NY+7,13 GLINE MINE_NX+4,MINE_NY+1,MINE_NX+4,MINE_NY+7,4 GLINE MINE_NX+2,MINE_NY+2,MINE_NX+3,MINE_NY+2,4 GLINE MINE_NX+2,MINE_NY+7,MINE_NX+6,MINE_NY+7,4 RETURN @N_MINE_N2 GFILL MINE_NX,MINE_NY,MINE_NX+7,MINE_NY+7,1 GFILL MINE_NX+1,MINE_NY+1,MINE_NX+7,MINE_NY+7,13 GLINE MINE_NX+3,MINE_NY+1,MINE_NX+5,MINE_NY+1,10 GPSET MINE_NX+2,MINE_NY+2,10 GLINE MINE_NX+6,MINE_NY+2,MINE_NX+6,MINE_NY+3,10 GLINE MINE_NX+5,MINE_NY+4,MINE_NX+2,MINE_NY+7,10 GLINE MINE_NX+3,MINE_NY+7,MINE_NX+6,MINE_NY+7,10 RETURN @N_MINE_N3 GFILL MINE_NX,MINE_NY,MINE_NX+7,MINE_NY+7,1 GFILL MINE_NX+1,MINE_NY+1,MINE_NX+7,MINE_NY+7,13 GPSET MINE_NX+2,MINE_NY+2,2 GLINE MINE_NX+3,MINE_NY+1,MINE_NX+5,MINE_NY+1,2 GLINE MINE_NX+6,MINE_NY+2,MINE_NX+6,MINE_NY+3,2 GLINE MINE_NX+4,MINE_NY+4,MINE_NX+5,MINE_NY+4,2 GLINE MINE_NX+6,MINE_NY+5,MINE_NX+6,MINE_NY+6,2 GLINE MINE_NX+3,MINE_NY+7,MINE_NX+5,MINE_NY+7,2 GPSET MINE_NX+2,MINE_NY+6,2 RETURN @N_MINE_N4 GFILL MINE_NX,MINE_NY,MINE_NX+7,MINE_NY+7,1 GFILL MINE_NX+1,MINE_NY+1,MINE_NX+7,MINE_NY+7,13 GLINE MINE_NX+5,MINE_NY+1,MINE_NX+2,MINE_NY+4,194 GLINE MINE_NX+5,MINE_NY+2,MINE_NX+5,MINE_NY+7,194 GLINE MINE_NX+2,MINE_NY+6,MINE_NX+6,MINE_NY+6,194 GPSET MINE_NX+2,MINE_NY+5,194 RETURN @N_MINE_N5 GFILL MINE_NX,MINE_NY,MINE_NX+7,MINE_NY+7,1 GFILL MINE_NX+1,MINE_NY+1,MINE_NX+7,MINE_NY+7,13 GLINE MINE_NX+2,MINE_NY+1,MINE_NX+6,MINE_NY+1,49 GLINE MINE_NX+2,MINE_NY+2,MINE_NX+2,MINE_NY+4,49 GLINE MINE_NX+3,MINE_NY+3,MINE_NX+5,MINE_NY+3,49 GLINE MINE_NX+6,MINE_NY+4,MINE_NX+6,MINE_NY+6,49 GLINE MINE_NX+3,MINE_NY+7,MINE_NX+5,MINE_NY+7,49 GPSET MINE_NX+2,MINE_NY+6,49 RETURN @N_MINE_N6 GFILL MINE_NX,MINE_NY,MINE_NX+7,MINE_NY+7,1 GFILL MINE_NX+1,MINE_NY+1,MINE_NX+7,MINE_NY+7,13 GLINE MINE_NX+4,MINE_NY+1,MINE_NX+5,MINE_NY+1,27 GLINE MINE_NX+2,MINE_NY+3,MINE_NX+2,MINE_NY+6,27 GLINE MINE_NX+3,MINE_NY+4,MINE_NX+5,MINE_NY+4,27 GLINE MINE_NX+6,MINE_NY+5,MINE_NX+6,MINE_NY+6,27 GLINE MINE_NX+3,MINE_NY+7,MINE_NX+5,MINE_NY+7,27 GPSET MINE_NX+3,MINE_NY+2,27 RETURN @N_MINE_N7 GFILL MINE_NX,MINE_NY,MINE_NX+7,MINE_NY+7,1 GFILL MINE_NX+1,MINE_NY+1,MINE_NX+7,MINE_NY+7,13 GLINE MINE_NX+2,MINE_NY+1,MINE_NX+6,MINE_NY+1,14 GLINE MINE_NX+6,MINE_NY+2,MINE_NX+4,MINE_NY+4,14 GLINE MINE_NX+4,MINE_NY+5,MINE_NX+4,MINE_NY+7,14 GPSET MINE_NX+2,MINE_NY+2,14 RETURN @N_MINE_N8 GFILL MINE_NX,MINE_NY,MINE_NX+7,MINE_NY+7,1 GFILL MINE_NX+1,MINE_NY+1,MINE_NX+7,MINE_NY+7,13 GLINE MINE_NX+3,MINE_NY+1,MINE_NX+5,MINE_NY+1,29 GLINE MINE_NX+2,MINE_NY+2,MINE_NX+2,MINE_NY+3,29 GLINE MINE_NX+6,MINE_NY+2,MINE_NX+6,MINE_NY+3,29 GLINE MINE_NX+3,MINE_NY+4,MINE_NX+5,MINE_NY+4,29 GLINE MINE_NX+2,MINE_NY+5,MINE_NX+2,MINE_NY+6,29 GLINE MINE_NX+6,MINE_NY+5,MINE_NX+6,MINE_NY+6,29 GLINE MINE_NX+3,MINE_NY+7,MINE_NX+5,MINE_NY+7,29 RETURN 'BOMB @N_MINE_N9 GFILL MINE_NX,MINE_NY,MINE_NX+7,MINE_NY+7,1 GFILL MINE_NX+1,MINE_NY+1,MINE_NX+7,MINE_NY+7,13 GPSET MINE_NX+2,MINE_NY+2,14 GPSET MINE_NX+3,MINE_NY+3,15 GLINE MINE_NX+2,MINE_NY+4,MINE_NX+6,MINE_NY+4,14 GLINE MINE_NX+4,MINE_NY+2,MINE_NX+4,MINE_NY+6,14 GLINE MINE_NX+3,MINE_NY+5,MINE_NX+2,MINE_NY+6,14 GLINE MINE_NX+5,MINE_NY+5,MINE_NX+6,MINE_NY+6,14 GLINE MINE_NX+6,MINE_NY+2,MINE_NX+5,MINE_NY+3,14 RETURN @N_MINE_N10 '? GOSUB @N_MINE_N0 GLINE MINE_NX+1,MINE_NY+1,MINE_NX+2,MINE_NY+0,14 GLINE MINE_NX+4,MINE_NY+1,MINE_NX+3,MINE_NY+0,14 GLINE MINE_NX+4,MINE_NY+2,MINE_NX+3,MINE_NY+3,14 GPSET MINE_NX+3,MINE_NY+5,14 RETURN @N_MINE_N12 GOSUB @N_MINE_N0 GPSET MINE_NX+2,MINE_NY+2,2 GLINE MINE_NX+3,MINE_NY+1,MINE_NX+3,MINE_NY+3,2 GLINE MINE_NX+4,MINE_NY+1,MINE_NX+4,MINE_NY+3,2 GPSET MINE_NX+4,MINE_NY+4,14 GLINE MINE_NX+3,MINE_NY+5,MINE_NX+5,MINE_NY+5,14 RETURN @N_MINE_N13 GOSUB @N_MINE_N9 GPAINT MINE_NX+1,MINE_NY+1,2 RETURN @N_MINE_N14 GOSUB @N_MINE_N9 GLINE MINE_NX+2,MINE_NY+2,MINE_NX+6,MINE_NY+6,2 GLINE MINE_NX+6,MINE_NY+2,MINE_NX+2,MINE_NY+6,2 RETURN '0=ナシ '1=1 '2=2 '8=8 '9=BOM '10=? '11=FLG '12=OPEN '13ハ゛クハツ '14フセカ゛レタ @N_MINE BF=MINE_BF GOSUB @WINBUFFP FOR I=0TO MINE_X-1 FOR J=0TO MINE_Y-1 MINE_F[I,J]=0 MINE_M[I,J]=(RND(MINE_BOM)==0)*9 MINE_BOMB=MINE_BOMB+(MINE_M[I,J]==9) MINE_NX=I*8 MINE_NY=J*8 GOSUB @N_MINE_N0 NEXT NEXT 'スウシ゛セット FOR I=0TO MINE_X-1 FOR J=0TO MINE_Y-1 IF MINE_M[I,J]==9AND I 0THEN IF MINE_M[I-1,J]!=9THEN MINE_M[I-1,J]=MINE_M[I-1,J]+1 IF MINE_M[I,J]==9AND I MINE_X-1 THEN IF MINE_M[I+1,J]!=9THEN MINE_M[I+1,J]=MINE_M[I+1,J]+1 IF MINE_M[I,J]==9AND J 0THEN IF MINE_M[I,J-1]!=9THEN MINE_M[I,J-1]=MINE_M[I,J-1]+1 IF MINE_M[I,J]==9AND J MINE_Y-1 THEN IF MINE_M[I,J+1]!=9THEN MINE_M[I,J+1]=MINE_M[I,J+1]+1 F=0 IF MINE_M[I,J]==9AND I MINE_X-1AND J 0THEN IF MINE_M[I+1,J-1]!=9THEN F=1 IF F==1THEN MINE_M[I+1,J-1]=MINE_M[I+1,J-1]+1 F=0 IF MINE_M[I,J]==9AND J MINE_Y-1AND I 0THEN IF MINE_M[I-1,J+1]!=9THEN F=1 IF F==1THEN MINE_M[I-1,J+1]=MINE_M[I-1,J+1]+1 F=0 IF MINE_M[I,J]==9AND J 0AND I 0THEN IF MINE_M[I-1,J-1]!=9THEN F=1 IF F==1THEN MINE_M[I-1,J-1]=MINE_M[I-1,J-1]+1 F=0 IF MINE_M[I,J]==9AND J MINE_Y-1AND I MINE_X-1THEN IF MINE_M[I+1,J+1]!=9THEN F=1 IF F==1THEN MINE_M[I+1,J+1]=MINE_M[I+1,J+1]+1 NEXT NEXT RETURN FOR I=0TO MINE_X-1 FOR J=0TO MINE_Y-1 MINE_NX=I*8 MINE_NY=J*8 GOSUB "@N_MINE_N"+STR$(MINE_M[I,J]) NEXT NEXT GOSUB @WINBUFFP2 RETURN @GV_MINE FOR I=0TO MINE_X-1 FOR J=0TO MINE_Y-1 MINE_NX=I*8 MINE_NY=J*8 IF MINE_M[I,J]==9THEN IF MINE_F[I,J]==-1THEN MINE_M[I,J]=14 ELSE MINE_M[I,J]=13 IF MINE_M[I,J]==0THEN MINE_M[I,J]=11 GOSUB "@N_MINE_N"+STR$(MINE_M[I,J]) NEXT NEXT RETURN @P_MINE ' IF MINE_M[MINE_PX,MINE_PY]==3THEN IF MINE_F[MINE_PX,MINE_PY]==-1THEN RETURN MINE_NX=MINE_PX*8 MINE_NY=MINE_PY*8 IF MINE_N==0THEN GOSUB @P_MINE_O RETURN IF MINE_M[MINE_PX,MINE_PY]==9THEN MINE_GV=1 IF MINE_F[MINE_PX,MINE_PY]==0THEN MINE_SPACE=MINE_SPACE-1 IF MINE_F[MINE_PX,MINE_PY]==-2THEN MINE_SPACE=MINE_SPACE-1 MINE_F[MINE_PX,MINE_PY]=1 GOSUB "@N_MINE_N"+STR$(MINE_N) RETURN @P_MINE_O P=0 MINE_OX[0]=MINE_PX MINE_OY[0]=MINE_PY @P_MINE_OL IF P==-1THEN RETURN IF MINE_M[MINE_OX[P],MINE_OY[P]]==0THEN MINE_M[MINE_OX[P],MINE_OY[P]]=11 MINE_NX=MINE_OX[P]*8 MINE_NY=MINE_OY[P]*8 GOSUB "@N_MINE_N11"'+STR$(MINE_M[MINE_OX[P],MINE_OY[P]]) IF MINE_F[MINE_OX[P],MINE_OY[P]]==0THEN MINE_SPACE=MINE_SPACE-1 IF MINE_F[MINE_OX[P],MINE_OY[P]]==-2THEN MINE_SPACE=MINE_SPACE-1 MINE_F[MINE_OX[P],MINE_OY[P]]=1 IF MINE_OX[P] 1THEN @P_MINE_OL2 G=MINE_M[MINE_OX[P]-1,MINE_OY[P]] IF MINE_F[MINE_OX[P]-1,MINE_OY[P]]==-1THEN @P_MINE_OL2 IF G==0 OR G==0 THEN MINE_OX[P+1]=MINE_OX[P]-1 MINE_OY[P+1]=MINE_OY[P]P=P+1 GOTO @P_MINE_OL F=0 IF G 0AND G 9AND MINE_F[MINE_OX[P],MINE_OY[P]]==0 THEN MINE_SPACE=MINE_SPACE-1 IF G 0AND G 9AND MINE_F[MINE_OX[P],MINE_OY[P]]==-2THEN MINE_SPACE=MINE_SPACE-1 IF G 0AND G 9 THEN MINE_NX=MINE_NX-8 GOSUB "@N_MINE_N"+STR$(G) MINE_F[MINE_OX[P]-1,MINE_OY[P]]=1 MINE_NX=MINE_OX[P]*8 MINE_NY=MINE_OY[P]*8 @P_MINE_OL2 IF MINE_OY[P] 1THEN @P_MINE_OL3 G=MINE_M[MINE_OX[P],MINE_OY[P]-1] IF MINE_F[MINE_OX[P],MINE_OY[P]-1]==-1THEN @P_MINE_OL3 IF G==0 OR G==0 THEN MINE_OX[P+1]=MINE_OX[P] MINE_OY[P+1]=MINE_OY[P]-1P=P+1 GOTO @P_MINE_OL IF G 0AND G 9AND MINE_F[MINE_OX[P],MINE_OY[P]]==0 THEN MINE_SPACE=MINE_SPACE-1 IF G 0AND G 9AND MINE_F[MINE_OX[P],MINE_OY[P]]==-2THEN MINE_SPACE=MINE_SPACE-1 IF G 0AND G 9 THEN MINE_NY=MINE_NY-8 GOSUB"@N_MINE_N"+STR$(G) MINE_F[MINE_OX[P],MINE_OY[P]-1]=1 MINE_NX=MINE_OX[P]*8 MINE_NY=MINE_OY[P]*8 @P_MINE_OL3 IF MINE_OX[P] =MINE_X-1THEN @P_MINE_OL4 G=MINE_M[MINE_OX[P]+1,MINE_OY[P]] IF MINE_F[MINE_OX[P]+1,MINE_OY[P]]==-1THEN @P_MINE_OL4 IF G==00OR G==0 THEN MINE_OX[P+1]=MINE_OX[P]+1 MINE_OY[P+1]=MINE_OY[P]P=P+1 GOTO @P_MINE_OL IF G 0AND G 9AND MINE_F[MINE_OX[P],MINE_OY[P]]==0 THEN MINE_SPACE=MINE_SPACE-1 IF G 0AND G 9AND MINE_F[MINE_OX[P],MINE_OY[P]]==-2THEN MINE_SPACE=MINE_SPACE-1 IF G 0AND G 9 THEN MINE_NX=MINE_NX+8GOSUB"@N_MINE_N"+STR$(G) MINE_F[MINE_OX[P]+1,MINE_OY[P]]=1 MINE_NX=MINE_OX[P]*8 MINE_NY=MINE_OY[P]*8 @P_MINE_OL4 IF MINE_OY[P] =MINE_Y-1THEN @P_MINE_OL5 IF MINE_F[MINE_OX[P],MINE_OY[P]+1]==-1THEN @P_MINE_OL5 G=MINE_M[MINE_OX[P],MINE_OY[P]+1] IF G==00OR G==0 THEN MINE_OX[P+1]=MINE_OX[P] MINE_OY[P+1]=MINE_OY[P]+1P=P+1 GOTO @P_MINE_OL IF G 0AND G 9AND MINE_F[MINE_OX[P],MINE_OY[P]]==0 THEN MINE_SPACE=MINE_SPACE-1 IF G 0AND G 9AND MINE_F[MINE_OX[P],MINE_OY[P]]==-2THEN MINE_SPACE=MINE_SPACE-1 IF G 0AND G 9 THEN MINE_NY=MINE_NY+8GOSUB "@N_MINE_N"+STR$(G) MINE_F[MINE_OX[P],MINE_OY[P]+1]=1 MINE_NX=MINE_OX[P]*8 MINE_NY=MINE_OY[P]*8 @P_MINE_OL5 P=P-1 GOTO @P_MINE_OL RETURN @MINEKEY KEY 1,"MINE_ END @A_MINE MINE_X=16 MINE_Y=16 MINE_SPACE=MINE_X*MINE_Y MINE_BOM=32'カクリツ DIM MINE_M[64,64] 'フラク゛マッフ゜ DIM MINE_F[64,64] DIM MINE_DX[64] DIM MINE_DY[64] DIM MINE_OX[64*64] DIM MINE_OY[64*64] MINE_=1 RETURN @SB_MINE GOSUB @WINBUFF IF BF==0THEN RETURN MINE_BF=BF RETURN @S_MINE WINCLS=1 IF MINE_F==1THEN GOSUB@WINCLOSE RETURN IF MINE_==0THEN GOSUB @A_MINE IF MINE_B==0THEN GOSUB@SB_MINE MINE_B=0 BF=MINE_BF BFC=13 GOSUB @WINBUFFGCLS GOSUB @N_MINE MINE_F=1 WINCLS=1 WINY2=MINE_Y*8+11 WINX2=MINE_X*8+3 GOSUB @WINBUFFP GBOX 0,0,MINE_X*8,MINE_Y*8,255 GOSUB @WINBUFFP2 MINE_GV=0 MINE_GV2=0 MINE_CL=0 WINTTL$="MINE RETURN @WIN_MINE GCOPY MINE_BF,0,0,MINE_X*8-1,MINE_Y*8-1,WFX,WFY,1 'GAMEOVER IF MINE_GV+MINE_CL THEN WINSX=0WINSY=0 WINSTR$="А TO RESTART"WINSC=1GOSUB@WINSTRPUT BF=MINE_BF GOSUB @WINBUFFP IF MINE_CL AND WINACTV AND BUTTON()==16AND WINFLG[TSK]==2THEN MINE_B=1MINE_F=0GOSUB@S_MINE IF MINE_CL GOTO @SKP_MINE IF MINE_GV==1 THEN BGMPLAY 6 MINE_GV=2 GOTO @SKP_MINE IF MINE_GV==100AND !MINE_GV2 THEN GOSUB@GV_MINE MINE_GV=2 MINE_GV2=1 GOTO @SKP_MINE IF MINE_GV AND WINACTV AND BUTTON()==16 AND WINFLG[TSK]==2THEN MINE_B=1MINE_F=0GOSUB@S_MINE IF MINE_GV THEN MINE_GV=MINE_GV+1 GOTO @SKP_MINE ' IF MINE_CL==1THEN BGMPLAY 5 MINE_CL=2GOTO @SKP_MINE ' IF MINE_CL THEN MINE_CL=2GOTO @SKP_MINE MINE_MX=0OR(MOUSEX-WFX)/8 MINE_MY=0OR(MOUSEY-WFY)/8 F=0 IF MINE_MX =0AND MINE_MY =0THEN F=1 IF F AND MINE_MX =MINE_X-1 AND MINE_MX =MINE_Y-1THEN MINE_MF=1 ELSE MINE_MF=0 'IF MINE_MF THEN ?MINE_M[MINE_MX,MINE_MY] IF CLICK*MINE_MF THEN MINE_PX=MINE_MX MINE_PY=MINE_MY MINE_N=MINE_M[MINE_MX,MINE_MY]GOSUB@P_MINE 'モト゛ス オエ- F=0S=0 IF CLICKR*MINE_MF THEN IF(MINE_F[MINE_MX,MINE_MY]==-2)THEN F=1 IF F==1THEN MINE_F[MINE_MX,MINE_MY]=0 MINE_NX=MINE_MX*8 MINE_NY=MINE_MY*8 GOSUB @N_MINE_N0 S=1 '? F=0 IF CLICKR*MINE_MF THEN IF(MINE_F[MINE_MX,MINE_MY]==-1)THEN F=1 IF F==1THEN GOSUB @HTN_MINE 'FLAG F=0 IF CLICKR*MINE_MF THEN IF(MINE_F[MINE_MX,MINE_MY]==0)THEN F=1 IF !S*F THEN GOSUB @FLG_MINE IF MINE_BOMB =0THEN MINE_CL=1BEEP 34 @SKP_MINE F=0 GOSUB @WINBUFFP2 RETURN @HTN_MINE IF MINE_M[MINE_MX,MINE_MY]==9THEN MINE_BOMB=MINE_BOMB+1 IF MINE_M[MINE_MX,MINE_MY]!=9THEN MINE_BOMB=MINE_BOMB-1 MINE_F[MINE_MX,MINE_MY]=-2 MINE_NX=MINE_MX*8 MINE_NY=MINE_MY*8 GOSUB @N_MINE_N10 RETURN @FLG_MINE MINE_F[MINE_MX,MINE_MY]=-1 MINE_NX=MINE_MX*8 MINE_NY=MINE_MY*8 GOSUB @N_MINE_N12 IF MINE_M[MINE_MX,MINE_MY]==9THEN MINE_BOMB=MINE_BOMB-1 IF MINE_M[MINE_MX,MINE_MY]!=9THEN MINE_BOMB=MINE_BOMB+1 RETURN @C_INV BF=INV_BF GOSUB @WINBUFFC GOSUB @WINCLOSE INV_F=0 INV_GV=0 INV_CL=0 INV_ME=0 RETURN @ST_INV BF=INV_BF GOSUB @WINBUFFP FOR I=0TO INV_EM-1 FOR J=0TO INV_EM2-1 INV_F[I,J]=0 INV_E[I,J]=1 GPUTCHR I*8+32,J*8,"BGF",ASC("Е"),0,1 NEXT NEXT GOSUB @WINBUFFP2 RETURN @A_INV INV_MX=8*8 INV_MY=4*8 INV_EM=8 INV_EM2=4 DIM INV_E[INV_EM,INV_EM2] DIM INV_F[INV_EM,INV_EM2] DIM INV_TEX[INV_EM,INV_EM2] DIM INV_TEY[INV_EM,INV_EM2] INV_A=1 RETURN @S_INV IF INV_F==1THEN RETURN INV_F=1 WINCLS=1 GOSUB @WINBUFF IF !BF THEN RETURN INV_BF=BF BFC=14 GOSUB @WINBUFFGCLS IF INV_A==0THEN GOSUB @A_INV WINX2=130 WINY2=96+10+1 @INV_INI GOSUB @ST_INV INV_SCO=0 INV_SX=32 INV_SY=0 INV_SF=0 INV_SP=1 INV_GV=0 INV_CF=0 INV_PX=64 INV_PY=96 INV_ME=INV_EM*INV_EM2 WINTTL$="INV RETURN @GV_INV IF INV_GV==1 THEN BGMPLAY 6 INV_GV=2 F=0 IF CLICK3 AND WINACTV AND WINFLG[TSK]==2THEN F=1 IF F THEN BF=INV_BF BFC=14 GOSUB@WINBUFFGCLS GOSUB@INV_INI WINSX=0WINSY=8WINSC=RND(16)WINSTR$="CLICK TO REPLAY"GOSUB @WINSTRPUT GPUTCHR INV_PX+WFX,WFY+96-8,"BGF",42,0,1 RETURN @CL_INV WINSX=0WINSY=8WINSC=0WINSTR$="CLICK TO REPLAY"GOSUB @WINSTRPUT F=0 IF CLICK3 AND WINACTV AND WINFLG[TSK]==2THEN F=1 IF F THEN BF=INV_BF BFC=14 GOSUB@WINBUFFGCLS GOSUB@INV_INI RETURN @WIN_INV GCOPY INV_BF,0,0,128,96,WFX,WFY,1 WINSX=0WINSY=0WINSC=0WINSTR$="SCORE "+STR$(INV_SCO)+"0"GOSUB@WINSTRPUT IF INV_GV THEN @GV_INV IF INV_ME =0AND !INV_CF THEN INV_CF=1BGMPLAY 4 IF INV_CF THEN @CL_INV BF=INV_BF GOSUB @WINBUFFP INV_OSX=INV_SX INV_OSY=INV_SY INV_OSF=INV_SF F=0 IF !INV_SF THEN INV_SX=INV_SX-INV_SP IF INV_SF THEN INV_SX=INV_SX+INV_SP IF INV_SX =1THEN INV_SX=1INV_SF=1 INV_SY=INV_SY+4F=1 BGMPLAY"@151Q1C8" INV_SP=INV_SP*1.2 IF INV_SX =128-64 THEN INV_SX=64INV_SF=0 INV_SY=INV_SY+4F=1 BGMPLAY"@151Q1C8" INV_SP=INV_SP*1.2 GCOPY INV_OSX,INV_OSY,INV_OSX+64,INV_OSY+INV_MY*8,INV_SX,INV_SY,1 IF INV_SF*INV_OSF THEN GFILL INV_OSX-INV_SP,INV_OSY,INV_OSX,INV_SY+INV_MX*8,14 IF (!INV_SF*!INV_OSF) THEN GFILL INV_OSX+64,INV_OSY,128,INV_SY+INV_MX*8,14 IF F THEN GFILL 0,INV_OSY,127,INV_OSY+3,14 IF INV_SY 128THEN INV_GV=1 GOSUB @WINBUFFP2 'GFILL INV_PX+WFX,WFY+96-8,WFX+INV_PX+8,WFY+96,6 GPUTCHR INV_PX+WFX,WFY+96-8,"BGF",5,0,1 B=BUTTON() IF B AND 4THEN INV_PX=INV_PX-2 IF B AND 8THEN INV_PX=INV_PX+2 TP=INV_TP F=0 G=(B AND 16)==16AND (INV_B AND 16)!=16 IF G AND !INV_TF[TP]THEN INV_TF[TP]=1 BGMPLAY"@151Q1 C" F=1 IF F THEN INV_TX[TP]=INV_PX INV_TY[TP]=96-8 INV_TP=(INV_TP+1)%5 FOR I=0TO INV_EM-1 FOR J=0TO INV_EM2-1 IF INV_E[I,J]==2OR INV_F[I,J]==1THEN @INV_SKPP IF INV_E[I,J]==0THEN @INV_SKPPP F=0 IF !RND(100)AND INV_E[I,J]==1THEN BGMPLAY"@151Q1 C"F=1INV_F[I,J]=1 IF F THEN INV_TEX[I,J]=INV_SX+I*8 INV_TEY[I,J]=INV_SY+J*8 ELSE @INV_SKPPP @INV_SKPP INV_TEY[I,J]=INV_TEY[I,J]+3 GFILL WFX+INV_TEX[I,J],WFY+INV_TEY[I,J],WFX+INV_TEX[I,J]+1,WFY+INV_TEY[I,J]+2,15 IF INV_TEY[I,J] 94THEN INV_F[I,J]=0 F=0 IF INV_TEY[I,J] =96-8AND INV_TEY[I,J] =96THEN F=1 IF F AND INV_TEX[I,J] =INV_PX AND INV_TEX[I,J] =INV_PX+8THEN INV_GV=1 @INV_SKPPP NEXT NEXT FOR I=0TO 5'INV_TP TP=I F=0 IF !INV_TF[TP]THEN @INV_SKP IF INV_TF[TP] THEN INV_TY[TP]=INV_TY[TP]-2 F=1 IF F THEN GFILL WFX+INV_TX[TP],INV_TY[TP]+WFY,INV_TX[TP]+2+WFX,INV_TY[TP]-4+WFY,15 IF INV_TF[TP]*(INV_TY[TP] 0)THEN INV_TF[TP]=0 F=0 IF INV_TX[I] =INV_SX AND INV_TX[I] =INV_SX+64AND INV_TY[I] =INV_SY AND INV_TY[I] =INV_SY+42THEN F=1 A=0OR (INV_TX[TP]-INV_SX)/8 C=0OR (INV_TY[TP]-INV_SY)/8 IF F AND A =0AND A INV_MX/8 AND C =0AND C INV_MY/8 THEN IF INV_E[A,C] 0THEN F=2 IF F==2THEN INV_ECX=A INV_ECY=C GOSUB@INV_EC INV_TF[TP]=0 INV_SCO=INV_SCO+1+(0OR INV_SP) @INV_SKP NEXT INV_B=B RETURN @INV_EC GOSUB @WINBUFFP GFILL 0OR INV_ECX*8+INV_SX,0OR INV_ECY*8+INV_SY,0OR INV_ECX*8+INV_SX+7,0OR INV_ECY*8+INV_SY+7,14 INV_E[INV_ECX,INV_ECY]=0 GOSUB @WINBUFFP2 INV_ME=INV_ME-1 RETURN @C_REV BF=REV_BF GOSUB@WINBUFFC GOSUB@WINCLOSE RETURN @D_REV GCIRCLE X*8+3,Y*8+3,3,C GCIRCLE X*8+3,Y*8+3,2,C GCIRCLE X*8+3,Y*8+3,1,C GPSET X*8+3,Y*8+3,C RETURN @P_REV GOSUB@WINBUFFP GCLS 29 FOR I=0TO 7 GLINE I*8-1,0,I*8-1,64,14 GLINE 0,I*8-1,64,I*8-1,14 NEXT FOR I=0TO 7 FOR J=0TO 7 REV_M[I,J]=0 NEXT NEXT REV_M[3,3]=1 REV_M[4,4]=1 REV_M[4,3]=2 REV_M[3,4]=2 C=2X=3Y=3GOSUB @D_REV C=2X=4Y=4GOSUB @D_REV C=4X=4Y=3GOSUB @D_REV C=4X=3Y=4GOSUB @D_REV GOSUB@WINBUFFP2 RETURN ' ('・w・`) マント゛クセ ' FOR,ハイレツナト゛ヲモチイタラ ラクニナルカモタ゛カ゛ @O_8REV X=REV_MX Y=REV_MY @OL_8REV X=X-1Y=Y+1 IF X 0 THEN RETURN IF Y 7THEN RETURN IF REV_M[X,Y]==0 THEN RETURN IF REV_M[X,Y]==REV_J THEN GOSUB@OS_8REV RETURN GOTO@OL_8REV @OS_8REV F=1 K=0 IF REV_OF==1THEN RETURN K=REV_MY D=REV_MX Z=X FOR I=Z+1 TO REV_MX-1 K=K+1 D=D-1 Y=K X=D C=REV_JC GOSUB @D_REV REV_M[X,Y]=REV_J NEXT RETURN @O_7REV X=REV_MX Y=REV_MY @OL_7REV X=X+1Y=Y-1 IF X 7THEN RETURN IF Y 0 THEN RETURN IF REV_M[X,Y]==0 THEN RETURN IF REV_M[X,Y]==REV_J THEN GOSUB@OS_7REV RETURN GOTO@OL_7REV @OS_7REV F=1 K=0 IF REV_OF==1THEN RETURN K=REV_MY Z=X FOR I=REV_MX+1 TO Z-1 K=K-1 Y=K X=I C=REV_JC GOSUB @D_REV REV_M[X,Y]=REV_J NEXT RETURN @O_6REV X=REV_MX Y=REV_MY @OL_6REV X=X+1Y=Y+1 IF X 7THEN RETURN IF Y 7THEN RETURN IF REV_M[X,Y]==0 THEN RETURN IF REV_M[X,Y]==REV_J THEN GOSUB@OS_6REV RETURN GOTO@OL_6REV @OS_6REV F=1 K=0 IF REV_OF==1THEN RETURN K=REV_MY Z=X FOR I=REV_MX+1 TO Z-1 K=K+1 Y=K X=I C=REV_JC GOSUB @D_REV REV_M[X,Y]=REV_J NEXT RETURN @O_5REV X=REV_MX Y=REV_MY @OL_5REV X=X-1Y=Y-1 IF X 0 THEN RETURN IF Y 0 THEN RETURN IF REV_M[X,Y]==0 THEN RETURN IF REV_M[X,Y]==REV_J THEN GOSUB@OS_5REV RETURN GOTO@OL_5REV @OS_5REV F=1 K=0 IF REV_OF==1THEN RETURN K=REV_MY Z=X FOR I=REV_MX-1 TO Z+1 STEP -1 K=K-1 Y=K X=I C=REV_JC GOSUB @D_REV REV_M[X,Y]=REV_J NEXT RETURN @O_4REV X=REV_MX Y=REV_MY @OL_4REV Y=Y+1IF Y 7THEN RETURN IF REV_M[X,Y]==0 THEN RETURN IF REV_M[X,Y]==REV_J THEN GOSUB@OS_4REV RETURN GOTO@OL_4REV @OS_4REV F=1 Z=Y IF REV_OF==1THEN RETURN FOR I=REV_MY+1 TO Z-1 X=REV_MX Y=I C=REV_JC GOSUB @D_REV REV_M[X,Y]=REV_J NEXT RETURN @O_3REV X=REV_MX Y=REV_MY @OL_3REV X=X+1IF X 7THEN RETURN IF REV_M[X,Y]==0 THEN RETURN IF REV_M[X,Y]==REV_J THEN GOSUB@OS_3REV RETURN GOTO@OL_3REV @OS_3REV F=1 Z=X IF REV_OF==1THEN RETURN FOR I=REV_MX+1 TO Z-1 Y=REV_MY X=I C=REV_JC GOSUB @D_REV REV_M[X,Y]=REV_J NEXT RETURN @O_2REV X=REV_MX Y=REV_MY @OL_2REV Y=Y-1IF Y 0 THEN RETURN IF REV_M[X,Y]==0 THEN RETURN IF REV_M[X,Y]==REV_J THEN GOSUB@OS_2REV RETURN GOTO @OL_2REV @OS_2REV F=1 Z=Y IF REV_OF==1THEN RETURN FOR I=Z+1 TO REV_MY-1 X=REV_MX Y=I C=REV_JC GOSUB @D_REV REV_M[X,Y]=REV_J NEXT RETURN @O_1REV X=REV_MX Y=REV_MY @OL_1REV X=X-1 IF X 0 THEN RETURN IF REV_M[X,Y]==0 THEN RETURN IF REV_M[X,Y]==REV_J THEN GOSUB@OS_1REV RETURN GOTO @OL_1REV @OS_1REV F=1 IF REV_OF==1THEN RETURN Z=X FOR I=Z+1 TO REV_MX-1 X=I Y=REV_MY C=REV_JC GOSUB @D_REV REV_M[X,Y]=REV_J NEXT RETURN @O_REV F=0 IF REV_M[REV_MX,REV_MY]!=0THEN RETURN IF REV_MX==0THEN @O_REV2 IF REV_M[REV_MX-1,REV_MY]==REV_C THEN GOSUB@O_1REV @O_REV2 IF REV_MY==0THEN @O_REV3 IF REV_M[REV_MX,REV_MY-1]==REV_C THEN GOSUB@O_2REV @O_REV3 IF REV_MX==7THEN @O_REV4 IF REV_M[REV_MX+1,REV_MY]==REV_C THEN GOSUB@O_3REV @O_REV4 IF REV_MY==7THEN @O_REV5 IF REV_M[REV_MX,REV_MY+1]==REV_C THEN GOSUB@O_4REV 'л ' ○ ' @O_REV5 IF REV_MX==0THEN @O_REV6 IF REV_MY==0THEN @O_REV6 IF REV_M[REV_MX-1,REV_MY-1]==REV_C THEN GOSUB@O_5REV @O_REV6 IF REV_MX==7THEN @O_REV7 IF REV_MY==7THEN @O_REV7 IF REV_M[REV_MX+1,REV_MY+1]==REV_C THEN GOSUB@O_6REV @O_REV7 IF REV_MX==7THEN @O_REV8 IF REV_MY==0THEN @O_REV8 IF REV_M[REV_MX+1,REV_MY-1]==REV_C THEN GOSUB@O_7REV @O_REV8 IF REV_MX==0THEN @O_REV9 IF REV_MY==7THEN @O_REV9 IF REV_M[REV_MX-1,REV_MY+1]==REV_C THEN GOSUB@O_8REV @O_REV9 REV_OF=0 RETURN @A_REV DIM REV_M[8,8] 'ハイレツセンケ゛ン DIM REV_J[8,8] 'ハイレツセンケ゛ン DIM REV_C[8,8] 'ハイレツセンケ゛ン DIM REV_D[8,8] 'ハイレツセンケ゛ン RETURN @S_REV GOSUB@WINBUFF 'ハ゛ッファカクホ IF BF==0 THEN RETURN 'エラ-ショリ REV_BF=BF BFC=29 'GCLSスルイロ GOSUB@WINBUFFGCLS WINCLS=1 '@C_ハソンサ゛イシテイマス IF REV_A==0 THEN GOSUB@A_REV REV_A=1 REV_END=0 REV_PASS=0 REV_CPASS=0 WINX2=64 WINY2=74 REV_J=1REV_JC=2REV_C=2REV_CC=4 GOSUB@P_REV WINTTL$="REV RETURN @WIN_REV BF=REV_BF GCOPY REV_BF,0,0,62,62,WFX,WFY,1 GOSUB@WINBUFFP REV_MX=0OR(MOUSEX-WFX)/8 REV_MY=0OR(MOUSEY-WFY)/8 IF REV_MX 0OR REV_MX 7OR REV_MY 0OR REV_MY 7THEN @SKP_REV F=0 ' IF REV_PASS THEN GOSUB @REV_COM REV_OKEN=0 REV_PASS=0 ' IF REV_CPASS THEN REV_CPASS=0 REV_COKEN=0 G=0 ' IF CLICKR AND REV_M[X,Y]==REV_J THEN X=REV_MX Y=REV_MY C=29 GOSUB @D_REV REV_M[X,Y]=0G=1 ' IF CLICKR AND REV_M[X,Y]==REV_C THEN X=REV_MX Y=REV_MY C=REV_JC GOSUB @D_REV REV_M[X,Y]=REV_J G=1 X=REV_MX Y=REV_Y IF CLICKR AND REV_M[X,Y]==0 THEN X=REV_MX Y=REV_MY C=REV_CC GOSUB @D_REV REV_M[X,Y]=REV_C G=1 REV_J=1REV_JC=2REV_C=2REV_CC=4 IF CLICK THEN GOSUB@O_REV IF G GOTO @SKP_REV IF F THEN X=REV_MX Y=REV_MY C=REV_JC GOSUB @D_REV REV_M[X,Y]=REV_J IF F THEN GOSUB@REV_COM @SKP_REV GOSUB@WINBUFFP2 RETURN @OKC_REV KKK=0 FOR I=0TO 7 FOR J=0TO 7 REV_MX=I REV_OF=1 F=0 GOSUB @O_REV REV_J[I,J]=F KKK=KKK+F NEXT NEXT REV_OKEN=!KKK RETURN @REV_COM GPAGE 0,M,M GCOPY REV_BF,0,0,62,62,WFX,WFY,1 GOSUB @OKC_REV KKK=0 KKD=0 SWAP REV_J,REV_C SWAP REV_JC,REV_CC FOR I=0TO 7 FOR J=0TO 7 REV_MX=I REV_MY=J REV_OF=1 F=0 GOSUB @O_REV REV_C[I,J]=F REV_D[I,J]=F==1AND REV_J[I,J]==1 KKK=KKK+F KKD=KKD+REV_D[I,J] NEXT NEXT REV_COKEN=!KKK GOSUB@WINBUFFP 'IF REV_COKEN THEN REV_CPASS=1 ELSE REV_CPASS=0 'IF REV_COKEN THEN SWAP REV_J,REV_C SWAP REV_JC,REV_CC RETURN @REV_COML 'GPAGE 0,M,M 'GCOPY REV_BF,0,0,62,62,WFX,WFY,1 REV_OF=0 RX=RND(8) RY=RND(8) REV_MX=RX REV_MY=RY F=0 GOSUB@O_REV IF F THEN X=REV_MX Y=REV_MY C=REV_JC GOSUB @D_REV REV_M[X,Y]=REV_J IF F THEN @REV_COM2 GOTO @REV_COML @REV_COM2 SWAP REV_J,REV_C SWAP REV_JC,REV_CC 'GPAGE 0,M,M 'GFILL WFX+X*8,WFY+Y*8,WFX+X*8+2,Y*8+2+WFY,REV_CC 'WAIT 50 GOSUB @OKC_REV IF REV_OKEN THEN REV_PASS=1ELSE REV_PASS=0 GOSUB@WINBUFFP FOR I=0TO 7 FOR J=0TO 7 X=I Y=J C=29 IF REV_M[I,J]==REV_C THEN C=REV_CC IF REV_M[I,J]==REV_J THEN C=REV_JC GOSUB @D_REV NEXT NEXT RETURN '-------SYSTEM APPLICATION----- @S_ABOUT WINX2=130 WINY2=48 WINCLS=1 WINTTL$="ABOUT @C_ABOUT RETURN @WIN_ABOUT WINSY=0 WINSX=0 WINSC=1 WINSTR$=MID$(VERSION$,0,16) GOSUB @WINSTRPUT WINSC=1 WINSY=8 WINSTR$=MID$(VERSION$,16,15) GOSUB @WINSTRPUT WINBY=16 WINBX=62-8 WINBSTR$="OK" GOSUB @WINBTN IF WINBTNF==1THEN GOSUB @WINCLOSE WINSC=1 WINSY=27 WINSX=0 WINSTR$="(C)2011-2013otya" GOSUB @WINSTRPUT RETURN 'SYSTEM ERROR @SYS_ERR_BUFF WINNAME$[TSK]="BUFF WINTTL$[TSK]="BUFF RETURN @WIN_BUFF ' WINNAME$[TSK]="SYS_ERR ' WINM[TSK]=-1 ERRN$="Out of buffer ERRT$="ハ゛ッファフ゛ソク GOSUB @WIN_SYS_ERR RETURN @C_SYS_ERR GOSUB @WINCLOSE RETURN 'ARRAY SET @A_SYS_ERR DIM OTWERRT$[TSKMAX] DIM OTWERRN$[TSKMAX] RETURN @S_SYS_ERR IF OTWERR==0THEN GOSUB @A_SYS_ERR OTWERR=1 OTWERRT$[OTWERR_M]=ERRT$ OTWERRN$[OTWERR_M]=ERRN$ WINMLT[TSK]=OTWERR_M OTWERR_M=OTWERR_M RETURN @WIN_SYS_ERR ' P=WINMLT[TSK] ' WINM[TSK]=1 WINTTL$[TSK]=ERRT$'="ハ゛ッファフ゛ソク WINY2=26+WINDEGY2+WINDEGY WINX2=LEN("Sorry, a system error")*8+WINDEGX+WINDEGX2 WINSX=0 WINSY=0 WINSC=1 WINSTR$="Sorry, a system error" GOSUB @WINSTRPUT WINSC=1 WINSY=8 WINSTR$="type "+ERRN$'Out of buff" GOSUB @WINSTRPUT WINBX=0 WINBY=16 WINBSTR$="OK" GOSUB @WINBTN IF WINBTNF==1THEN GOSUB @WINCLOSE RETURN '---コンソ-ルアフ゜リ @S_COMDBG RETURN @WIN_COMDBG WINSC=1 WINSTR$="A" GOSUB @WINSTRPUT RETURN @S_COM WINTTL$="COMMAND" COMINPUT$="@WIN_COM_INPUT WINMODE=1 WIN_MODE=1 GOSUB @WINFLAG WINCOMF=1 WINCOMX2=128+8 WINCOMY2=191-8 WINX2=128+8 WINY2=192-8 GOSUB @COMWINDOW 'WINCOMSCY=19 RETURN @WIN_COM WINDESIGN$="NORMAL WINBG=14 GOSUB @WINDOW IF !WINEND THEN WINSCX=(0OR WINSCX/8)*8 WINSCY=(0OR WINSCY/8)*8 WINCOMSX=0OR WINSCX/8WINCOMSY=0OR WINSCY/8 WFX=(0OR WFX/8)*8 WFY=(0OR WFY/8)*8 BGOFS 0,511-WFX+WINCOMSCX*8,511-WFY+WINCOM ' BGOFS WINCOMR,511-WINCOMSX*8+WINCOMSCX*8,511-WINCOMSY*8+WINCOM GOTO @COMSKP ' WX=WINCOMSX WY=WINCOMSY ' WX2=WINCOMSX+WINCOMX2 WY2=WINCOMSY+WINCOMY2 ' F=0 IF MOUSEX =WX AND MOUSEX =WX2 THEN F=1 IF F==1AND MOUSEY =WY AND MOUSEY =WY2 THEN F=2 IF F==2AND CLICK==1THEN GOSUB @WINSWP F=0 IF MOUSEX =WX AND MOUSEX =WX2 THEN F=1 IF F==1AND MOUSEY =WY AND MOUSEY =WY+8THEN F=2 IF F==2AND CLICK==1THEN WINCOMMVF=1 IF WINCOMF==0THEN @S_COM @COMSKP IF WINIDFLG==1THEN RETURN WINCOMX22=0OR WINCOMX2/8 WINCOMY22=0OR WINCOMY2/8-1 B=BUTTON() IF B==1THEN WINCOMSCY=WINCOMSCY-1 IF B==2THEN WINCOMSCY=WINCOMSCY+1 GOSUB @WINCOMSCRY IF B==4THEN WINCOMSCX=WINCOMSCX-1' GOSUB @WIN_COM_ECHO IF B==8THEN WINCOMSCX=WINCOMSCX+1' GOSUB @WIN_COM_ECHO 'IF WINCOMSCY -(SCY+FLOOR(WINCOMY2/8))THEN WINCOMSCY=-(SCY+FLOOR(WINCOMY2/8)) ' IF WINCOMSCY 63-(SCY+FLOOR(WINCOMY2/8)) THEN WINCOMSCY=63-(SCY+FLOOR(WINCOMY2/8)) ' IF WINCOMSCY -SY THEN WINCOMSCY= ' IF WINCOMSCY 21-CY THEN WINCOMSCY=21-CY ' IF SCYY =0 THEN WINCOMSCY=0 ' IF WINCOMSCY+CY 0THEN WINCOMSCY=0 ' IF WINCOMSCY 63-WINCOMY22-6 THEN WINCOMSCY=63-WINCOMY22-6 IF WINCOMSCX 0THEN WINCOMSCX=0 IF WINCOMSCX 63-WINCOMX22 THEN WINCOMSCX=63-WINCOMX22 ' IF CY (FLOOR(WINCOMY2/8))THEN WINCOMSCY=21-CY IF WINCOMMVF==1THEN GOSUB @WIN_COM_MOV ' COMCOM=COMCOM+1 ' COMP$="TST"+STR$(COMCOM) GOSUB COMPRT$ ' GFILL WINCOMSX,WINCOMSY,WINCOMX2+WINCOMSX,WINCOMY2+WINCOMSY,14 KEYFLG=KEYFLG+(WINACTV==1) I$="" IF KEYBF$!=""AND WINACTV==1THEN I$=KEYBF$ KEYBF$="" GOSUB @WIN_COM_IN RETURN @WINCOMSCRY IF WINCOMSCY CY THEN COM$[WINCOMSCY]="" RETURN @WIN_COM_INPR WIN_COM_IN$="" COMP$=COMDIR$+" " COMKF=0 GOSUB COMPRT$ RETURN @WIN_COM_IN F=0 IF INSTR(I$,CHR$(13))!=-1THEN GOSUB @WINCMDRUN WIN_COM_IN$=WIN_COM_IN$+I$ COMCOM=RND(524287)'SCY COMP$=I$'STR$(COMCOM)+","+STR$(CYY) COMKF=0 GOSUB COMPRT$ 'CY=CY-1 IF F==1THEN GOSUB COMPRT$ GOSUB @WIN_COM_INPR RETURN @WINCMDRUN I$=MID$(I$,0,INSTR(I$,CHR$(13))) F=1 ' CY=CY+1 GOSUB COMPRT$ CMD$=WIN_COM_IN$ GOSUB @CMDRUN IF CMD$[0]=="TITLE"THEN WINTTL$=CMD$[1] IF NOCMD==0THEN GOSUB CMDL$ RETURN @WIN_COM_MOV WINCOMSX=(0OR MOUSEX/8)*8 WINCOMSY=(0OR MOUSEY/8)*8 ' BGOFS 1,511-WINCOMSX,511-WINCOMSY-SCYY*8 ' BGOFS 1,511-WINCOMSX,511-WINCOMSY+SCYY*8 ' BGOFS 1,511-WINCOMSX,511-WINCOMSY+SCYY*8+WINCOMSCY*8-8 ' BGFILL 1,0,0,WINCOMX2/8,WINCOMY2/8,255,0,0,0 '?MOUSEX,MOUSEY 'GFILL 0,0,WINCOMX2,WINCOMY2,OTWBGCL IF CLICK2==0THEN WINCOMMVF=0 RETURN @COMWINDOW OTW=1 BGFILL WINCOMR,0,0,WINCOMX2/8,WINCOMY2/8,0,0,0,0 COMPRT$="@COM_ECHO ' COMP$="OTYAX-COMMAND ' GOSUB COMPRT$ ' COMP$="alpha" ' GOSUB COMPRT$ GOSUB @COM_COM ' GFILL 0,0,255,191,OTWBGCL GOSUB @WIN_COM_INPR RETURN @WIN_COM_INPUT COM_IN_B$=COM$[CY] COM_I_INK$="" COMI$="" @WIN_COM_INPUTL COM_I_INK$=INKEY$() IF COM_I_INK$==CHR$(13)THEN RETURN IF COM_I_INK$!=""THEN COMI$=COMI$+COM_I_INK$ COM$[CY]=COM_IN_B$+COMI$ COMKF=0COMP$=""GOSUB COMPRT$ GOTO @WIN_COM_INPUTL RETURN WIN_COM_IN_MX=LEN(COM$[CY]) WIN_COM_IN_X=0 WIN_COM_IN_I$="" GPAGE 0,M,M FOR WIN_COM_IN_I=0TO 1 WIN_COM_IN_I=0 WY=WINCOMSY+8+WINCOMZY*8 'GFILL WIN_COM_IN_X*8,WY,WIN_COM_IN_X*8+8,WY-1,0 IF BUTTON()==4AND WIN_COM_IN_X WIN_COM_IN_MX THEN WIN_COM_IN_X=WIN_COM_IN_X-1 IF BUTTON()==8AND WIN_COM_IN_X 32THEN WIN_COM_IN_X=WIN_COM_IN_X+1 'GFILL WIN_COM_IN_X*8,WY,WIN_COM_IN_X*8+8,WY-1,15 FOR WIN_COM_IN_J=0TO 3 WIN_COM_IN_KEY=KEYBOARD WIN_COM_IN_K$=INKEY$() IF LEN(WIN_COM_IN_K$)THEN GOSUB @WIN_COM_IN_K '?WIN_COM_IN_I$ VSYNC 1 NEXT NEXT GPAGE 0,M,!M RETURN @WIN_COM_IN_K GFILL WIN_COM_IN_X*8,WY,WIN_COM_IN_X*8+8,WY-1,0 WIN_COM_IN_I$=MID$(WIN_COM_IN_I$,0,WIN_COM_IN_X)+WIN_COM_IN_K$+MID$(WIN_COM_IN_I$,WIN_COM_IN_X,256) IF WIN_COM_IN_X 32THEN WIN_COM_IN_X=WIN_COM_IN_X+1 RETURN @WIN_COM_ECHO A=FLOOR(WINCOMX2/8+WINCOMSX/8)-1 B=FLOOR(WINCOMY2/8+WINCOMSY/8) IF A =32THEN A=31 IF B =24THEN B=23 'BGCLIP 0OR(WINCOMSX/8),0OR(WINCOMSY/8)+1,A,B A=FLOOR(WFX2/8)-1 B=FLOOR(WFY2/8) C=0OR(WFX/8) D=0OR(WFY/8) IF A 0THEN A=0 IF B 0THEN B=0 IF C 0THEN C=0 IF D 0THEN D=0 IF A 31THEN A=31 IF B 23THEN B=23 IF C 31THEN C=31 IF D 23THEN D=23 BGCLIP C,D,A,B ' CY=CY%65 SCY=CY-(0OR (WINCOMY22)) IF SCY 0THEN SCY=0 SCYY=CY-(0OR (WINCOMY22)) ' SCY=SCY%(65-FLOOR(WINCOMY22)) IF CY (FLOOR(WINCOMY22))THEN SCY=0 SCYY=0 WINCMDF=0 IF CY =63THEN WINCMDF=1 CY=63 SCY=64-WINCOMY22 'GOSUB @WIN_COM_ECHO_S SCYYY=SCYY WINCOM=(SCYY*8)+WINCOMSCY*8 IF WINCMDF==1THEN WINCOM=WINCOM+8 IF WINCMDF THEN IF COMKF==1THEN GOSUB@WINCOMBGC SCYYY=63 ELSE SCYYY=63 ' WINCOMZY=(*1)*(!WINCMDF))+(63*WINCMDF) ' COM$[(*2)+1)%64]="" FOR I=SCY TO ((SCY+FLOOR(WINCOMY22))*(!WINCMDF))+(63*WINCMDF) K=0 ' IF I =64THEN I=99999 GOTO @WIN_COM_ECHO_SKP M$=COM$[I] IF I==CY THEN WINCOMZY=I-FLOOR(((WINCOMSY+WINCOM)/8)) J=0 FOR J=0 TO 63'(WINCOMX2/8)+WINCOMSCX-1 IF MID$(M$,J,1)==""THEN BGFILL WINCOMR,J,I,63,I,32 A=0 J=64 GOTO@WINCOMECHOSKP A=ASC(MID$(M$,J,1)) BGPUT WINCOMR,J,I,A ' IF ((J+1)%32)==0THEN K=K+1 @WINCOMECHOSKP NEXT 'I=I+3 @WIN_COM_ECHO_SKP NEXT ' BGOFS WINCOMR,511-WINCOMSX*8+WINCOMSCX*8,511-WINCOMSY*8+WINCOM 'IF CY =64THEN CY=0 ' IF WINCOM =0 THEN WINCOM=0 ' GFILL WINCOMSX,WINCOMSY,WINCOMX2+WINCOMSX,WINCOMY2+WINCOMSY,14 RETURN 0 - 0=1 1 - 1=2 2 - 3 - 4 - 5 - 6 - 6=7 7 - 7 @WIN_COM_ECHO_S FOR I=0TO 62 COM$[I]=COM$[I+1] NEXT COM$[63]="" RETURN @WINCOMBGC BGCOPY WINCOMR,0,1,63,63,0,0 'COMKF=1 RETURN FOR COM_Y=1TO 63 FOR COM_X=0TO 63 BGREAD(WINCOMR,COM_X,COM_Y),S BGPUT WINCOMR,COM_X,COM_Y-1,S NEXT NEXT RETURN @COM_ECHO K=0 IF CX+LEN(COMP$) 31THEN K=1 IF CY =63AND OTW==1AND COMKF==1 THEN GOSUB @WIN_COM_ECHO_S IF CY 63THEN CY=63 CX=LEN(COM$[CY]) COM$[CY]=MID$(COM$[CY],0,CX)+COMP$ '(32*(0OR(CX/32))),(32*(0OR(CX/32))))+COMP$ ' CX=CX+LEN(COMP$) 'CX=CX+LEN(COM$[CY]) CY=CY+(COMKF==1) ' IF CY =62 THEN ELSE COM$[CY+1]="" 'CX=CX CYY=CYY+(COMKF==1) IF OTW==1THEN GOSUB @WIN_COM_ECHO COMKF=1 ' IF WINCMDF==1 AND COM_IF==0 THEN COM_IF=2 COMP$="" GOSUB COMPRT$ COM_IF=0 ' IF COM_IF==2 THEN COM_IF=1 RETURN COMP$="" RETURN 'OTYAXWINDOWMANUAL @MANUAL アフ゜リ '------------- '@S_NAME WINX2= WINY2= RETURN '@WIN_NAME RETURN '------------- '------------- '@S_NAME WIN_MODE=1GOSUB @WINFLAG WINX2= WINY2= RETURN '@WIN_NAME 'WINDESIGN$="VISUAL GOSUB @WINDOW IF WINIDFLG==1THEN RETURN RETURN '------------- @M_SAMPLE HELLO,WORLD!! @S_S_HL RETURN @WIN_S_HL WINSX=0 WINSY=0 WINSC=1 WINSTR$="Hello" GOSUB @WINSTRPUT RETURN 1LINE EDITOR @S_S_1LINE WINX2=128 WINY2=20 WINTTL$="1LINE EDITOR RETURN @WIN_S_1LINE WINTX=0 WINTY=0 WINTX2=116 WINTSX=WIN1LINEX WINTA=WIN1LINEA WINTXTP$=WIN1LINE$ GOSUB @WINTXTBOX WIN1LINE$=WINTXT$ WIN1LINEX=WINTSX WIN1LINEA=WINTA RETURN ハッカッタッノッシオ @S_S_HKT WINX2=52 WINY2=20 RETURN @WIN_S_HKT WINBX=0 WINBY=0 WINBSTR$="CLICK!" GOSUB @WINBTN IF WINBTNF THEN TALK"@T50ハ!/カ!/タ!/ノ!/@T50シ./オ! RETURN @S_S_V WIN_MODE=1 WINTTL$="ウイテル... GOSUB @WINFLAG WINX2=116 WINY2=24 RETURN @WIN_S_V WINDESIGN$="VISUAL WINBG=1 GOSUB @WINDOW IF WINIDFLG==1THEN RETURN WINSX=0 WINSY=0 WINSC=0 WINSTR$="タタ゛シNORMALニカキ゛ル GOSUB @WINSTRPUT RETURN @M_API @MWINSTRPUT WINSX=サ゛ヒョウ WINSY=サ゛ヒョウ WINSC=ハ゜レット WINSTR$=モシ゛ -ナシ @MWINBTN WINBX=サ゛ WINBY=サ WINBSTR$=モシ゛ - WINBTNF=オサレタカ @MWINPROGBAR WINPX,WINPY,WINPX2,WINPY2 WINPS=サイタ゛イ @MWINCHKBOX WINCX,WINCY WINCSTR$= WINCHKF=オサレテイルカ WINCHKF=オサレタカ @T @TEMPLATE DATA"@C_{N} DATA" GOSUB@WINCLOSE DATA"RETURN DATA"@S_{N} DATA" WINX2={X2} DATA" WINY2={Y2} DATA"RETURN DATA"@WIN_{N} DATA"RETURN DATA END @TEMPLATE2 ACLS CLEAR DATA"@C_{N} DATA" BF={N}_BF DATA" GOSUB@WINBUFFC DATA" GOSUB@WINCLOSE DATA"RETURN DATA"@A_{N} DATA" {DIM} DATA"'DIM 'ハイレツセンケ゛ン DATA"RETURN DATA"@S_{N} DATA" GOSUB@WINBUFF 'ハ゛ッファカクホ DATA" IF BF==0 THEN RETURN 'エラ-ショリ DATA" {N}_BF=BF DATA" BFC=15 'GCLSスルイロ DATA" GOSUB@WINBUFFGCLS DATA" WINCLS=1 '@C_ハソンサ゛イシテイマス DATA" IF {N}_A==0 THEN GOSUB@A_{N} DATA" {N}_A=1 DATA" WINX2={X2} DATA" WINY2={Y2} DATA"RETURN DATA"@WIN_{N} DATA" GCOPY {N}_BF,0,0,WFX-WINSCX,WFY-WINSCY,WFX,WFY DATA" GOSUB@WINBUFFP DATA" GOSUB@WINBUFFP2 DATA"RETURN DATA END DIM VARN$[256] DIM VAR$[256] LBL$="@TEMPLATE2 @TEMPLATECOM INPUT"NAME?(VARSET→V,PREV→P,LABEL→@)";N$ IF N$=="V"THEN GOTO@TEMPLATEVARSET IF N$=="P"THEN GOTO@TEMPLATEP IF N$=="@"THEN INPUT"LABEL(NOT @)";L$ LBL$="@"+L$ GOTO@TEMPLATECOM RESTORE LBL$ VARN$[0]="N" VAR$[0]=N$ J=0 FOR I=0TO 1 READ R$ IF R$!="END"THEN I=0 GOSUB@TEMPLATECHK NEXT FOR I=1TO F+1 KEY I,F$[I-1] NEXT END @TEMPLATECHK GOSUB @TEMPLATEVAR IF LEN(R$)+1+LEN(F$[F]) 255THEN F=F+1 L=L+1 ?L*10" "R$ F$[F]=F$[F]+R$+CHR$(13) RETURN @TEMPLATEVAR SX=-1 FOR J=0TO LEN(R$)-1 IF MID$(R$,J,1)=="{"AND SX==-1THEN SX=J+1 IF MID$(R$,J,1)=="}"AND SX -1THEN EX=J-1 GOSUB@TEMPLATEVAR2 SX=-1 EX=-1 NEXT RETURN @TEMPLATEVAR2 VN$=MID$(R$,SX,EX-SX+1) FOR K=0TO 255 IF VARN$[K]==VN$THEN R$=MID$(R$,0,(SX-1 =0)*(SX-1))+VAR$[K]+MID$(R$,EX+2,256) NEXT RETURN @TEMPLATEVARSET LINPUT"VARNAME?(RETURN→RT)";VN$ IF VN$=="RT"THEN GOTO @TEMPLATECOM LINPUT"VALUE?";VL$ V=V+1 VARN$[V]=VN$ VAR$[V]=VL$ GOTO @TEMPLATEVARSET @TEMPLATEP RESTORE LBL$ FOR I=0TO 1 READ R$ IF R$!="END"THEN I=0GOSUB@TEMPLATEVAR ?R$ NEXT RESTORE LBL$ GOTO@TEMPLATECOM @C_HTN GOSUB@WINCLOSE TALK "ウワアアアトシ゛ルナアアア RETURN @S_HTN WINCLS=1 WINX2=128 WINY2=128 WINTTL$="Hello,[[OTYAX]]" HTN_F=0 HTN_X=0 WINMLT[TSK]=HTN_I HTN_I=(HTN_I+1)%10 RETURN @WIN_HTN I=WINMLT[TSK] WINSX=HTN_X[I] WINSY=0 WINSC=1 WINSTR$="Hello,World!!"*!HTN_F[I]+"hatenahageta"*HTN_F[I] GOSUB @WINSTRPUT HTN_X[I]=(HTN_X[I]+1)%128 WINBX=8 WINBY=8 WINBSTR$="hatena" GOSUB @WINBTN IF WINBTNF THEN HTN_F[I]=1 WINEXE$="HTN" GOSUB @WINEXE RETURN @C_HTNP BF=HTNP_BF GOSUB@WINBUFFC GOSUB @WINCLOSE RETURN @S_HTNP WINX2=130 WINY2=107+8 WINCLS=1 GOSUB @WINBUFF IF !BF THEN RETURN HTNP_BF=BF HTNP_C=0 HTNP_P=0 BFC=15 GOSUB @WINBUFFGCLS WINTTL$="HNPAINT" RETURN @WIN_HTNP7 IF CLICK3 THEN GCLS HTNP_CL RETURN @WIN_HTNP6 IF CLICK THEN HTNP_X=MOUSEX-WFX HTNP_Y=MOUSEY-WFY F=0 IF CLICK2 THEN GOSUB@WINBUFFP2 GCIRCLE HTNP_X+WFX,HTNP_Y+WFY,MOUSEX-HTNP_X-WFX,HTNP_CL IF F THEN GOSUB@WINBUFFP IF CLICK3 THEN GCIRCLE HTNP_X,HTNP_Y,MOUSEX-HTNP_X-WFX,HTNP_CL RETURN @WIN_HTNP5 IF CLICK THEN HTNP_X=MOUSEX-WFX HTNP_Y=MOUSEY-WFY F=0IF CLICK2 THEN GOSUB@WINBUFFP2 GFILL HTNP_X+WFX,HTNP_Y+WFY,MOUSEX,MOUSEY,HTNP_C+HTNP_P*16 IF F THEN GOSUB@WINBUFFP IF CLICK3 THEN GFILL HTNP_X,HTNP_Y,MOUSEX-WFX,MOUSEY-WFY,HTNP_C+HTNP_P*16 RETURN @WIN_HTNP4 IF CLICK THEN HTNP_X=MOUSEX-WFX HTNP_Y=MOUSEY-WFY F=0IF CLICK2 THEN GOSUB@WINBUFFP2 GBOX HTNP_X+WFX,HTNP_Y+WFY,MOUSEX,MOUSEY,HTNP_C+HTNP_P*16 IF F THEN GOSUB@WINBUFFP IF CLICK3 THEN GBOX HTNP_X,HTNP_Y,MOUSEX-WFX,MOUSEY-WFY,HTNP_C+HTNP_P*16 RETURN @WIN_HTNP3 IF CLICK3 THEN GPAINT MOUSEX-WFX,MOUSEY-WFY,HTNP_CL RETURN @WIN_HTNP2 IF CLICK THEN HTNP_X=MOUSEX-WFX HTNP_Y=MOUSEY-WFY F=0IF CLICK2 THEN GOSUB@WINBUFFP2 GLINE HTNP_X+WFX,HTNP_Y+WFY,MOUSEX,MOUSEY,HTNP_C+HTNP_P*16 IF F THEN GOSUB@WINBUFFP IF CLICK3 THEN GLINE HTNP_X,HTNP_Y,MOUSEX-WFX,MOUSEY-WFY,HTNP_C+HTNP_P*16 RETURN @WIN_HTNP1 IF CLICK THEN HTNP_X=MOUSEX-WFX HTNP_Y=MOUSEY-WFY FOR I=1TO CLICK2==1 GLINE HTNP_X,HTNP_Y,MOUSEX-WFX,MOUSEY-WFY,HTNP_C+HTNP_P*16 NEXT IF CLICK2 THEN HTNP_X=MOUSEX-WFX HTNP_Y=MOUSEY-WFY RETURN @WIN_HTNP BF=HTNP_BF HTNP_CL=HTNP_C+HTNP_P*16 GCOPY BF,0,0,120,88,WFX,WFY,1 GOSUB@WINBUFFP F=0 IF MOUSEX =WFX AND MOUSEX =WFX+120 THEN F=1 IF F==1AND MOUSEY =WFY AND MOUSEY =WFY+88THEN F=2 IF F!=2 THEN @HTNP_S ON HTNP_M GOSUB @WIN_HTNP1,@WIN_HTNP2,@WIN_HTNP3,@WIN_HTNP4,@WIN_HTNP5,@WIN_HTNP6,@WIN_HTNP7 @HTNP_S GOSUB@WINBUFFP2 FOR I=0TO 15 GFILL WFX+I*8,WFY+88,WFX+I*8+8,WFY+96,I+16*HTNP_P NEXT GBOX WFX-1,WFY-1,WFX+120,WFY+88,14 GBOX WFX+HTNP_C*8,WFY+88,WFX+HTNP_C*8+8,WFY+96,14 F=0 IF MOUSEX =WFX AND MOUSEX =WFX2 THEN F=1 IF F==1AND MOUSEY =WFY+88AND MOUSEY =WFY+96 THEN F=2 IF F==2AND CLICK THEN HTNP_C=0OR(MOUSEX-WFX)/8 WINSTR$="0123456789ABCDEF" WINSX=0 WINSY=97 WINSC=1 GOSUB @WINSTRPUT F=0 IF MOUSEX =WFX AND MOUSEX =WFX2 THEN F=1 IF F==1AND MOUSEY =WFY+96AND MOUSEY =WFY+104THEN F=2 IF F==2AND CLICK THEN HTNP_P=0OR(MOUSEX-WFX)/8 GBOX WFX+HTNP_P*8,WFY+96,WFX+HTNP_P*8+8,WFY+104,14 WINBX=120 WINBY=0 WINBSTR$="→" GOSUB @WINBTN F=0 IF WINBTNF==1THEN HTNP_PL=!HTNP_PL IF HTNP_PL==1THEN @HTNP_M RETURN @HTNP_M WINMX=128 WINMX2=128+64 WINMY=8 WINMK=HTNP_MK WINMKS=HTNP_MKS WINMMAX=6 WINM$[0]="PSET WINM$[1]="LINE WINM$[2]="PAINT WINM$[3]="BOX WINM$[4]="FILL WINM$[5]="CIRCLE WINM$[6]="GCLS GOSUB @WINMENU2 HTNP_MK=WINMK HTNP_MKS=WINMKS IF WINM!=-1AND CLICK AND HTNP_MK==0THEN HTNP_M=WINM RETURN @S_WWWW RETURN @WIN_WWWW WINEXE$="MAC IF WINACTV THEN GOSUB @WINEXE RETURN @S_HAHAHA HAHAHAL$="CコCヤCツEメAハAハAR8ハDコDヤDツFメGハGハGR4ハGハGハG#ハAコAヤAツG#メG2ハB2ハC1ハ HAHAHAX=0 WINY2=74 WINTTL$="コヤツメ RETURN @WIN_HAHAHA IF BGMCHK(2)==0THEN @WIN_HAHAHAS GPUTCHR WFX,WFY,"BGF",ASC(HEHEHE$),1,8 RETURN @WIN_HAHAHAS IF HAHAHAX =LEN(HAHAHAL$) THEN HAHAHAX=0 HAHAHAM$="" J=HAHAHAX D=0 FOR I=J TO LEN(HAHAHAL$)-1 M$=MID$(HAHAHAL$,I,1) IF ASC(M$) =ASC("ヲ") AND ASC(M$) =ASC("ン")THEN I=999 HEHEHE$=M$ ELSE HAHAHAM$=HAHAHAM$+M$ NEXT HAHAHAX=HAHAHAX+LEN(HAHAHAM$)+1 BGMSET 128,HAHAHAM$ BGMPLAY 2,128 RETURN @S_POKOPOKO WINX2=170 WINTTL$="POKOPOKO IF POKOF==0THEN DIM POKOE[5] POKOTM=1024 POKOTTL=1 RETURN TTLロシ゛ック @TTL_POKOPOKO WINSX=0WINSY=0WINSC=1 WINSTR$="ЖPOKOPOKOЁ GOSUB @WINSTRPUT WINSX=0WINSY=8WINSC=1 WINSTR$="SCORE Ж+10,И+20,г-10 GOSUB @WINSTRPUT WINSX=0WINSY=16WINSC=1 WINSTR$="TIME Р+10 GOSUB @WINSTRPUT WINSX=0WINSY=24 WINSTR$="CLICK TO START" WINSC=RND(16) GOSUB @WINSTRPUT IF MOUSEX =WFX AND MOUSEX =WFX2 AND MOUSEY =WFY AND MOUSEY =WFY2 AND CLICK THEN POKOTTL=0 RETURN @WIN_POKOPOKO IF POKOTTL THEN @TTL_POKOPOKO 'アナ FOR I=0TO 4 GCIRCLE WFX+8+16+I*32,WFY+16+16,16,9 NEXT WINSX=0WINSY=0WINSC=1WINSTR$="SCORE "+STR$(POKOS)+"0TIME "+STR$(POKOT)GOSUB @WINSTRPUT IF POKOE THEN WINSX=0WINSY=8WINSC=1WINSTR$="TIME UP нCLICK TO RESTART"GOSUB @WINSTRPUT IF POKOE THEN IF CLICKR AND WINACTV THEN POKOE=0POKOS=0POKOT=0 ELSE RETURN 'IFノラレツ・・・ シ゛ツニキタナイ FOR I=0TO 4 IF POKOE[I]==0AND RND(100)==0THEN POKOE[I]=1 POKOT[I]=POKOT+10 R=RND(200) IF POKOE[I]==0AND R==1THEN POKOE[I]=2 POKOT[I]=POKOT+10 IF POKOE[I]==0AND R==2THEN POKOE[I]=4 POKOT[I]=POKOT+10 IF POKOE[I]==0AND R==0THEN POKOE[I]=3 POKOT[I]=POKOT+10 IF POKOE[I]==1THEN GPUTCHR WFX+8+32*I+8,WFY+16,"BGF",ASC("Ж"),1,4 IF POKOE[I]==2THEN GPUTCHR WFX+8+32*I+8,WFY+16,"BGF",ASC("И"),1,4 IF POKOE[I]==3THEN GPUTCHR WFX+8+32*I+8,WFY+16,"BGF",ASC("г"),1,4 IF POKOE[I]==4THEN GPUTCHR WFX+8+32*I+8,WFY+16,"BGF",ASC("Р"),1,4 F=0 IF MOUSEX =WFX+16+32*I AND MOUSEX =WFX+48+32*I THEN F=1 IF F==1AND MOUSEY =WFY+16 AND MOUSEY =WFY+48 THEN F=2 IF F==2AND CLICK AND POKOE[I]==1THEN BEEP 3 POKOE[I]=0 POKOS=POKOS+1 IF F==2AND CLICK AND POKOE[I]==2THEN BEEP 5 POKOE[I]=0 POKOS=POKOS+2 IF F==2AND CLICK AND POKOE[I]==4THEN BEEP 15 POKOE[I]=0 POKOT=POKOT-10 IF F==2AND CLICK AND POKOE[I]==3THEN BEEP 14 POKOE[I]=0 POKOS=POKOS-1 IF POKOE[I]==3AND POKOT POKOT[I] THEN POKOE[I]=0 IF POKOE[I]==2AND POKOT POKOT[I] THEN POKOE[I]=0 IF POKOE[I]==1AND POKOT POKOT[I] THEN POKOE[I]=0 IF POKOE[I]==0AND POKOT POKOT[I] THEN POKOE[I]=0 NEXT IF POKOT 0THEN POKOT=0 POKOT=POKOT+1 IF POKOT =POKOTM THEN POKOE=1 RETURN @S_SCRBAR K=32 DIM SCRBART$[K] SCRBART$[0]="アホ"SCRBART$[1]="タ゛ナ"SCRBART$[2]="テ゛ス"SCRBART$[3]="マア"SCRBART$[4]="コケコッコ" SCRBART$[5]="ホレホレ"SCRBART$[6]="ト゛ス"SCRBART$[7]="コンニチハ"SCRBART$[8]="フ゜チコン"SCRBART$[9]="ホ゛-ン" SCRBART$[10]="フフフ"SCRBART$[11]="ニヤリ"SCRBART$[12]="ケ゛ロ"SCRBART$[13]="ネコ"SCRBART$[14]="セイコウ" SCRBART$[15]="シッハ゜イ"SCRBART$[16]="セイミツ"SCRBART$[17]="キク゛"SCRBART$[18]="ケケケ"SCRBART$[19]="コショウ" SCRBART$[20]="ウソ"SCRBART$[21]="テ゛ス"SCRBART$[22]="YOU!"SCRBART$[23]="ムムム"SCRBART$[24]="OTYAX" SCRBART$[25]="フヘフヘ"SCRBART$[26]="ワン"SCRBART$[27]="ワイン"SCRBART$[28]="アア"SCRBART$[29]="テレレレレ" SCRBART$[30]="ミカン"SCRBART$[31]="セフ" SCRBAR$="ナ-カ゛カ゛カ゛スコ゛クナカ゛イシコシユフヤヤヤテコホヤロ ヒネホ" DIM SCRBAR$[24] FOR I=0TO 23 FOR J=0TO LEN(SCRBAR$)-1 ' SCRBAR$[I]=SCRBAR$[I]+CHR$(RND(62)+161) SCRBAR$[I]=SCRBAR$[I]+SCRBART$[RND(K)]'CHR$(RND(62)+161) J=LEN(SCRBAR$[I]) NEXT NEXT RETURN @WIN_SCRBAR WINBX=62-8 WINBY=0 WINBY2=52-8 WINBM=(24-5)*8 WINBX2=SCRBAR_X2 GOSUB @WINSCRBARY SCRBAR_X2=WINBX2 WINBX=0 WINBX2=62-8 WINBY=52-8 WINBM=LEN(SCRBAR$)*8-56 WINBY2=SCRBAR_Y2 GOSUB @WINSCRBARX SCRBAR_Y2=WINBY2 FOR I=0TO 4 WINSX=0 WINSY=I*8 WINSC=1 WINSTR$=MID$(SCRBAR$[I+SCRBAR_X2/8],WINBY2/8,7) GOSUB @WINSTRPUT NEXT RETURN @COM_HTN COMKF=0 COMP$="AHO"GOSUB COMPRT$ RETURN @S_TSKF WINY2=96 WINX2=64+16 RETURN @WIN_TSKF IF RND(1000)THEN GOSUB@TSKMAX WTSKFTI=TSKM FOR I=WINTSKFYY TO WTSKFTI-1 WINSX=0WINSY=(I-(WINTSKFYY))*8WINSC=1 WINSTR$=MID$(WINNAME$[I]+" "+STR$(TSKF[I]),WINTSKFXX,8) GOSUB @WINSTRPUT NEXT WINBX=64-10+16 WINBY=0 WINBY2=86-10 WINBX2=WINTSKFY WINBM=TSKMAX*8 GOSUB @WINSCRBARY WINTSKFY=WINBX2 WINTSKFYY=0OR WINBX2/8 WINBX=0 WINBX2=64-10+16 WINBY=84-8 WINBM=15*8 WINBY2=WINTSKFX GOSUB @WINSCRBARX WINTSKFX=WINBY2 WINTSKFXX=0OR WINTSKFX/8 RETURN @S_BG WINY2=43 WINTTL$="BG" RETURN @WIN_BG GFILL WFX,WFY,WFX2,WFY2,WIN_BG_CL WINN=WIN_BG_CL WINNX=0 WINNY=0 WINNY2=32 WINNX2=32 WINNM=255 ' WINNSP=0.5 GOSUB @WINNUMUPDWN WIN_BG_CL=WINN WINBX=33 WINBY=0 WINBSTR$="OK" GOSUB @WINBTN IF WINBTNF THEN OTWBGCL=WINN RETURN @S_HELP WINCLS=1 WINTTL$="HELP" WINX2=90 WINY2=86 RETURN @WIN_HELP ON HELP_M GOTO @WIN_HELP1,@WIN_HELP2,@WIN_HELP3 @WIN_HELP1 WINLBLX=0 WINLBLY=0 WINLBL$="アフ゜リノキト゛ウ" GOSUB@WINLNKLBL IF WINLBLF THEN HELP_M=1 GOSUB@DIC_HELP1 WINLBLX=0 WINLBLY=8 WINLBL$="システムエラ-" GOSUB@WINLNKLBL IF WINLBLF THEN HELP_M=2 GOSUB@DIC_HELP2 RETURN @WIN_HELP3 WINBX2=WIN_HELP_X WINBM=8WINBX2=WIN_HELP_X2 GOSUB @SCR_HELP WIN_HELP_X2=WINBX2 WINBM=68 WINBY2=WIN_HELP_Y2 GOSUB@SCR_HELPX WIN_HELP_Y2=WINBY2 WINLBLX=0 WINLBLY=0 WINLBL$="TOP" GOSUB@WINLNKLBL IF WINLBLF THEN HELP_M=0 FOR I=0TO 6 WINSX=0 WINSY=I*8+8 WINSC=1 WINSTR$=MID$(HELP_DIC$[I+WIN_HELP_X2/4],WINBY2/4,10) GOSUB@WINSTRPUT NEXT RETURN @WIN_HELP2 WINLBLX=0 WINLBLY=0 WINLBL$="TOP" GOSUB@WINLNKLBL IF WINLBLF THEN HELP_M=0 WINBY2=WIN_HELP_Y2 WINBM=60 GOSUB @SCR_HELPX WIN_HELP_Y2=WINBY2 FOR I=0TO 3 WINSX=0 WINSY=I*8+8 WINSC=1 WINSTR$=MID$(HELP_DIC$[I],WINBY2/4,12) GOSUB@WINSTRPUT NEXT RETURN @DIC_HELP1 HELP_DIC$[0]="RUNノテキストホ゛ックスニアフ゜リメイヲ HELP_DIC$[1]="ニュウリョクシテ[RUN]ヲクリックスレハ゛ HELP_DIC$[2]="キト゛ウシマス。 HELP_DIC$[3]="*ソンサ゛イシナイハ゛アイハエラ-カ゛テ゛マス。 RETURN @DIC_HELP2 HELP_DIC$[0]="SYSTEMERROR HELP_DIC$[1]="Out of buffer HELP_DIC$[2]="ハ゛ッファフ゛ソクテ゛ス。 HELP_DIC$[3]="" HELP_DIC$[4]="ハ゛ッファハサイタ゛イ2ツマテ゛テ゛ HELP_DIC$[5]="アフ゜リカ゛イシ゛ョウシュウリョウシタトキニモテ゛ル HELP_DIC$[6]="ハ゛アイモアリマス。 HELP_DIC$[7]="" HELP_DIC$[8]="ナオラナイハ゛アイハサイキト゛ウシテクタ゛サイ。 RETURN @SCR_HELPX WINBX=0 WINBX2=WINX2-WINDEGX2-WINDEGX WINBY=WINY2-WINDEGY-WINDEGY2-8 GOSUB @WINSCRBARX RETURN @SCR_HELP WINBX=WINX2-WINDEGX2-WINDEGX-8 WINBY=WINY'+WINDEGY WINBY2=WINY2-WINDEGY-WINDEGY2-8 GOSUB @WINSCRBARY RETURN @C_HELP WIN_HELP_Y2=0 WIN_HELP_X2=0 GOSUB@WINCLOSE RETURN 'MEMO ケンサクシテオキカエメント゛ウ ии VS ウ゛ワ゛ワ゛ワ゛ワ゛ゥ-ン ャヘ゛ンテ゛-フ゛ ホ゛ッカ゛カ゛キ゛ 'ййййййййййййййй йййййййййййййН---*---М= 'з з з к タケヤフ゛ 'зNOMAL- NORMAL з зキト゛ウシテイルタスクノカス゛ л??????? 'зDEGIN$- DESIGN$ з @TSKMAXТТТТТТ Сж СССУ 'з з зТТТТТТТТТТТТТТк лЁ ラフ゛レタ-カ゛ ヤフ゛ テ゛ ヤフ゛レタ- 'зシテキ hatema з зТТカンリョТТТТТТТТл и )ССУ _ ? 'з カンリョ- з зТТТТТТТТТТТТТТ л !!ССй _/ж ж '┥ййййййййййййййз ┥йййййййййййййййк жжжж жж @EOF лワハハハハハハ/ '[EOF] Е Е Е Е Е ─┬─│ │┌─ END ┌─┐С ┌ │ ├─┤├─ │ │С ├ILE │ │ │└─ └─┘ йййййй з и кサ-ト゛ハ゜-ティ-ノアフ゜リテ゛ス и ┬ ┬ зл | | з з ─ и ノッタ ヨッタ ウィ- ヨット テ゛ フナヨイ и з HATENAHATENA з и HATENAHATENA |_й__йй| HATENAHATENA '┸жжжжжжжжжжжжжжжжжжжжжжжжж┥ 'зMOUSE SCALE for OTYAX и 'з и 'з MSS by hatenaи '┰ййййййййййййййййййййййййй┝ @S_MSS WINCLS=1 WIN_MODE=1 WINX2=177 WINY2=32 SPREAD(0),MSS_X,MSS_Y,MSS_A,MSS_S,MSS_C MSS_S=FLOOR(MSS_S) WINTTL$="Mouse Scale - "+STR$(MSS_S)+"%" RETURN @WIN_MSS WIN_MODE=1 MSS_S=FLOOR(MSS_S) WINTTL$="Mouse Scale - "+STR$(MSS_S)+"%" WINTTL$[TSK]=WINTTL$ GOSUB@WINDOW IF WINIDFLG THEN RETURN WINSX=32 WINSY=1 WINSC=1 WINSTR$="マウスノオオキサヲカエマス。" GOSUB@WINSTRPUT WINBX=0 WINBY=10 WINBSTR$="60%" GOSUB@WINBTN FOR I=1 TO !!(WINBTNF) MSS_S=60 SPSCALE 0,MSS_S,0 NEXT WINBX=29 WINBY=10 WINBSTR$="SMALL" GOSUB@WINBTN FOR I=1 TO !!(WINBTNF) MSS_S=MSS_S-20 MSS_S=FLOOR(MSS_S) IF MSS_S 60 THEN MSS_S=60 SPSCALE 0,MSS_S,0 NEXT WINBX=74 WINBY=10 WINBSTR$="100%" GOSUB@WINBTN FOR I=1 TO !!(WINBTNF) MSS_S=100 SPSCALE 0,MSS_S,0 NEXT WINBX=111 WINBY=10 WINBSTR$="BIG" GOSUB@WINBTN FOR I=1 TO !!(WINBTNF) MSS_S=MSS_S+20 MSS_S=FLOOR(MSS_S) IF MSS_S 200 THEN MSS_S=200 SPSCALE 0,MSS_S,0 NEXT WINBX=140 WINBY=10 WINBSTR$="200%" GOSUB@WINBTN FOR I=1 TO !!(WINBTNF) MSS_S=200 SPSCALE 0,MSS_S,0 NEXT RETURN @C_MSS GOSUB@WINCLOSE RETURN '┸жжжжжжжжжжжжжжжжжжжжжжжжж┥ 'зネス゛ミクシ゛ョケ゛-ム и 'з и 'з NZM by hatenaи '┰ййййййййййййййййййййййййй┝ @S_NZM WINCLS=1 WINMODE=0 WINX2=48 WINY2=58 WINTTL$="ネス゛ミ" BF=0 GOSUB @WINBUFF IF BF==0 THEN GOSUB@SYS_ERR_BUFF RETURN NZM_BF=BF BFC=0 GOSUB@WINBUFFGCLS RETURN @WIN_NZM WINBX=9 WINBY=36 WINBSTR$="BOM" GOSUB@WINBTN NZM_F=!!WINBTNF GCOPY NZM_BF,0,0,46,36,WFX,WFY,1 BF=NZM_BF GOSUB @WINBUFFP GPSET RND(47),RND(36),13 IF NZM_F THEN GFILL 0,0,46,36,0 GOSUB @WINBUFFP2 RETURN @C_NZM BF=NZM_BF GOSUB@WINBUFFC GOSUB@WINCLOSE RETURN '┸жжжжжжжжжжжжжжжжжжжжжжжжж┥ 'зWindowMoveMode и 'з и 'з WMM by hatenaи '┰ййййййййййййййййййййййййй┝ @S_WMM WINCLS=1 WINMODE=0 WINX2=100 WINY2=68 WINTTL$="WindowMM" RETURN @WIN_WMM WINSX=2 WINSY=3 WINSC=1 WINSTR$=" イト゛ウモ-ト゛ " GOSUB@WINSTRPUT WINSX=82 WINSY=3 WINSC=11 WINSTR$=STR$(WINMOVMODE) GOSUB@WINSTRPUT WINSX=14 WINSY=22 WINSC=1 WINSTR$="スヘ゛テイト゛ウ" GOSUB@WINSTRPUT WINSX=14 WINSY=34 WINSC=1 WINSTR$="クロワクノミイト゛ウ" GOSUB@WINSTRPUT WINSX=14 WINSY=46 WINSC=13 WINSTR$="キモクイト゛ウ" GOSUB@WINSTRPUT WINBX=2 WINBY=20 WINBSTR$="0" GOSUB@WINBTN IF WINBTNF THEN WINMOVMODE=0 WINBX=2 WINBY=32 WINBSTR$="1" GOSUB@WINBTN IF WINBTNF THEN WINMOVMODE=1 WINBX=2 WINBY=44 WINBSTR$="2" GOSUB@WINBTN IF WINBTNF THEN WINMOVMODE=2 RETURN @C_WMM GOSUB@WINCLOSE RETURN '┸жжжжжжжжжжжжжжжжжжжжжжжжж┥ 'зTask Manager и 'з и 'з TMNG by hatenaи '┰ййййййййййййййййййййййййй┝ @S_TMNG WINCLS=0 WIN_MODE=0 WINX2=191 WINTTL$="Taskmgr" TMNG_SC=0 TMNG_BXC=1 RETURN @WIN_TMNG TMNG_T=0 TMNG_SL=64 TMNG_L=7 FOR TMNG_I=0 TO TSKMAX-1 TMNG_T=TMNG_T+!!(WINFLG[TMNG_I]!=0) NEXT FOR TMNG_CI=1 TO TMNG_BXC WINSX=2 WINSY=2 WINSC=1 WINSTR$="Target " GOSUB@WINSTRPUT WINSX=58 WINSY=2 WINSC=11 WINSTR$=STR$(TMNG_SC) GOSUB@WINSTRPUT WINSX=2 WINSY=11 WINSC=11 WINSTR$=WINTTL$[TMNG_SC] GOSUB@WINSTRPUT WINSX=2 WINSY=20 WINSC=1 WINSTR$="Name " GOSUB@WINSTRPUT WINSX=42 WINSY=20 WINSC=11 WINSTR$=WINNAME$[TMNG_SC] GOSUB@WINSTRPUT WINBX=2 WINBY=28 WINBSTR$="Compact" GOSUB@WINBTN IF WINBTNF THEN TMNG_BXC=0 WINBX=2 WINBY=40 WINBSTR$="RUN.OTW" GOSUB@WINBTN IF WINBTNF THEN WINEXE$="RUN" GOSUB@WINEXE WINBX=2 WINBY=52 WINBSTR$="Close" GOSUB@WINBTN IF WINBTNF THEN TSK=TMNG_SC GOSUB@WINCLOSEGT NEXT FOR TMNG_CI=1 TO !(TMNG_BXC) WINBX=2 WINBY=1 WINBSTR$="Resize" GOSUB@WINBTN IF WINBTNF THEN TMNG_BXC=1 TMNG_SL=13 NEXT FOR TMNG_I=0 TO TMNG_T-1 WINBX=2 WINBY=TMNG_I*12+TMNG_SL WINBSTR$=STR$(TMNG_I) GOSUB@WINBTN IF WINBTNF THEN TMNG_SC=TMNG_I WINSX=14 WINSY=TMNG_I*12+TMNG_SL+2 WINSC=1 IF LEN(STR$(TMNG_I))==2 THEN WINSX=WINSX+8 WINSTR$=WINTTL$[TMNG_I] IF LEN(WINTTL$[TMNG_I]) TMNG_L THEN TMNG_L=LEN(WINTTL$[TMNG_I]) GOSUB@WINSTRPUT NEXT WINY2=TMNG_SL+12+TMNG_T*12 WINX2=16+TMNG_L*8 RETURN @C_TMNG GOSUB@WINCLOSE RETURN '┸жжжжжжжжжжжжжжжжжжжжжжжжж┥ 'зBack Ground Music Player и 'з и 'з BGMP by hatena и '┰ййййййййййййййййййййййййй┝ @S_BGMP WIMCLS=1 WINMODE=0 WINX2=110 WINY2=33 WINTTL$="BGMPlayer" RETURN @WIN_BGMP IF BGMP_N 0 THEN BGMP_N=29 IF BGMP_N 29 THEN BGMP_N=0 WINSX=2 WINSY=2 WINSC=1 WINSTR$="BGM Number " GOSUB@WINSTRPUT WINSX=90 WINSY=2 WINSC=11 WINSTR$=STR$(BGMP_N) GOSUB@WINSTRPUT WINBX=2 WINBY=10 WINBSTR$="♪" GOSUB@WINBTN IF WINBTNF THEN BGMPLAY 7,BGMP_N WINBX=15 WINBY=10 WINBSTR$="м" GOSUB@WINBTN IF WINBTNF THEN BGMSTOP 7 WINBX=28 WINBY=10 WINBSTR$="+" GOSUB@WINBTN IF WINBTNF THEN BGMP_N=BGMP_N+1 WINBX=41 WINBY=10 WINBSTR$="-" GOSUB@WINBTN IF WINBTNF THEN BGMP_N=BGMP_N-1 RETURN @C_BGMP GOSUB@WINCLOSE RETURN '┸жжжжжжжжжжжжжжжжжжжжжжжжж┥ 'зControl Pannel и 'з и 'з CP by hatenaи '┰ййййййййййййййййййййййййй┝ @S_CP WINCLS=1 WINMODE=0 WINX2=191 WINY2=144 WINTTL$="コントロ-ルハ゜ネル" RETURN @WIN_CP WINBX=0 WINBY=8 WINBSTR$="マウスノオオキサ" GOSUB@WINBTN IF WINBTNF THEN WINEXE$="MSS" GOSUB@WINEXE WINBX=69 WINBY=8 WINBSTR$="ウィント゛ウイト゛ウモ-ト゛" GOSUB@WINBTN IF WINBTNF THEN WINEXE$="WMM" GOSUB@WINEXE RETURN @C_CP GOSUB@WINCLOSE RETURN
https://w.atwiki.jp/azounoman/pages/17.html
1413 GIGA Universe Cup 問題 http //acm.pku.edu.cn/JudgeOnline/problem?id=1413 解答例 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); double p[] = new double[9]; for(int i=0;i =8;i++) p[i] = prob(i); int n = sc.nextInt(); sc.nextLine(); for(int i=0;i n;i++){ String line = sc.nextLine(); int marked = (line.indexOf( * )-5)/5; int table[][] = new int[4][4]; int q[][] = new int[2][2]; int qcnt = 0; for(int j=0;j 4;j++){ line = sc.nextLine(); for(int k=j+1;k 4;k++){ char ca = line.charAt(6+5*k); char cb = line.charAt(8+5*k); if(ca== _ cb== _ ){ q[qcnt][0] = j; q[qcnt][1] = k; qcnt++; } else{ table[j][k] = ca- 0 ; table[k][j] = cb- 0 ; } } } double ret = 0.0; for(int j=0;j =8;j++){ table[q[0][0]][q[0][1]] = j; for(int k=0;k =8;k++){ table[q[0][1]][q[0][0]] = k; for(int l=0;l =8;l++){ table[q[1][0]][q[1][1]] = l; for(int m=0;m =8;m++){ table[q[1][1]][q[1][0]] = m; Solver sol = new Solver(table); ret += p[j]*p[k]*p[l]*p[m]*sol.win(marked); } } } } System.out.printf("%.7f\r\n",ret); } } private static double prob(int p){ return (fact(8)/(fact(p)*fact(8-p)))*(exp3(8-p)/65536.0); } private static double fact(int n){ int ret = 1; while(n 1){ ret *= n; n--; } return (double)ret; } private static double exp3(int n){ int ret = 1; while(n 0){ ret *= 3; n--; } return (double)ret; } } class Solver{ int[][] table; boolean locmask[]; int locmaskc; boolean mask[]; int maskc; int point[]; int pmax; int pmaxcnt; int rest; Solver(int[][] table) { this.table = table; locmask = new boolean[4]; mask = new boolean[4]; point = new int[4]; } public double win(int n){ for(int i=0;i 4;i++) locmask[i] = true; locmaskc = 4; rest = 2; while(true){ // load previous local mask to grobal mask for(int i=0;i 4;i++) mask[i] = locmask[i]; maskc = locmaskc; // PHASE A,D calcpointA(); double ret = calcret(n); if(ret =0.0) return ret; //PHASE B,E calcpointB(); ret = calcret(n); if(ret =0.0) return ret; //PHASE C,F calcpointC(); ret = calcret(n); if(ret =0.0) return ret; if(locmaskc==maskc) return (double)rest/(double)maskc; } } private void calcpmax() { pmax = Integer.MIN_VALUE; pmaxcnt = 0; for(int i=0;i 4;i++){ if(point[i] pmax) pmax = point[i]; } for(int i=0;i 4;i++){ if(point[i]==pmax) pmaxcnt++; } } private void calcpointC() { for(int i=0;i 4;i++) point[i] = Integer.MIN_VALUE; for(int i=0;i 4;i++){ if(!locmask[i]) continue; point[i] = 0; for(int j=0;j 4;j++){ if(i==j||!mask[j]) continue; point[i] += table[i][j]; } } } private void calcpointB() { for(int i=0;i 4;i++) point[i] = Integer.MIN_VALUE; for(int i=0;i 4;i++){ if(!locmask[i]) continue; point[i] = 0; for(int j=0;j 4;j++){ if(i==j||!mask[j]) continue; point[i] += table[i][j]-table[j][i]; } } } private void calcpointA() { for(int i=0;i 4;i++) point[i] = Integer.MIN_VALUE; for(int i=0;i 4;i++){ if(!locmask[i]) continue; point[i] = 0; for(int j=0;j 4;j++){ if(i==j||!mask[j]) continue; if(table[i][j] table[j][i]) point[i] += 3; else if(table[i][j]==table[j][i]) point[i] += 1; } } } private double calcret(int n){ calcpmax(); if(rest==2){ if(pmaxcnt==1){ if(point[n]==pmax) return 1.0; else{ rest = 1; for(int i=0;i 4;i++){ if(point[i]==pmax){ locmask[i] = false; point[i] = Integer.MIN_VALUE; } } return calcret(n); } } else if(pmaxcnt==2){ if(point[n]==pmax) return 1.0; else return 0.0; } else{ if(point[n]!=pmax) return 0.0; locmaskc = 0; for(int i=0;i 4;i++){ locmask[i] = point[i]==pmax; if(locmask[i]) locmaskc++; } return -1.0; } } else{ if(pmaxcnt==1){ if(point[n]==pmax) return 1.0; else return 0.0; } else{ if(point[n]!=pmax) return 0.0; locmaskc = 0; for(int i=0;i 4;i++){ locmask[i] = point[i]==pmax; if(locmask[i]) locmaskc++; } return -1.0; } } } }
https://w.atwiki.jp/roomfuture01fhs/pages/24.html
Future01 / Future01 呼び名:マスター ロボ マスターロボ ポンコツ(寝落ち状態) スクラップ(寝落ち状態) 粗大ゴミ(寝落ち状態) 中の人 F,H,Sのチームマスター カラーリングが何かに似ているが、気のせいである(元は黒っぽかった) 主にRa、Gaを使っている射撃部隊(WBは任せろ!) でも、脳筋もいいなーと思い始めてたり Foも派手だしなーとかも思ってたり しかも、この頃はBrが良すぎてRaに戻れなくなってきた 中の人が最近出てくるようになった サポートパートナーが6人いる 「昔に比べて、チームがにぎわっているのはいいことだ!」
https://w.atwiki.jp/srcreading/pages/23.html
[一つ上 ] [編集] static フィールド namespaces ConurrentHashMap Symbol, Namespace で、生成されたNamespaceインスタンスを管理している namespacesにすでにあれば、それを返す 無ければインスタンスを作る namespacesにput インスタンスをreturn
https://w.atwiki.jp/comedian/pages/1889.html
U-turnをお気に入りに追加 リンク1 <U-turn> #blogsearch2 キャッシュ <U-turn> 使い方 サイト名 URL リンク2 <U-turn> #technorati 報道 <U-turn> 北海道U・Iターンフェア2022春(WEB合同企業説明会) - 経済部労働政策局産業人材課 - hokkaido.lg.jp アンジャッシュ渡部、「初対面で印象悪すぎ」と土田晃之が明かす(SmartFLASH) - Yahoo!ニュース - Yahoo!ニュース 右折レーンはいつでもUターンしていいの?【今さら聞けない交通ルール】 | clicccar.com - clicccar.com(クリッカー) 土田晃之「有吉弘行を3ヵ月でクビに...後にも先にも有吉を追い込んだのは”S”... - テレビ東京 緊急時でもないのに高速道路で堂々とUターン! この強引なおまわりさんは実在する!? 【交通取締情報】 - MotorFan[モーターファン] buntaro(R) Waraji Sandalsはただのサンダルではありません!! - PR TIMES 土田晃之がヒロミに暴露された「ボキャ天」時代のコンビ不仲ぶりが闇すぎる! (2020年1月10日) - エキサイトニュース ECのミカタ 企業HP 株式会社U-turn - ECのミカタ 土田晃之が起こした「Uターン事故」で「ボキャブラ」世代がザワザワ - アサジョ 欅坂メンバーが土田のためにU-turnのネタを再現! ファン「出来がすごい」と歓喜 - ZAKZAK 成分解析 <U-turn> U-turnの70%は果物で出来ています。U-turnの18%はハッタリで出来ています。U-turnの5%は媚びで出来ています。U-turnの3%は陰謀で出来ています。U-turnの2%は下心で出来ています。U-turnの2%は愛で出来ています。 ウィキペディア <U-turn> U-turn 掲示板 <U-turn> 名前(HN) カキコミ すべてのコメントを見る ページ先頭へ U-turn このページについて このページはU-turnのインターネット上の情報を集めたリンク集のようなものです。ブックマークしておけば、日々更新されるU-turnに関連する最新情報にアクセスすることができます。 情報収集はプログラムで行っているため、名前が同じであるが異なるカテゴリーの情報が掲載される場合があります。ご了承ください。 リンク先の内容を保証するものではありません。ご自身の責任でクリックしてください。
https://w.atwiki.jp/nigamushi/pages/43.html
MATRIXコマンド コマンド 構文 MAKE MATRIX MAKE MATRIX Matrix Number, Width, Height, XSegments, ZSegments DELETE MATRIX DELETE MATRIX Matrix Number PREPARE MATRIX TEXTURE PREPARE MATRIX TEXTURE Matrix Number, Image Number, Across, Down POSITION MATRIX POSITION MATRIX Matrix Number, X, Y, Z FILL MATRIX FILL MATRIX Matrix Number, Height, Tile Number RANDOMIZE MATRIX RANDOMIZE MATRIX Matrix Number, Maximum Height GHOST MATRIX ON GHOST MATRIX ON Matrix Number GHOST MATRIX OFF GHOST MATRIX OFF Matrix Number SET MATRIX WIREFRAME ON SET MATRIX WIREFRAME ON Matrix Number SET MATRIX WIREFRAME OFF SET MATRIX WIREFRAME OFF Matrix Number SET VECTOR3 TO MATRIX POSITION SET VECTOR3 TO MATRIX POSITION Vector, Matrix Number SET MATRIX TEXTURE SET MATRIX TEXTURE Matrix Number, Texture Mode, Mip Mode SET MATRIX SET MATRIX Matrix Number, Wire, Transparency, Cull, Filter, Light, Fog, Ambient SET MATRIX TRIM SET MATRIX TRIM Matrix Number, TrimX, TrimY SET MATRIX PRIORITY SET MATRIX PRIORITY Matrix Number, Priority Flag SHIFT MATRIX DOWN SHIFT MATRIX DOWN Matrix Number SHIFT MATRIX LEFT SHIFT MATRIX LEFT Matrix Number SHIFT MATRIX RIGHT SHIFT MATRIX RIGHT Matrix Number SHIFT MATRIX UP SHIFT MATRIX UP Matrix Number SET MATRIX HEIGHT SET MATRIX HEIGHT Matrix Number, TileX, TileZ, Height SET MATRIX NORMAL SET MATRIX NORMAL Matrix Number, TileX, TileZ, NX, NY, NZ SET MATRIX TILE SET MATRIX TILE Matrix Number, TileX, TileZ, Tile Number UPDATE MATRIX UPDATE MATRIX Matrix Number MATRIX EXIST Return Integer=MATRIX EXIST(Matrix Number MATRIX POSITION X Return Float=MATRIX POSITION X(Matrix Number) MATRIX POSITION Y Return Float=MATRIX POSITION Y(Matrix Number) MATRIX POSITION Z Return Float=MATRIX POSITION Z(Matrix Number) MATRIX TILE COUNT Return Integer=MATRIX TILE COUNT(Matrix Number) MATRIX TILES EXIST Return Integer=MATRIX TILES EXIST(Matrix Number) MATRIX WIREFRAME STATE Return Integer=MATRIX WIREFRAME STATE(Matrix Number) GET GROUND HEIGHT Return Float=GET GROUND HEIGHT(Matrix Number, X, Z) GET MATRIX HEIGHT Return Float=GET MATRIX HEIGHT(Matrix Number, TileX, TileZ)
https://w.atwiki.jp/mitsu_koh/pages/44.html
これは以前 Python 歴数ヶ月もない僕がコンテストでよく使うだろうと思われるコードをまとめたものです。 こういうまとめが欲しいなと思ったのですが見つけられませんでした。 調べながら書いているので間違っているところがあるかもしれません。 Python のバージョンは 2.6.5 です。3 以降とはけっこう違うところがあるので注意してください。 TODO 入出力 メモ化再帰 イテレーター おまじない #!/usr/bin/env python # coding utf-8 ? 演算子 1 if True else 0 # 1 配列 a[2][5] の宣言 a = [0 for i in xrange(2) for j in xrange(5)] スタック s = [] s.append(100) # push 100 s.pop() # pop and return 100 キュー q = [] q.append(100) # push 10 q.pop(0) # pop and return 100 プライオリティキュー from heapq import heapify,heappush,heappop pq = [] heapify(pq) # change to heap from list heappush(pq, 10) # push 10 heappop(pq) # pop and return 10 map d = dict() d = { a 0, b 1} d = dict(a=0, b=1) d = dict([[ a , 0], [ b , 1]]) len(d) # size d[ c ] = 2 # set key and value d.get( a , -1) # return d[ a ] if a in d else -1 d.pop( a , -1) # if d has key a , remove key a and return d[ a ] # if d don t have key a , return -1 d.clear() # clear a in d # check if d has key a a not in d # check if d don t have key a d.keys(), d.iterkeys() # return key list (iter an iterator over the keys) d.values(), d.itervalues() # return value list (iter an iterator over the values) d.items(), d.iteritems() # return (key, value) (iter an iterator over the items) set st = set() st = set([0, 1, 2, 3]) len(st) # size st.add(10) # insert 10 st.remove(10) # remove 10 (raises KeyError if not 10 in st) st.discard(10) # remove 10 (don t raise KeyError if 10 not in st) st.clear() # clear 10 in st # check if st has 10 10 not in st # check if st don t have 10 配列のソート import operator a = [] a.sort() a.sort(reverse=True) # reverse sort a.sort(cmp=lambda x, y -1 if x y else (0 if x == y else 1)) # sort with comparator a.sort(key=lambda x x) # sort with function which returns a key a.sort(key=operator.attrgetter( key )) # sort with function which returns the key 2分探索 from bisect import bisect_right, bisect_left a = [ 0, 1, 1, 2, 2, 2, 2, 3, 3, 3 ] bisect_left(a, 2) # 3 (lower_bound) bisect_left(a, 100) # 10 bisect_right(a, 2) # 7 (upper_bound) bisect_right(a, 100) # 10 bisect_right(a, 2) - bisect_left(a, 2) # 4 (a.count(2))
https://w.atwiki.jp/zikkenb5/pages/6.html
class Ie{ Pai[] haiPai=new Pai[13]; Pai tumo; //ツモ牌のセット void setTumo(Pai tumo){ this.tumo=tumo; } //チーのチェック ソートされていることが前提 public boolean checkChee(Pai p){ //字牌はチーできない if(p.getSyurui()==3){ return false; } int i; int j; for(i=0;i 12;i++){ if(p.getSyurui()==haiPai[i].getSyurui()){ if(p.getNumber()-2==haiPai[i].getNumber()){ for(j=i;(j 13) (p.getSyurui()==haiPai[j].getSyurui());j++){ if(p.getNumber()-1==haiPai[j].getNumber()){ return true; } } } if(p.getNumber()-1==haiPai[i].getNumber()){ for(j=i;(j 13) (p.getSyurui()==haiPai[j].getSyurui());j++){ if(p.getNumber()+1==haiPai[j].getNumber()){ return true; } } } if(p.getNumber()+1==haiPai[i].getNumber()){ for(j=i;(j 13) (p.getSyurui()==haiPai[j].getSyurui());j++){ if(p.getNumber()+2==haiPai[j].getNumber()){ return true; } } } } } return false; } //ポンのチェック ソートされてることが前提 boolean checkPon(Pai p){ int i; for(i=0;i 12;i++){ if(p.getSyurui()==haiPai[i].getSyurui() p.getNumber()==haiPai[i].getNumber()){ if(p.getSyurui()==haiPai[i+1].getSyurui() p.getNumber()==haiPai[i+1].getNumber()){ return true; } } } return false; } //牌のソート public void sort(){ int i,j,k,min; Pai p; for(i=0;i 13;i++){ k=i; min=haiPai[i].getToshiNumber(); for(j=i+1;j 13;j++){ if(haiPai[j].getToshiNumber() min){ min=haiPai[j].getToshiNumber(); k=j; } } p=haiPai[i]; haiPai[i]=haiPai[k]; haiPai[k]=p; } } //牌の表示 !暫定! public String toString(){ int i; String hyozi=""; for(i=0;i 13;i++){ hyozi+=haiPai[i].checkHyozi(); } return hyozi; } }