Randomize:screen 0,600,550:font "メイリオ",18 kb = 90,88,37,38,39,40,1:kn = "決定","キャンセル","上","右","左","下","マウス" //ボタンの名前 dim k,length(kb):dim pk,length(kb) //キー入力 cr = 0,255,100,100,210,180 //色 cb = 0,100,255,100,40 ,170 cg = 0,100,100,255,210,0 colorsuu = 4:boxt = 50:boxl = 50:puyowidth = 6:puyoheight = 15:settimer = 30 pmx = boxl-18+2:pmy = boxt+2-4*36 //画面の位置からツモマップ固定 jikux = 0:jikux2 = 0:takasa = boxt:kaitenx = 0:cflg = 0 //ツモ読み取り変数 dim j1,200:mapsize = puyoheight*puyowidth //サイズと握りツモの規定 dim tumolist,512:repeat length(tumolist):tumolist(cnt)=1+rnd(colorsuu):loop:thead = 0 dim puyomap,mapsize dim pitimap,mapsize,3 //位置リスト(2個しか使わない) dim ersemap,mapsize //消えるぷよリスト dim puyoh,6 //高さ保存 repeat color 255,255,255:boxf gosub *setwaku if(sousa==0){ if(cflg=1){cflg=0:gosub *tmcall} if(cnt\5==0){takasa++} if(k(1)==1 && pk(1)==0){kaitenx=(kaitenx+1)\4} if(k(0)==1 && pk(0)==0){kaitenx=(kaitenx+3)\4} if(k(2)==1 && pk(2)\5==0 && jikux>0){jikux--} if(k(4)==1 && pk(4)\5==0 && jikux<5){jikux++} if(jikux>=5 && kaitenx==1){jikux=4} if(jikux<=0 && kaitenx==3){jikux=1} if(k(3)==1 && pk(3)==0){gosub *setti} if(k(5)==1){takasa+=15:if(setg>0){gosub *setti:setg=0:goto *ssen}} tks = (15-(takasa-pmy+18)/36) setg=0:m1 = puyoh(jikux):if(kaitenx==2){m1++} if(tks0){settimer--}:if(settimer==0){gosub *setti} } *ssen gosub *stwait loop *setwaku color 50,130,180 repeat 13:line boxl-18,boxt+cnt*36,boxl-18+36*6,boxt+cnt*36:loop repeat 7:line boxl-18+cnt*36,boxt,boxl-18+cnt*36,boxt+(12*36):loop color 255,0,0:line boxl-18,boxt+(12-tks)*36,boxl-18+36*6,boxt+(12-tks)*36 color (30-settimer)*8,100,settimer*8:boxf boxl-48,pmy+16*36-settimer*8,boxl-28,pmy+16*36 color 230,230,230 if(sousa==0){ //ぷよらっか中 repeat mapsize if(puyomap(cnt)>0){ pos pmx+(cnt\6)*36,pmy+(15-cnt/6)*36 color cr(puyomap(cnt)),cg(puyomap(cnt)),cb(puyomap(cnt)) circle ginfo_cx,ginfo_cy,ginfo_cx+32,ginfo_cy+32,1 if(cnt\6!=5){if(puyomap(cnt)==puyomap(cnt+1)){boxf ginfo_cx+18,ginfo_cy+8,ginfo_cx+48,ginfo_cy+24}} if(cnt/6>0){if(puyomap(cnt)==puyomap(cnt-6)){boxf ginfo_cx+8,ginfo_cy+18,ginfo_cx+24,ginfo_cy+48}} } loop } if(sousa==1){ //ぷよらっか中 nokori=0 repeat mapsize if(puyomap(cnt)>0){ gl = pmy+(15-cnt/6)*36 if(pitimap(cnt,0)gl){pitimap(cnt,0)=gl:pitimap(cnt,1)=0} pitimap(cnt,0)+=pitimap(cnt,1) pos pmx+(cnt\6)*36,pitimap(cnt,0) color cr(puyomap(cnt)),cg(puyomap(cnt)),cb(puyomap(cnt)) circle ginfo_cx,ginfo_cy,ginfo_cx+32,ginfo_cy+32,1 if(cnt\6!=5){if(puyomap(cnt)==puyomap(cnt+1)){if(pitimap(cnt,0)==pitimap(cnt+1,0)){boxf ginfo_cx+18,ginfo_cy+8,ginfo_cx+48,ginfo_cy+24}}} if(cnt/6>0){if(puyomap(cnt)==puyomap(cnt-6)){if(pitimap(cnt,0)+36==pitimap(cnt-6,0)){boxf ginfo_cx+8,ginfo_cy+18,ginfo_cx+24,ginfo_cy+48}}} } loop if(nokori==0){sousa=0:clcnt=0:gosub *cnctck} } if(sousa==2){ //ぷよ消え中 repeat mapsize pos pmx+(cnt\6)*36,pmy+(15-cnt/6)*36 if(puyomap(cnt)>0){ color cr(puyomap(cnt)),cg(puyomap(cnt)),cb(puyomap(cnt)) if(ersemap(cnt)>2 && clcnt\8<4){ color (255+ginfo_r)/2,(255+ginfo_g)/2,(255+ginfo_b)/2} circle ginfo_cx,ginfo_cy,ginfo_cx+32,ginfo_cy+32,1 if(cnt\6!=5){if(puyomap(cnt)==puyomap(cnt+1)){boxf ginfo_cx+18,ginfo_cy+8,ginfo_cx+48,ginfo_cy+24}} if(cnt/6>0){if(puyomap(cnt)==puyomap(cnt-6)){boxf ginfo_cx+8,ginfo_cy+18,ginfo_cx+24,ginfo_cy+48}} } loop clcnt++:if(clcnt>24){gosub *puyoblsh:sousa=1} } gosub *tumohint return *puyoblsh repeat mapsize:if(puyomap(cnt)>0 && ersemap(cnt)>2){puyomap(cnt)=0}:loop dim puyoh,6 repeat mapsize if(puyomap(cnt)>0){ if(puyoh(cnt\6)!=cnt/6){ h2 = puyoh(cnt\6)*6+cnt\6 pitimap(h2,0) = pmy+(15-cnt/6)*36:puyomap(h2)=puyomap(cnt):puyomap(cnt)=0} puyoh(cnt\6)++} loop return *cnctck repeat mapsize ersemap(cnt)=0:w1=0,0,0,0 if(puyomap(cnt)>0){ if(cnt\6!=5){if(puyomap(cnt)==puyomap(cnt+1)){w1(0)=1:ersemap(cnt)++}} if(cnt/6>0){if(puyomap(cnt)==puyomap(cnt-6)){w1(1)=1:ersemap(cnt)++}} if(cnt\6!=0){if(puyomap(cnt)==puyomap(cnt-1)){w1(2)=1:ersemap(cnt)++}} if(cnt/6<12){if(puyomap(cnt)==puyomap(cnt+6)){w1(3)=1:ersemap(cnt)++}} if(ersemap(cnt)==2){ if(w1(2)==1){if(ersemap(cnt-1)>=2){ersemap(cnt)++:ersemap(cnt-1)++:sousa=2}} if(w1(1)==1){if(ersemap(cnt-6)>=2){ersemap(cnt)++:ersemap(cnt-6)++:sousa=2}}} } loop repeat mapsize if(puyomap(cnt)>0){ if(cnt\6!=5){if(puyomap(cnt)==puyomap(cnt+1)){if(ersemap(cnt+1)>2){ersemap(cnt)=3:sousa=2}}} if(cnt/6>0){if(puyomap(cnt)==puyomap(cnt-6)){if(ersemap(cnt-6)>2){ersemap(cnt)=3:sousa=2}}} if(cnt\6!=0){if(puyomap(cnt)==puyomap(cnt-1)){if(ersemap(cnt-1)>2){ersemap(cnt)=3:sousa=2}}} if(cnt/6<12){if(puyomap(cnt)==puyomap(cnt+6)){if(ersemap(cnt+6)>2){ersemap(cnt)=3:sousa=2}}} } loop return *setti //設置 r1 =jikux:r2=puyoh(jikux):if(kaitenx==2){r2++} puyomap(r1+r2*6)=tumolist(thead):pitimap(r1+r2*6,0)=j1(1) if(kaitenx\2==1){r1+=1-(kaitenx/3)*2}:r2=puyoh(r1):if(kaitenx==0){r2++} puyomap(r1+r2*6)=tumolist(thead+1):pitimap(r1+r2*6,0)=j1(11) if(kaitenx\2==0){puyoh(jikux)+=2}else{puyoh(jikux)++:puyoh(jikux+1-(kaitenx/3)*2)++} sousa++:cflg=1 return *tmcall thead+=2:repeat 4:j1(cnt*10)=j1((cnt+2)*10):j1(cnt*10+1)=j1((cnt+2)*10+1):loop takasa = boxt:settimer=30:jikux=2:kaitenx=0 return *tumohint if(sousa==0){ r1 =jikux:r2=puyoh(jikux):if(kaitenx==2){r2++} pos pmx+r1*36,pmy+(15-r2)*36 color cr(tumolist(thead)),cg(tumolist(thead)),cb(tumolist(thead)) color (510+ginfo_r)/3,(510+ginfo_g)/3,(510+ginfo_b)/3 circle ginfo_cx,ginfo_cy,ginfo_cx+32,ginfo_cy+32,1 if(kaitenx\2==1){r1+=1-(kaitenx/3)*2} r2=puyoh(r1):if(kaitenx==0){r2++} pos pmx+r1*36,pmy+(15-r2)*36 color cr(tumolist(thead+1)),cg(tumolist(thead+1)),cb(tumolist(thead+1)) color (510+ginfo_r)/3,(510+ginfo_g)/3,(510+ginfo_b)/3 circle ginfo_cx,ginfo_cy,ginfo_cx+32,ginfo_cy+32,1 } repeat 6-cflg*2,cflg*2 color cr(tumolist(thead+cnt)),cg(tumolist(thead+cnt)),cb(tumolist(thead+cnt)) //ツモ circle j1(0+cnt*10)-15,j1(1+cnt*10)-15,j1(0+cnt*10)+17,j1(1+cnt*10)+17,1 loop j1(2) = (boxl+jikux*36) j1(3) = takasa if(kaitenx==0){j1(13)=takasa-36:jikux2=jikux} if(kaitenx==1){j1(13)=takasa:jikux2=jikux+1} if(kaitenx==2){j1(13)=takasa+36:jikux2=jikux} if(kaitenx==3){j1(13)=takasa:jikux2=jikux-1} j1(12) = (boxl+jikux2*36) repeat 2 j1(22+cnt*20) = boxl+6*36+30+(cnt\2)*20:j1(23+cnt*20) = boxt+(cnt*70)+36 j1(32+cnt*20) = boxl+6*36+30+(cnt\2)*20:j1(33+cnt*20) = boxt+(cnt*70) loop repeat 6 j1(10*cnt+0) = (j1(10*cnt+2)*7+j1(10*cnt+0))/8 j1(10*cnt+1) = (j1(10*cnt+3)*7+j1(10*cnt+1))/8 loop return *stwait //ウェイト gosub *keyset:redraw 1:wait 1:redraw 0:return *keyset //キーボードの入力 repeat length(kb):if(k(cnt)==0){pk(cnt)=0} else{pk(cnt) += 1}:getkey k(cnt),kb(cnt):loop:return