*** Project Start *** @AUTOEXEC.bas 10 '============================== 20 ' メニュー(Pocket BASIC) 30 '============================== 50 FONT_WIDTH=6:FONT_HIGHT=8:SCREEN_WIDTH=128:SCREEN_HIGHT=64:'フォントの幅と高さ 60 MENU_MAX=SCREEN_HIGHT/FONT_HIGHT 70 dim MENU[MENU_MAX],FILE[MENU_MAX] 100 '---------------- メニューの定義 ------------------ 110 MENU[0]="PAKMAN":FILE[0]="Pakman.bas" 120 MENU[1]="SHOOT":FILE[1]="shoot.bas" 130 MENU[2]="INVADERS":FILE[2]="Invaders.bas" 140 MENU[3]="TETRIS":FILE[3]="Tetris.bas" 150 MENU[4]="BLOCK":FILE[4]="block.bas" 190 MENU_NUM=5 1000 '---------------- 画面表示 ----------------------- 1100 cls 1110 MARGIN=SCREEN_HIGHT-MENU_NUM*FONT_HIGHT 1120 SPACE=MARGIN/(MENU_NUM+1) 1130 dim ITEM_X[MENU_MAX],ITEM_Y[MENU_MAX],ITEM_WIDTH[MENU_MAX] 1140 for I=0 to MENU_NUM-1 1150 ITEM_X[I]=(SCREEN_WIDTH-strlen(MENU[I])*FONT_WIDTH)/2 1160 ITEM_Y[I]=(I+1)*SPACE+I*FONT_HIGHT 1170 ITEM_WIDTH[I]=strlen(MENU[I])*FONT_WIDTH 1180 putStr ITEM_X[I],ITEM_Y[I],MENU[I],1,set,F 1190 next 1195 update 1200 '---------------- 選択 -------------------- 1210 SOUND01="T150L64V200C7C6E5G5C7." 1220 SOUND02="T150L64V100C#6V200C#6A5V10A5V200A6A6V10A6." 1230 ITEM=0:gosub 3000:update:'カーソルを表示 1300 while -1 1305 SEL_ITEM=ITEM 1310 if keyU()=1 then SEL_ITEM=SEL_ITEM-1:if SEL_ITEM<0 then SEL_ITEM=MENU_NUM-1 1320 if keyD()=1 then SEL_ITEM=SEL_ITEM+1:if SEL_ITEM=MENU_NUM then SEL_ITEM=0 1330 if SEL_ITEM<>ITEM then 1340 gosub 3000:sound 0,SOUND01:play 0 1350 ITEM=SEL_ITEM 1360 gosub 3000:update:sleep 500 1370 end if 1380 if keyA()=1 then sound 0,SOUND02:play 0:print FILE[ITEM]:end 1390 end while 1400 end 3000 '-------------- カーソル表示 --------------- 3010 fill ITEM_X[ITEM]-1,ITEM_Y[ITEM]-1,ITEM_X[ITEM]+ITEM_WIDTH[ITEM],ITEM_Y[ITEM]+FONT_HIGHT,1,xor,F 3090 return @shoot.bas 10 '=========== SHOOTING ============= 20 GameTitle="SHOOTING" 30 ScWidth=128:ScHight=64 40 FontWidth=6:FontHight=8:BarWidth=3 50 ScoreStr="SCORE":HiScoreStr="HISCO":StageStr="STAGE" 60 BgWidth=ScWidth-strlen(ScoreStr)*FontWidth-BarWidth*2 70 BgHight=ScHight*2 80 Fm1=createFM(BgWidth,BgHight) 90 Fm2=createFM(BgWidth,BgHight):gosub 1000: 'draw background 100 Stage=1:Score=0:MyNum=2 110 HighScoreNum=ScHight/FontHight-3 120 dim HighScore[HighScoreNum]:gosub 9060 130 if (keyA()<>1)||(keyB()<>1) then gosub 8100 : 'read HighScore 135 None=0:Exist=1:St1=1:St2=2:St3=3:Explosion=4:Pow=5 136 Powerup=1:PrevA=0:A=0 140 BuMax=70:dim BuX[BuMax],BuY[BuMax],BuSt[BuMax] :'bullet 145 dim BuW[BuMax],BuH[BuMax] 170 EnMapNum=100:dim EnIn[EnMapNum],EnPr[EnMapNum]:' Enemy 190 EnMax=20:dim EnSt[EnMax],EnX[EnMax],EnY[EnMax],EnType[EnMax] 200 dim EnP1[EnMax],EnP2[EnMax],EnP3[EnMax],EnCo[EnMax],EnPow[EnMax] 205 dim EnH[EnMax],EnW[EnMax] 210 EnBuMax=50:dim EnBuX[EnBuMax],EnBuY[EnBuMax] :'Enemy bullet 215 dim EnBuSt[EnBuMax],EnBuDx[EnBuMax],EnBuDy[EnBuMax] 217 dim EnBuW[EnBuMax],EnBuH[EnBuMax] 220 gosub 63000:'new stage 300 gosub 20000:'define Char 310 gosub 1200 :'define Sound 320 B_END=0 400 '=========== Main Routine ============= 410 while B_END=0 420 gosub 10000 :' Demo 425 if B_END=1 then exit while 430 while -1 440 gosub 5000 :' Stage 450 if GameOver=1 then gosub 61000:exit while 460 if StageClear=1 then gosub 62000 470 end while 480 end while 490 sound 0,"L64.":play 0 495 sound 1,"L64.":play 1 500 end 900 '--------- init EnTable -------------------- 905 for I=0 to EnMapNum-1:EnIn[I]=100000:next 910 for I=0 to EnMax-1:EnSt[I]=None:next 930 return 1000 '--------- draw background ------------------ 1030 cls F,Fm1:cls F,Fm2 1040 for I=0 to 300 1045 X=rand() 1055 Y=rand() 1070 pset X*BgWidth/255,Y*BgHight/255,1,set,F,Fm1 1105 X=rand() 1115 Y=rand() 1120 pset X*BgWidth/255,Y*BgHight/255,1,set,F,Fm2 1130 next 1150 return 1200 '--------- define Sound ------------------ 1230 ' music:maoudamasii(maou_bgm_piano29) 1240 Tempo="T100" 1250 S111="L16HD#6L32.L16HD#6L32.L16HD#6L32." 1260 S112="L16HE6L32.L16HE6L32.L16HE6L32." 1270 S113="L16HF#6L32.L16HF#6L32.L16HF#6L32.L16HF#6L32." 1280 S114="L16HE6L32.L16HE6L32.L16HE6L32." 1290 S115="L16HD#6L32.L16HD#6L32.L16HE6L32.L16HE6L32." 1300 S116="L16HD#6L32.L16HD#6L32.L16HD#6L32." 1310 S117="L16HE6L32.L16HE6L32.L16HE6L32." 1320 S118="L16HF#6L32.L16HF#6L32.L16HF#6L32.L16HF#6L32." 1330 S11=S111+S112+S113+S114+S115+S116+S117+S118 1340 ' 1350 S121="L16HE6L32.L16HE6L32.L16HE6L32." 1360 S122="L16HD#6L32.L16HD#6L32.L16HE6L32.L16HE6L32." 1370 S123="L16HD#6L32.L16HD#6L32.L16HD#6L32." 1380 S124="L16HE6L32.L16HE6L32.L16HE6L32." 1390 S125="L16HF#6L32.L16HF#6L32.L16HF#6L32.L16HF#6L32." 1400 S126="L16HE6L32.L16HE6L32.L16HE6L32." 1410 S127="L16HD#6L32.L16HD#6L32.L16HD#6L32." 1420 S12=S121+S122+S123+S124+S125+S126 1430 ' 1440 S131="L16HE6L32.L16HE6L32.L16HD#6L32." 1450 S132="L16HE6L32.L16HD#6L32.L4G#5_L1._" 1460 S13=S127+S131+S132 1470 ' 1480 ' 1500 S154="L16HD#6L32.L16HD#6L32.L16HE6L32." 1510 S155="L16HD#6L32.L16HE6L32.L16HD#6L32." 1520 S156="L16HC#6L32.L16HC#6L32.L4._L1._" 1530 S15=S154+S155+S156 1540 ' 1550 ' 1560 ShootSound="T150L64V200G5A6." 1570 ExplosionSound="T150L64V100G4B4V200G5V10B4B3G4." 1580 PowupSound="T150L64V200C7C6E5G5C7." 1590 PowupSound1="T150L64V100C#6V200C#6A5V10A5V200A6A6V10A6." 1600 ItemGetSound="T150L32V200C#7F7F7V100F7L64." 1610 StopSound="." 1620 ExplosionSound1="T150L128V200C7." 1990 return 2000 '--------- show background ------------------ 2010 if BgY1+ScHight-125 then MySt=St1 2308 end if 2310 L=keyL():R=keyR():U=keyU():D=keyD() 2320 if L=1 then LCount=LCount+1 else LCount=0 2325 if LCount>10 then LCount=10 2330 if R=1 then RCount=RCount+1 else RCount=0 2335 if RCount>10 then RCount=10 2340 if U=1 then UCount=UCount+1 else UCount=0 2345 if UCount>10 then UCount=10 2350 if D=1 then DCount=DCount+1 else DCount=0 2355 if DCount>20 then DCount=20 2360 if L=1 then MyX=MyX-(1+LCount/4) 2370 if R=1 then MyX=MyX+(1+RCount/4) 2380 if U=1 then MyY=MyY-(1+UCount/4) 2390 if D=1 then MyY=MyY+(1+DCount/4) 2400 if MyXScHight-MyHGap then MyY=ScHight-MyHight-MyHGap 2440 put MyX-1,MyY-1,MyCharMask,and,F 2445 if MySt=St1 then 2450 put MyX,MyY,MyChar,or,F 2451 if MyOp=Exist then 2452 X=MyX-MyOpW-3:X1=MyX+MyWidth+3 2453 if X>=BarWidth then put X,MyY,MyOpt,or,F 2454 if X1+MyOpW12 then 2590 if MyNum=0 then 2600 GameOver=1 2610 else 2620 MyNum=MyNum-1:MySt=St2:MyCo=Count 2630 gosub 6110:'Disp MyNum 2640 end if 2650 end if 2690 end if 2990 return 3000 '------- Shoot Sub --------------- 3005 gosub 3400:'Aキー読み込み 3010 if (MyBulletDone=0)&&((MySt=St1)||(MySt=St2)) then 3020 if (PrevA=0)&&(A=1) then 3026 PrevA=1:A=0 3030 sound 1,ShootSound:play 1:MyBulletDone=1 3035 gosubS BuSt,I,None,3100 :'shoot Sub 3040 if MyOp=Exist then 3045 gosubS BuSt,I,None,3130:gosubS BuSt,I,None,3160 :'shoot Sub1,2 3050 end if 3060 end if 3070 end if 3075 gosub 3400:'Aキー読み込み 3080 return 3100 '----------- shoot Sub ----------- 3105 BuSt[I]=Exist:BuX[I]=MyX+MyWidth/2-MyBu1W/2 3110 BuY[I]=MyY-MyBu1H:BuW[I]=MyBu1W:BuH[I]=MyBu1H 3120 return 3130 '----------- shoot Sub1 ----------- 3131 X=MyX-MyOpW/2-3-MyBu1W/2 3132 if X>=BarWidth then 3135 BuSt[I]=Exist:BuX[I]=X 3140 BuY[I]=MyY-MyBu1H:BuW[I]=MyBu1W:BuH[I]=MyBu1H 3145 end if 3150 return 3160 '----------- shoot Sub2 ----------- 3161 X=MyX+MyWidth+3+MyOpW/2 3162 if (X+MyBu1W-1)3 then 3260 BuY[I]=BuY[I]-3 3270 put BuX[I],BuY[I],MyBu1,or,F 3280 else 3290 BuSt[I]=None 3300 end if 3310 return 3400 '----------- key 入力 ------------- 3410 if keyA()=0 then PrevA=0 3420 if keyA()=1 then A=1 3430 return 5000 '=============== STAGE =============== 5010 Count=1:cls: gosub 900 :' init Entable 5020 MyX=BarWidth+BgWidth/2-MyWidth/2 5030 MyY=ScHight-MyHight-MyHGap:MySt=St1:MyOp=None 5040 ScAreaX=BarWidth*2+BgWidth-1 5050 gosub 50000:' load map 5060 LCount=0:RCount=0:UCount=0:DCount=0 5070 MapIdx=0:EnNum=0 5130 Y=0:GameClear=0:GameOver=0 5140 putStr ScAreaX,Y,StageStr,1 : Y=Y+FontHight : StageY=Y 5150 gosub 6020 : Y=Y+FontHight : 'Disp Stage 5160 putStr ScAreaX,Y,HiScoreStr,1 : Y=Y+FontHight : HiScoreY=Y 5170 gosub 6040 : Y=Y+FontHight : 'Disp HiScore 5180 putStr ScAreaX,Y,ScoreStr,1 : Y=Y+FontHight : ScoreY=Y 5190 gosub 6080 : Y=Y+FontHight : 'Disp Score 5195 MyNumY=ScHight-MyHight-MyHGap:gosub 6110:'Disp MyNum 5200 BgY1=0:BgY2=0:BgSpeed1=1:BgSpeed2=2 5205 Tempo="T150V100":sound 0,Tempo+S11+S12+S13+S11+S12+S15 5206 play 0 5207 '-------------- Main Loop --------------- 5210 while (StageClear=0)&&(GameOver=0) 5230 gosub 2000 : ' show background 5235 '---------- move background --------------- 5240 BgY1=BgY1-BgSpeed1:BgY2=BgY2-BgSpeed2 5250 if BgY1<0 then BgY1=BgY1+BgHight 5260 if BgY2<0 then BgY2=BgY2+BgHight 5265 MyBulletDone=0 5270 gosub 2300 : ' move My Char 5275 gosub 3000 : ' shoot My Bullet 5280 gosub 3200 : ' move bullet 5285 gosub 3000 : ' shoot My Bullet 5290 gosub 30000 : ' move enemy 5295 gosub 3000 : ' shoot My Bullet 5300 gosubM EnSt,I,St1,25000,St2,25000,St3,25000 : ' check enemy collision 5305 gosub 3000 : ' shoot My Bullet 5310 gosub 25700 : ' check My collision 5315 gosub 3000 : ' shoot My Bullet 5350 sleep 30 : ' 30ms スリープ 5450 update BarWidth,0,BarWidth+BgWidth-1,ScHight-1 5460 if sound0status()=0 then play 0 5490 Count=Count+1 5500 end while 5505 sound 1,StopSound:play 1 5520 return 6000 '----- STAGE Sub ----- 6010 'Disp Stage 6020 putStr ScAreaX,StageY,format("%-5D",Stage),1 6030 return 6040 'Disp HighScore 6050 gosub 9000 6060 putStr ScAreaX,HiScoreY,format("%-5D",HiScore),1 6070 return 6080 'Disp Score 6090 putStr ScAreaX,ScoreY,format("%-5D",Score),1 6100 return 6110 'Disp MyNum 6115 fill ScAreaX,MyNumY,ScWidth-1,ScHight-1,0 6116 if MyNum<>0 then 6120 for I=0 to MyNum-1 6130 put ScAreaX+I*(MyWidth+1),MyNumY,MyChar 6140 next 6145 end if 6150 return 8000 '-------- saveHiscore ------------ 8010 Addr=0 8020 write Addr,GameTitle:Addr=Addr+16 8030 for I=0 to HighScoreNum-1 8040 write Addr,format("%D",HighScore[I]):Addr=Addr+16 8050 next 8060 return 8100 '-------- readHiscore ------------ 8110 Addr=0 8120 if GameTitle=read(Addr,strlen(GameTitle)) then 8125 Addr=Addr+16 8130 for I=0 to HighScoreNum-1 8140 HighScore[I]=val(read(Addr,5)):Addr=Addr+16 8150 next 8160 end if 8170 return 9000 '---------get HiScore------------- 9010 HiScore=0:MinHiScore=100000 9020 for I=0 to HighScoreNum-1 9030 if HighScore[I]>HiScore then HiScore=HighScore[I] 9035 if MinHiScore>HighScore[I] then MinHiScore=HighScore[I] 9040 next 9050 return 9060 '--------HiScore Initial---------- 9070 for I=0 to HighScoreNum-1 9080 HighScore[I]=0 9090 next 9095 return 10000 '-------------- openning --------------------- 10400 '----- MAKE SCREEN ------- 10410 cls 10430 Comment="PUSH B KEY" 10440 TitleX=(ScWidth-strlen(GameTitle)*FontWidth)/2 10450 TitleY=(ScHight-2*FontWidth)/3 10460 putStr TitleX,TitleY,GameTitle,1 10470 CommentX=(ScWidth-strlen(Comment)*FontWidth)/2 10480 putStr CommentX,TitleY*2,Comment,1 10490 '--------------- Wait --------------- 10495 keyBpushd=0 10500 while -1 10505 for I=0 to 20 10506 if keyA()=1 && keyB()=1 then keyBpushd=1:B_END=1:exit for:'AとBを両方押したらプログラム終了 10507 if keyB()=1 then keyBpushd=1:exit for 10520 sleep 50 10525 next 10530 putStr CommentX,TitleY*2,Comment,1,xor,T 10535 if keyBpushd=1 then exit while 10550 end while 10600 return 20000 '=========== define Char ============= 20001 MyWidth=10:MyHight=5:MyHGap=3 20002 MyChar=createFM(MyWidth,MyHight) 20003 setBM MyChar,0,"0001111000" 20004 setBM MyChar,1,"0011001100" 20005 setBM MyChar,2,"0110000110" 20006 setBM MyChar,3,"1111111111" 20007 setBM MyChar,4,"1111001111" 20008 MyCharMask=createFM(MyWidth+2,MyHight+2) 20009 setBM MyCharMask,0,"111100001111" 20010 setBM MyCharMask,1,"111000000111" 20011 setBM MyCharMask,2,"110000000011" 20012 setBM MyCharMask,3,"100000000001" 20013 setBM MyCharMask,4,"000000000000" 20014 setBM MyCharMask,5,"000000000000" 20015 setBM MyCharMask,6,"000000000000" 20016 MyBu1W=2:MyBu1H=3 20050 MyBu1=createFM(MyBu1W,MyBu1H) 20051 setBM MyBu1,0,"11" 20052 setBM MyBu1,1,"11" 20053 setBM MyBu1,2,"11" 20054 En1W=8:En1H=5 20055 Enemy01=createFM(En1W,En1H) 20056 setBM Enemy01,0,"00011000" 20057 setBM Enemy01,1,"01111110" 20058 setBM Enemy01,2,"11111111" 20059 setBM Enemy01,3,"01111110" 20060 setBM Enemy01,4,"00011000" 20061 EnBuWi=4:EnBuHi=3 20062 EnBuBM=createFM(EnBuWi,EnBuHi) 20063 setBM EnBuBM,0,"0110" 20064 setBM EnBuBM,1,"1111" 20065 setBM EnBuBM,2,"0110" 20066 Enemy01Ex0=createFM(En1W,En1H) 20067 setBM Enemy01Ex0,0,"10000001" 20068 setBM Enemy01Ex0,1,"01100110" 20069 setBM Enemy01Ex0,2,"11111111" 20070 setBM Enemy01Ex0,3,"01100110" 20071 setBM Enemy01Ex0,4,"10000001" 20072 Enemy01Ex1=createFM(En1W,En1H) 20073 setBM Enemy01Ex1,0,"00000000" 20074 setBM Enemy01Ex1,1,"00100100" 20075 setBM Enemy01Ex1,2,"01111110" 20076 setBM Enemy01Ex1,3,"00100100" 20077 setBM Enemy01Ex1,4,"00000000" 20078 'Powerup 20079 PowW=7:PowH=6 20080 PowerupI0=createFM(PowW,PowH) 20081 setBM PowerupI0,0,"1111111" 20082 setBM PowerupI0,1,"1000001" 20083 setBM PowerupI0,2,"1001101" 20084 setBM PowerupI0,3,"1000001" 20085 setBM PowerupI0,4,"1001111" 20086 setBM PowerupI0,5,"1111111" 20088 'Option 20089 MyOpW=5:MyOpH=3 20090 MyOpt=createFM(MyOpW,MyOpH) 20091 setBM MyOpt,0,"00100" 20092 setBM MyOpt,1,"01110" 20093 setBM MyOpt,2,"11111" 20100 'Boss1 20101 Boss01W=32:Boss01H=32 20102 Boss01=createFM(Boss01W,Boss01H) 20103 setBM Boss01,0,"00000000000011111111000000000000" 20104 setBM Boss01,1,"00000000011111111111111000000000" 20105 setBM Boss01,2,"00000001111111111111111110000000" 20106 setBM Boss01,3,"00000011111111111111111111000000" 20107 setBM Boss01,4,"00000111111111111111111111100000" 20108 setBM Boss01,5,"00001111111111111111111111110000" 20109 setBM Boss01,6,"00011111111111111111111111111000" 20110 setBM Boss01,7,"00111111111111111111111111111100" 20111 setBM Boss01,8,"00111111111111111111111111111100" 20112 setBM Boss01,9,"01111111111111111111111111111110" 20113 setBM Boss01,10,"01111111111111111111111111111110" 20114 setBM Boss01,11,"01111111111111111111111111111110" 20115 setBM Boss01,12,"11111111111111111111111111111111" 20116 setBM Boss01,13,"11111111111111111111111111111111" 20117 setBM Boss01,14,"11111111111111111111111111111111" 20118 setBM Boss01,15,"11111111111111111111111111111111" 20119 setBM Boss01,16,"11111111111111111111111111111111" 20120 setBM Boss01,17,"11111111111111111111111111111111" 20121 setBM Boss01,18,"11111111111111111111111111111111" 20122 setBM Boss01,19,"11111111111111111111111111111111" 20123 setBM Boss01,20,"01111111111111111111111111111110" 20124 setBM Boss01,21,"01111111111111111111111111111110" 20125 setBM Boss01,22,"01111111111111111111111111111110" 20126 setBM Boss01,23,"00111111111111111111111111111100" 20127 setBM Boss01,24,"00111111111111111111111111111100" 20128 setBM Boss01,25,"00011111111111111111111111111000" 20129 setBM Boss01,26,"00001111111111111111111111110000" 20130 setBM Boss01,27,"00000111111111111111111111100000" 20131 setBM Boss01,28,"00000011111111111111111111000000" 20132 setBM Boss01,29,"00000001111111111111111110000000" 20133 setBM Boss01,30,"00000000011111111111111000000000" 20134 setBM Boss01,31,"00000000000011111111000000000000" 20150 Boss01FM=createFM(Boss01W,Boss01H) 20151 put 0,0,Boss01,set,F,Boss01FM 24990 return 25000 '=========== check enemy collision =========== 25070 '----- bullet ------ 25080 J=isColM(EnX[I],EnY[I],EnW[I],EnH[I],BuX,BuY,BuW,BuH,BuSt,Exist) 25090 if J<>BuMax then 25091 gosubC EnType[I],25110,25110,25300,25300 25092 end if 25093 return 25100 '----- EnType 0,1 --------------- 25110 EnSt[I]=Explosion:EnNum=EnNum-1 25120 EnCo[I]=Count 25125 BuSt[J]=None 25130 Score=Score+10 25140 if EnNum=0 then 25150 '--- bonus ------- 25155 if EnPow[I]=1 then 25180 Score=Score+100 25185 sound 1,PowupSound:play 1 25186 gosubS EnSt,Found,None,26000:'set powerUp 25230 end if 25240 end if 25250 gosub 6080 : ' disp score 25270 return 25300 '----- EnType 2,3 --------------- 25305 EnP2[I]=EnP2[I]-1:BuSt[J]=None 25310 if EnP2[I]>0 then 25330 sound 1,ExplosionSound1:play 1 25350 else 25560 if EnType[I]=3 then 25561 Score=Score+1000*Stage 25562 EnSt[I]=Explosion:EnNum=EnNum-1:BuSt[J]=None:gosub 6080 25563 else 25564 Score=Score+50 25565 gosub 25100 25570 end if 25580 end if 25590 return 25700 '=========== check My collision =========== 25705 if MySt=St1 then 25706 W=MyWidth:H=MyHight 25710 I=isColM(MyX,MyY,W,H,EnBuX,EnBuY,EnBuW,EnBuH,EnBuSt,Exist) 25720 if I<>EnBuMax then 25735 MySt=Explosion:MyOp=None 25740 MyCo=Count 25750 EnBuSt[I]=None 25760 else 25780 I=isColM(MyX,MyY,W,H,EnX,EnY,EnW,EnH,EnSt,St1,St2,St3,Pow) 25790 if I<>EnMax then 25810 if EnType[I]=Powerup then 25820 MyOp=St1:Score=Score+100 25830 EnSt[I]=None 25840 sound 1,ItemGetSound:play 1 25900 else 25905 if MySt<>Explosion then 25910 MySt=Explosion:MyOp=None 25920 MyCo=Count 25930 if EnType[I]<>3 then EnSt[I]=Explosion:EnNum=EnNum-1 25935 end if 25940 end if 25950 end if 25970 end if 25985 end if 25990 return 26000 '----------- set powerup ------------- 26010 if Found<>EnMax then 26020 EnSt[Found]=Pow 26030 EnType[Found]=Powerup:EnX[Found]=EnX[I]:EnY[Found]=EnY[I] 26040 EnCo[Found]=Count:EnH[Found]=PowW:EnW[Found]=PowH 26050 EnPow[Found]=None 26060 end if 26070 return 30000 '=========== move enemy =========== 30100 '-------- load Map to EnTable ------------ 30110 for I=MapIdx to EnMapNum-1 30120 if EnIn[I]=Count then 30130 gosubS EnSt,J,None,50800:' load Map to EnTable 30135 MapIdx=I+1 30140 else 30150 if EnIn[I]>Count then exit for 30160 end if 30170 next 30200 '------------------ move ------------------- 30210 gosubM EnSt,I,St1,40000,St2,42000,St3,44000,Explosion,49000,Pow,49500 30220 gosubM EnBuSt,I,Exist,39000 31900 return 39000 '---------- move enemy bu ----------- 39010 EnBuX[I]=EnBuX[I]+EnBuDx[I] 39020 EnBuY[I]=EnBuY[I]+EnBuDy[I]:W=BarWidth 39030 if isOut(W,0,BgWidth,ScHight,EnBuX[I],EnBuY[I],EnBuW[I],EnBuH[I])=1 then 39040 EnBuSt[I]=None 39050 else 39060 put EnBuX[I],EnBuY[I],EnBuBM,or,F 39070 end if 39080 return 40000 '------------- ST1 --------------- 40010 EnCount=Count-EnCo[I] 40020 gosubC EnType[I],40050,40100,40110,40200 40030 return 40050 return :'--- EnemyType0 dummy ---- 40100 '--- EnemyType1 ST1 ---- 40101 EnY[I]=EnY[I]+1 40102 put EnX[I],EnY[I],Enemy01,or,F 40103 if EnCount>=EnP1[I] then EnSt[I]=St2 40104 return 40110 '--- EnemyType2 ST1 ---- 40111 EnY[I]=EnY[I]+1 40112 put EnX[I],EnY[I],Enemy01,or,F 40113 if BossIdx<>-1 then 40114 if EnSt[BossIdx]=St2 then 40120 EnCo[I]=EnX[I]-EnX[BossIdx] 40130 EnP3[I]=EnY[I]-EnY[BossIdx] 40150 EnSt[I]=St2 40190 end if 40195 end if 40199 return 40200 '--- EnemyType3 ST1 ---- 40201 EnY[I]=EnY[I]+1 40205 H=EnH[I]+EnY[I]:Y=EnH[I]-H 40210 get EnX[I],0,Boss01FM,0,Y,EnW[I],H,or,F 40290 if EnY[I]>=0 then EnSt[I]=St2 40299 return 42000 '------------- ST2 --------------- 42010 EnCount=Count-EnCo[I] 42020 gosubC EnType[I],42050,42100,42200,42300 42030 return 42050 return :'--- EnemyType0 dummy ---- 42100 '--- EnemyType1 ST2 ---- 42112 put EnX[I],EnY[I],Enemy01,or,F 42113 if mod(EnCount,10-Stage*2)=0 then 42114 for J=1 to 3 42115 gosubS EnBuSt,EnBuIdx,None,48100 42116 next 42117 end if 42118 if EnCount>=EnP2[I] then EnSt[I]=St3 42119 return 42200 '--- EnemyType2 ST2 ---- 42201 OffX=(EnP1[I]-1)*EnY[BossIdx] 42211 EnX[I]=EnX[BossIdx]+EnCo[I]+OffX 42212 EnY[I]=EnY[BossIdx]+EnP3[I] 42213 if isOut(BarWidth,0,BgWidth,ScHight,EnX[I],EnY[I],EnW[I],EnH[I])=0 then 42215 put EnX[I],EnY[I],Enemy01,or,F 42220 end if 42299 return 42300 '--- EnemyType3 ST2 ---- 42301 X=EnX[I]+BoDx:Y=EnY[I]+BoDy 42302 if isOut(BarWidth,0,BgWidth,ScHight-10,X,Y,EnW[I],EnH[I])=1 then 42303 if X=BgWidth then BoDx=-BoDx 42305 if Y<0 then BoDy=-BoDy 42306 if Y>=ScHight-10-EnH[I] then BoDy=-BoDy 42310 else 42311 EnX[I]=X:EnY[I]=Y 42320 end if 42325 put EnX[I],EnY[I],Boss01,or,F 42399 return 44000 '------------- ST3 --------------- 44010 EnCount=Count-EnCo[I] 44020 gosubC EnType[I],44050,44100 44030 return 44050 return :'--- EnemyType0 dummy ---- 44100 '--- EnemyType1 ST3 ---- 44110 EnY[I]=EnY[I]-1 44120 put EnX[I],EnY[I],Enemy01,or,F 44130 if EnCount>=EnP3[I] then EnSt[I]=None:EnNum=EnNum-1 44140 return 48100 '------ set En bu --------- 48110 EnBuSt[EnBuIdx]=Exist 48120 EnBuX[EnBuIdx]=EnX[I]+En1W/2+EnBuWi*(2-J) 48130 EnBuY[EnBuIdx]=EnY[I]+En1H 48140 EnBuDx[EnBuIdx]=2-J 48150 EnBuDy[EnBuIdx]=1 48155 EnBuH[EnBuIdx]=EnBuHi:EnBuW[EnBuIdx]=EnBuWi 48160 return 49000 '---------- Explosion ------------ 49010 EnCount=Count-EnCo[I] 49015 if EnCount=1 then 49017 if sound1status()=0 then sound 1,ExplosionSound:play 1 49019 end if 49020 X=EnX[I]:Y=EnY[I] 49021 if EnType[I]=3 then X=X+12:Y=Y+12 49029 if mod(EnCount/3,2)=0 then 49030 put X,Y,Enemy01Ex0,or,F 49040 else 49050 put X,Y,Enemy01Ex1,or,F 49060 end if 49070 if EnCount>18 then 49071 EnSt[I]=None 49072 if EnType[I]=3 then StageClear=1 49079 end if 49080 return 49500 '------------- POW -------------- 49510 EnCount=Count-EnCo[I] 49520 if mod(EnCount,3)=0 then EnY[I]=EnY[I]+1 49530 put EnX[I],EnY[I],PowerupI0,or,F 49540 if isOut(BarWidth,0,BgWidth,ScHight,EnX[I],EnY[I],EnW[I],EnH[I])=1 then 49550 EnSt[I]=None 49560 end if 49570 return 50000 '=========== load map =========== 50010 if Stage<8 then 50020 gosubC Stage,51000,51000,51000,51000,51000,51000,51000,51000 50730 else 50740 gosub 51000 50750 end if 50760 return 50800 '---------- load Map to EnTable------- 50860 if J<>EnMax then 50900 strToA EnPr[I],0,J,3,EnX,3,EnY,3,EnType,3,EnP1,3,EnP2,3,EnP3,1,EnPow 50910 if EnType[J]=0 then 50920 StageClear=1 50930 else 50935 EnSt[J]=St1:EnCo[J]=EnIn[I]:EnNum=EnNum+1 50940 if EnType[J]=3 then 50941 EnH[J]=Boss01H:EnW[J]=Boss01W:BossIdx=J:BoDx=-2:BoDy=1 50942 EnP2[J]=EnP2[J]+Stage*20 50944 else 50945 EnH[J]=En1H:EnW[J]=En1W 50946 if EnType[J]=2 then EnP2[J]=EnP2[J]+Stage*5 50948 end if 50950 end if 50960 end if 50970 return 51000 '-----------Stage 1 ------------------- 51020 W1=format("%03D",BgWidth/5):W2=format("%03D",BgWidth*2/5) 51030 W3=format("%03D",BgWidth*3/5):W4=format("%03D",BgWidth*4/5) 51040 W5=format("%03D",BgWidth/2) 51100 '--InTime--------- x -- y - type --pat1 -pat2 -pat3 -Pow 51111 EnIn[0]=30:EnPr[0]=W5+"000"+"001"+"020"+"040"+"060"+"0" 51112 EnIn[1]=80:EnPr[1]=W1+"000"+"001"+"020"+"040"+"060"+"1" 51113 EnIn[2]=80:EnPr[2]=W4+"000"+"001"+"020"+"040"+"060"+"1" 51114 EnIn[3]=130:EnPr[3]=W2+"000"+"001"+"020"+"040"+"060"+"1" 51115 EnIn[4]=130:EnPr[4]=W3+"000"+"001"+"020"+"040"+"060"+"1" 51116 EnIn[5]=180:EnPr[5]=W1+"000"+"001"+"020"+"040"+"060"+"1" 51117 EnIn[6]=180:EnPr[6]=W4+"000"+"001"+"020"+"040"+"060"+"1" 51118 EnIn[7]=200:EnPr[7]=W2+"000"+"001"+"020"+"040"+"060"+"1" 51119 EnIn[8]=200:EnPr[8]=W3+"000"+"001"+"020"+"040"+"060"+"1" 51120 EnIn[9]=260:EnPr[9]=W5+"000"+"001"+"020"+"040"+"060"+"0" 51121 EnIn[10]=300:EnPr[10]=W1+"000"+"001"+"020"+"040"+"060"+"1" 51122 EnIn[11]=300:EnPr[11]=W4+"000"+"001"+"020"+"040"+"060"+"1" 51123 EnIn[12]=340:EnPr[12]=W2+"000"+"001"+"020"+"040"+"060"+"1" 51124 EnIn[13]=340:EnPr[13]=W3+"000"+"001"+"020"+"040"+"060"+"1" 51125 EnIn[14]=380:EnPr[14]=W1+"000"+"001"+"020"+"040"+"060"+"1" 51126 EnIn[15]=380:EnPr[15]=W4+"000"+"001"+"020"+"040"+"060"+"1" 51127 EnIn[16]=380:EnPr[16]=W2+"000"+"001"+"020"+"040"+"060"+"1" 51128 EnIn[17]=380:EnPr[17]=W3+"000"+"001"+"020"+"040"+"060"+"1" 51150 EnIn[18]=450:EnPr[18]="038"+"000"+"002"+"000"+"015"+"000"+"0" 51151 EnIn[19]=450:EnPr[19]="046"+"000"+"002"+"002"+"015"+"000"+"0" 51152 EnIn[20]=452:EnPr[20]="030"+"000"+"002"+"000"+"015"+"000"+"0" 51153 EnIn[21]=452:EnPr[21]="054"+"000"+"002"+"002"+"015"+"000"+"0" 51154 EnIn[22]=454:EnPr[22]="022"+"000"+"002"+"000"+"015"+"000"+"0" 51155 EnIn[23]=454:EnPr[23]="062"+"000"+"002"+"002"+"015"+"000"+"0" 51156 EnIn[24]=456:EnPr[24]="014"+"000"+"002"+"000"+"015"+"000"+"0" 51157 EnIn[25]=456:EnPr[25]="070"+"000"+"002"+"002"+"015"+"000"+"0" 51158 EnIn[26]=458:EnPr[26]="022"+"000"+"002"+"000"+"015"+"000"+"0" 51159 EnIn[27]=458:EnPr[27]="062"+"000"+"002"+"002"+"015"+"000"+"0" 51160 EnIn[28]=460:EnPr[28]="030"+"000"+"002"+"000"+"015"+"000"+"0" 51161 EnIn[29]=460:EnPr[29]="054"+"000"+"002"+"002"+"015"+"000"+"0" 51162 EnIn[30]=462:EnPr[30]="038"+"000"+"002"+"000"+"015"+"000"+"0" 51163 EnIn[31]=462:EnPr[31]="046"+"000"+"002"+"002"+"015"+"000"+"0" 51164 EnIn[32]=462:EnPr[32]="030"+"-32"+"003"+"001"+"030"+"000"+"0":'boss 51199 EnIn[33]=3000:EnPr[33]="000"+"000"+"000"+"000"+"000"+"000"+"0"'clear 60000 return 61000 '=========== GAME OVER ============= 61005 if MinHiScore1)||(keyB()<>1) then gosub 61100 : 'ハイスコアを読み出す 140 MAP_X_NUM=28:MAP_Y_NUM=29:dim MAP[MAP_Y_NUM]:'マップ関連の変数の定義 150 sleep 1000 200 '============== ゲーム関連の定義 ================ 210 CHAR_SIZE=10:'キャラクタのサイズは10ドットの正方形 220 MAP_CELL_SIZE=7:'マップのセルのサイズは7ドットの正方形 230 MAP_CELL_S_SIZE=2:'縮小マップのセルのサイズ 240 LEFT=0:UP=1:RIGHT=2:DOWN=3:DIR_NUM=4:STOP=4:'キャラの方向 245 GHOST_FRIGHTENED=4:GHOST_MASK=5:'ゴーストのいじけとマスクのフレームメモリーのインデックス 250 COOKIE_FM_IDX=24:'クッキーのフレームメモリーのインデックス 260 SPACE_FM_IDX=26:'スペースのフレームメモリーのインデックス 270 POWERUP_FM_IDX=25:'パワーアップエサのフレームメモリーのインデックス 500 gosub 50000:'ビットマップの定義 550 gosub 59000:'音の定義 570 CHAR_TO_MAP_CELL_IDX="+=Tt7i|l~89Ffj12Ggr-?ILJ.0 ":'MAPキャラ→FM変換テーブル 600 GHOST_NUM=4:'ゴーストの数 610 dim GHOST_X[GHOST_NUM],GHOST_Y[GHOST_NUM],GHOST_DIR[GHOST_NUM],GHOST_FRIGHTENED_MODE[GHOST_NUM]:'ゴースト関連の変数 GHOST_FRIGHTENED_MODE:イジケモードの時1、そうでない時は0 620 dim GHOST_TX[GHOST_NUM],GHOST_TY[GHOST_NUM]:'ゴーストのターゲットタイル 625 dim GHOST_SLEEP_COUNT[GHOST_NUM] 630 GHOST_MODE_SCATTER=0:GHOST_MODE_CHASE=1:'ゴーストのモードの定数 640 dim MODE_CHANGE_TABLE[3]:MODE_CHANGE_NUM=7:dim MODE_CHANGE_COUNT[MODE_CHANGE_NUM]:'モード切替時間 1面:0 2-4面:1 5面以降:2 1000 '================ メインルーチン ================ 1100 '---------- 初期設定 ------------ 1110 PACMAN_MULTIPLIER=PACMAN_ANIME_NUM+1:'4ステップ 1130 MAP_S_WIDTH=MAP_X_NUM*MAP_CELL_S_SIZE:MAP_S_HIGHT=MAP_Y_NUM*MAP_CELL_S_SIZE-2:'縮小マップエリア(MAP_S)の座標設定 1140 MAP_S_AREA_X=SCREEN_WIDTH-MAP_S_WIDTH:MAP_S_AREA_Y=0 1150 MAP_L_WIDTH=MAP_X_NUM*MAP_CELL_SIZE:MAP_L_HIGHT=MAP_Y_NUM*MAP_CELL_SIZE:'マップエリア(MAP_L)の座標設定 1160 MAP_L_AREA_X=0:MAP_L_AREA_Y=0:MAP_L_AREA_WIDTH=SCREEN_WIDTH-MAP_S_WIDTH-2:MAP_L_AREA_HIGHT=SCREEN_HIGHT 1170 MAP_L_FM=createFM(MAP_L_WIDTH,MAP_L_HIGHT):'マップのフレームメモリー 1180 MAP_S_FM=createFM(MAP_S_WIDTH,MAP_S_HIGHT):'縮小マップのフレームメモリー 1190 MAP_L_CENTER_X=MAP_L_AREA_WIDTH/2-CHAR_SIZE/2-1:MAP_L_CENTER_Y=MAP_L_AREA_HIGHT/2-CHAR_SIZE/2-1 1310 SCORE_X=SCREEN_WIDTH-MAP_S_WIDTH+4:SCORE_Y=SCREEN_HIGHT-FONT_HIGHT+1 1320 END_PROGRAM=0:'プログラム終了:1 継続:0 1330 MAP_L_AREA_FM=createFM(MAP_L_AREA_WIDTH,MAP_L_AREA_HIGHT):'マップエリアのフレームメモリー 2000 '-------------------- メインループ --------------------- 2010 while END_PROGRAM=0 2030 gosub 63000:'待機画面 2040 if END_PROGRAM=1 then exit while 2050 END_GAME=0:'ゲーム終了:1 継続:0 2060 SCORE=0:'スコア 2070 STAGE=1:'面数 2080 LIFE=3:'初期ライフ 2100 while END_GAME=0 2110 cls F 2120 if LIFE=3 then gosub 40000:COOKIE_NUM=0:'マップの定義 2130 gosub 5200:'マップの描画 2140 gosub 5000:'縮小マップの描画 2150 gosub 5300:'縮小マップの表示 2190 update 2200 gosub 9500:'モード切替テーブルの展開 2250 gosub 3000:'面開始 2300 if END_GAME=1 then gosub 63700:'ステージ終了画面 2450 end while 2500 end while 2570 sound 0,"L8.":play 0:'音を消す 2580 sound 1,"L8.":play 1:'音を消す 2590 cls:end:'終了 3000 '----------------- ゲームメイン ------------------ 3010 COUNT=0:'ゲーム内時間 3020 STAGE_CLEAR=0:GAME_OVER=0:'ステージクリア(ゲームオーバー)でない:0  ステージクリア(ゲームオーバー):1 3030 POWER_UP_COUNT=0:'パワーアップしていない:0 パワーアップ中:0以外 3040 PAC_MOVE_SKIP_COUNT=0:'バックマンの移動をスキップするカウンタ、エサを食べると1になる 3050 for I=0 to GHOST_NUM-1:IDX=I:gosub 6400:GHOST_X[I]=X:GHOST_Y[I]=Y:GHOST_DIR[I]=DIR:GHOST_FRIGHTENED_MODE[I]=0:GHOST_SLEEP_COUNT[I]=0:next:GHOST_MODE=GHOST_MODE_SCATTER:'ゴースト関連の変数の初期化 3060 PAC_X=(MAP_X_NUM/2-1)*PACMAN_MULTIPLIER+PACMAN_MULTIPLIER/2:'パックマンの座標は、マップ1セルを4として計算する座標系で表す 3070 PAC_Y=PACMAN_MULTIPLIER*15:PAC_DIR=STOP 3080 COOKIE_BONUS_RATE=1 3090 sound 0,SOUND02:'クッキーを食べる音をチャネル0にセット 3100 while STAGE_CLEAR=0 && GAME_OVER=0 3110 cls F,MAP_L_AREA_FM:'マップエリアの消去 3120 gosub 5700:'マップの表示 3130 gosub 5400:'パックマンの表示 3140 gosub 5450:'パックマンの表示(縮小マップ) 3145 if mod(COUNT,4)<3 then gosub 6700:'ゴーストの表示(縮小マップ) 3150 if mod(COUNT,10)=0 then gosub 6000:'パワーアップエサの点滅 3160 gosub 30000:'スコアの表示 3170 gosub 6500:'ゴーストの表示 3290 put 0,0,MAP_L_AREA_FM,set,F:'マップエリアを画面に表示 3300 update 3310 gosub 5450:'パックマンの消去(縮小マップ) 3315 if mod(COUNT,4)<3 then gosub 6700:'ゴーストの消去(縮小マップ) 3320 if PAC_MOVE_SKIP_COUNT=0 then gosub 5500 else PAC_MOVE_SKIP_COUNT=PAC_MOVE_SKIP_COUNT-1:'パックマン移動 3330 SLEEP_TIME=20-STAGE:if SLEEP_TIME<0 then SLEEP_TIME=0 else sleep SLEEP_TIME 3340 COUNT=COUNT+1 3350 if POWER_UP_COUNT<>0 then 3360 if sound1status()=0 then sound 1,SOUND03:play 1:'いじけ音を鳴らす 3370 POWER_UP_COUNT=POWER_UP_COUNT-1:if POWER_UP_COUNT=0 then for I=0 to GHOST_NUM-1:GHOST_FRIGHTENED_MODE[I]=0:COOKIE_BONUS_RATE=1:next:sound 1,"L32.":play 1 3380 end if 3390 gosub 8000:'衝突判定 3400 gosub 7000:'ゴースト移動 3410 gosub 9600:'モード切替 3600 if keyA()=1 && keyB()=1 then GAME_OVER=1:END_GAME=1:END_PROGRAM=1:exit while 3610 end while 3690 return 5000 '-------------- 縮小マップの描画 ------------------ 5005 cls F,MAP_S_FM 5010 for Y=0 to MAP_Y_NUM-1 5020 for X=0 to MAP_X_NUM-1 5030 MAP_FM_IDX=inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y],X,X+1),0) 5040 if MAP_FM_IDX<=23 then 5050 MAP_CELL_S_IDX=0:'壁 5060 else 5070 MAP_CELL_S_IDX=MAP_FM_IDX-23 5080 end if 5090 put X*MAP_CELL_S_SIZE,Y*MAP_CELL_S_SIZE-1,MAP_CELL_S_FM[MAP_CELL_S_IDX],set,F,MAP_S_FM 5100 next 5110 next 5120 return 5200 '-------------- マップの描画 ------------------ 5205 cls F,MAP_L_FM 5210 for Y=0 to MAP_Y_NUM-1 5220 for X=0 to MAP_X_NUM-1 5230 MAP_FM_IDX=inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y],X,X+1),0) 5235 if MAP_FM_IDX=COOKIE_FM_IDX || MAP_FM_IDX=POWERUP_FM_IDX then COOKIE_NUM=COOKIE_NUM+1 5240 put X*MAP_CELL_SIZE,Y*MAP_CELL_SIZE,MAP_CELL_FM[MAP_FM_IDX],set,F,MAP_L_FM 5250 next 5260 next 5270 return 5300 '-------------- 縮小マップの表示 ------------------ 5310 put MAP_S_AREA_X,MAP_S_AREA_Y,MAP_S_FM,set,F 5320 return 5400 '--------------- パックマン表示 ----------------- 5410 PAC_ANIME_IDX=mod((PAC_X+PAC_Y),PACMAN_MULTIPLIER):if PAC_ANIME_IDX=3 then PAC_ANIME_IDX=1 5420 if PAC_DIR=STOP then IDX=0 else IDX=PAC_DIR*PACMAN_ANIME_NUM+PAC_ANIME_IDX 5430 put MAP_L_CENTER_X,MAP_L_CENTER_Y,PACMAN_FM[IDX],or,F,MAP_L_AREA_FM:' MAP_L_AREA_X、MAP_L_AREA_Yを足すのが正しいがどちらも0なので速度を優先して加算しない 5440 return 5450 '--------------- パックマン表示(縮小マップ) ----------------- 5460 X=PAC_X/PACMAN_MULTIPLIER:Y=PAC_Y/PACMAN_MULTIPLIER 5470 put MAP_S_AREA_X+X*MAP_CELL_S_SIZE,MAP_S_AREA_Y+Y*MAP_CELL_S_SIZE-1,MAP_CELL_S_FM[0],xor,F:'縮小マップ表示 5480 return 5500 '-------------- パックマン移動 ------------------- 5510 NEXT_X=PAC_X:NEXT_Y=PAC_Y:CHECK_POINT=0 5520 if PAC_DIR=UP then NEXT_Y=NEXT_Y-1:CHECK_POINT=mod(PAC_Y,PACMAN_MULTIPLIER) 5530 if PAC_DIR=DOWN then NEXT_Y=NEXT_Y+1:CHECK_POINT=mod(PAC_Y,PACMAN_MULTIPLIER) 5540 if PAC_DIR=RIGHT then NEXT_X=NEXT_X+1:CHECK_POINT=mod(PAC_X,PACMAN_MULTIPLIER) 5560 if PAC_DIR=LEFT then NEXT_X=NEXT_X-1:CHECK_POINT=mod(PAC_X,PACMAN_MULTIPLIER) 5561 ' --- ワープ -- 5562 if NEXT_X<0 then NEXT_X=(MAP_X_NUM-1)*PACMAN_MULTIPLIER 5565 if NEXT_X>(MAP_X_NUM-1)*PACMAN_MULTIPLIER then NEXT_X=0 5567 '------------- 5570 if CHECK_POINT=0 then 5580 X=PAC_X/PACMAN_MULTIPLIER:Y=PAC_Y/PACMAN_MULTIPLIER:DIR_CHANGE=0:'移動前のX,Y 5590 if keyU()=1 && PAC_DIR<>UP then if inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y-1],X,X+1),0)>=COOKIE_FM_IDX then PAC_DIR=UP:DIR_CHANGE=1 5600 if keyD()=1 && PAC_DIR<>DOWN then if inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y+1],X,X+1),0)>=COOKIE_FM_IDX then PAC_DIR=DOWN:DIR_CHANGE=1 5610 if keyR()=1 && PAC_DIR<>RIGHT then if inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y],X+1,X+2),0)>=COOKIE_FM_IDX then PAC_DIR=RIGHT:DIR_CHANGE=1 5620 if keyL()=1 && PAC_DIR<>LEFT then if inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y],X-1,X),0)>=COOKIE_FM_IDX then PAC_DIR=LEFT:DIR_CHANGE=1 5625 if DIR_CHANGE=0 then 5630 X=NEXT_X/PACMAN_MULTIPLIER:Y=NEXT_Y/PACMAN_MULTIPLIER:'移動後のX,Y 5640 ' UP,LEFTは切り捨てられて次の位置を示す。 5650 if mod(NEXT_X,PACMAN_MULTIPLIER)<>0 && PAC_DIR=RIGHT then X=X+1 5660 if mod(NEXT_Y,PACMAN_MULTIPLIER)<>0 && PAC_DIR=DOWN then Y=Y+1 5670 MAP_FM_IDX=inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y],X,X+1),0) 5680 if MAP_FM_IDX| ↓↓↓↓ 5760 ' | +------------------------------------- 5770 ' | | | 5780 ' | | | 5790 ' | | | 5800 ' | | + (PAC_X*7/4+CHAR_SIZE/2,PAC_Y*7/4+CHAR_SIZE/2) ← マップのフレームメモリ上のパックマンの中心座標 5810 X=PAC_X*MAP_CELL_SIZE/PACMAN_MULTIPLIER+CHAR_SIZE/2-MAP_L_AREA_WIDTH/2 5820 DX=0:if X<0 then DX=X:X=0 5830 Y=PAC_Y*MAP_CELL_SIZE/PACMAN_MULTIPLIER+CHAR_SIZE/2-MAP_L_AREA_HIGHT/2 5840 DY=0:if Y<0 then DY=Y:Y=0 5850 WIDTH=DX+MAP_L_AREA_WIDTH:HIGHT=DY+MAP_L_AREA_HIGHT 5860 if MAP_L_WIDTH16 ||( POWER_UP_COUNT<=16 && mod(COUNT,4)<3 ) then put X,Y,GHOST_FM[GHOST_FRIGHTENED],or,F,MAP_L_AREA_FM 6560 next 6570 return 6700 '------------------ ゴーストの表示(縮小マップ)--------------------- 6720 for I=0 to GHOST_NUM-1 6750 X=GHOST_X[I]/PACMAN_MULTIPLIER:Y=GHOST_Y[I]/PACMAN_MULTIPLIER 6760 put MAP_S_AREA_X+X*MAP_CELL_S_SIZE,MAP_S_AREA_Y+Y*MAP_CELL_S_SIZE-1,MAP_CELL_S_FM[0],xor,F:'縮小マップ表示 6780 next 6790 return 7000 '================== ゴースト移動 ======================= 7010 for I=0 to GHOST_NUM-1 7015 if GHOST_SLEEP_COUNT[I]=0 then:'やられていない時 7020 XY=mod(GHOST_DIR[I],2):'0:X方向の移動,1:Y方向の移動 7030 if XY=1 then CHECK_POINT=mod(GHOST_Y[I],PACMAN_MULTIPLIER) else CHECK_POINT=mod(GHOST_X[I],PACMAN_MULTIPLIER) 7040 'print format("I:%D ",I)+format("X,Y:%D,",GHOST_X[I])+format("%D ",GHOST_Y[I])+format("DIR:%D ",GHOST_DIR[I])+format("CP:%D",CHECK_POINT) 7050 DIR=GHOST_DIR[I] 7060 if CHECK_POINT=0 then 7070 '========= チェックポイントの場合 =============== 7080 IDX=I:gosub 9000:'ターゲットタイルの決定 7090 'print format("TX:%D ",GHOST_TX[I])+format("TY:%D",GHOST_TY[I]) 7100 '--------- DIRを決める ---------- 7101 ' 〇イジケモードの時 7102 ' 交差点で乱数で方向を決める(ただし、逆走はしない) 7104 ' 〇イジケモード以外 7105 ' 1. 進行方向とは逆の軸(X方向に進行中の時はY、Y方向に進行中の場合はX)のターゲットタイルの座標に差がある時、 7110 ' 1)差が縮む方向に進めれば、その方向を選択する。 7120 ' 2)直進できれば、直進を選択する。 7130 ' 3)1)とは逆方向に進めればその方向を選択する。 7140 ' 4)逆走を選択する。 7150 ' 2.進行方向とは逆の軸(X方向に進行中の時はY、Y方向に進行中の場合はX)のターゲットタイルの座標に差がない時、 7160 ' 1)直進できれば、直進を選択する。 7170 ' 2)右に曲がれれば、左を選択する。 7180 ' 3)左に曲がれれば、左を選択する。 7190 ' 4)逆走を選択する。 7200 X=GHOST_X[I]/PACMAN_MULTIPLIER:Y=GHOST_Y[I]/PACMAN_MULTIPLIER 7205 if GHOST_FRIGHTENED_MODE[I]=0 then:' イジケモードでない時 7210 if XY=1 then :'Y方向に進んでいる 7220 DX=GHOST_TX[I]-GHOST_X[I] 7230 if DX<>0 then:'X方向の差がある場合 7240 if DX<0 then:'ターゲットタイルは左 7250 if inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y],X-1,X),0)>=COOKIE_FM_IDX then:'左が壁でない場合 7252 DIR=LEFT 7253 else:'左が壁だった場合 7256 if (DIR=UP && inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y-1],X,X+1),0)=COOKIE_FM_IDX then DIR=RIGHT else DIR=(DIR=UP)*DOWN+(DIR=DOWN)*UP:'右に行ければ右、そうでなければ逆走 7258 end if:'直進できる場合は、今の方向 7259 end if 7260 else:'ターゲットタイルは右 7270 if inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y],X+1,X+2),0)>=COOKIE_FM_IDX then:'右が壁でない場合 7272 DIR=RIGHT 7275 else:'右が壁だった場合 7276 if (DIR=UP && inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y-1],X,X+1),0)=COOKIE_FM_IDX then DIR=LEFT else DIR=(DIR=UP)*DOWN+(DIR=DOWN)*UP:'左に行ければ左、そうでなければ逆走 7278 end if:'直進できる場合は、直進 7279 end if 7280 end if 7290 else:'X方向の差がない場合 7300 if (DIR=UP && inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y-1],X,X+1),0)=COOKIE_FM_IDX then DIR=RIGHT else if inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y],X-1,X),0)>=COOKIE_FM_IDX then DIR=LEFT else DIR=(DIR=UP)*DOWN+(DIR=DOWN)*UP 7320 end if:'直進できる場合は、直進 7330 end if 7400 else:' X方向に進んでいる(ゴーストは止まらないので、Y方向でなければX方向に進んでいる) 7420 DY=GHOST_TY[I]-GHOST_Y[I] 7430 if DY<>0 then:'Y方向の差がある場合 7440 if DY<0 then:'ターゲットタイルは上 7450 if ((X<9 || 1811 && Y<>21 )) && inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y-1],X,X+1),0)>=COOKIE_FM_IDX then :'上に行ける場合 7452 DIR=UP 7455 else:'上が壁だった場合 7456 if (DIR=LEFT && inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y],X-1,X),0)=COOKIE_FM_IDX then DIR=DOWN else DIR=(DIR=LEFT)*RIGHT+(DIR=RIGHT)*LEFT:'下に行ければ下、そうでなければ逆走 7458 end if:'直進できる場合は、今の方向 7459 end if 7460 else:'ターゲットタイルは下 7470 if inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y+1],X,X+1),0)>=COOKIE_FM_IDX then:'下が壁でない場合 7471 DIR=DOWN 7472 else:'下が壁だった場合 7473 if Y=13 && inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y-1],X,X+1),0)>=COOKIE_FM_IDX then:'ホームの時、上が空いていたら上を選択 7474 DIR=UP 7475 else 7476 if (DIR=LEFT && inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y],X-1,X),0)=COOKIE_FM_IDX then DIR=UP else DIR=(DIR=LEFT)*RIGHT+(DIR=RIGHT)*LEFT:'上に行ければ上、そうでなければ逆走 7478 end if:'直進できる場合は、直進 7479 end if 7480 end if 7485 end if 7490 else:'Y方向の差がない場合 7500 if (DIR=LEFT && inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y],X-1,X),0)=COOKIE_FM_IDX then DIR=UP else if inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y+1],X,X+1),0)>=COOKIE_FM_IDX then DIR=DOWN else DIR=(DIR=LEFT)*RIGHT+(DIR=RIGHT)*LEFT 7520 end if:'直進できる場合は、直進 7530 end if 7540 end if 7600 else :' イジケモードの時 7610 while -1 7620 DIR=rand()*DIR_NUM/255:if DIR=DIR_NUM then DIR=LEFT 7630 if DIR=LEFT && (GHOST_DIR[I]<>RIGHT || Y=13)&& inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y],X-1,X),0)>=COOKIE_FM_IDX then exit while 7640 if DIR=RIGHT && (GHOST_DIR[I]<>LEFT || Y=13)&& inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y],X+1,X+2),0)>=COOKIE_FM_IDX then exit while 7650 if DIR=UP && GHOST_DIR[I]<>DOWN && inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y-1],X,X+1),0)>=COOKIE_FM_IDX then exit while 7660 if DIR=DOWN && GHOST_DIR[I]<>UP && inStr(CHAR_TO_MAP_CELL_IDX,mid( MAP[Y+1],X,X+1),0)>=COOKIE_FM_IDX then exit while 7670 end while 7680 end if 7690 end if 7700 GHOST_DIR[I]=DIR 7710 XY=mod(GHOST_DIR[I],2):'0:X方向の移動,1:Y方向の移動 7720 if GHOST_FRIGHTENED_MODE[I]=0 || (GHOST_FRIGHTENED_MODE[I]=1 && mod(COUNT,2)=0) then if XY=1 then GHOST_Y[I]=GHOST_Y[I]+GHOST_DIR[I]-2 else GHOST_X[I]=GHOST_X[I]+GHOST_DIR[I]-1:'DIRの方向に移動する 7730 else:'やられた後のペナルティ中 7740 GHOST_SLEEP_COUNT[I]=GHOST_SLEEP_COUNT[I]-1 7750 end if 7980 next 7990 return 8000 '======================== 衝突判定 ======================== 8100 COLLISION=0:IDX=0 8110 for I=0 to GHOST_NUM-1 8120 if isCol(PAC_X,PAC_Y,PACMAN_MULTIPLIER,PACMAN_MULTIPLIER,GHOST_X[I],GHOST_Y[I],PACMAN_MULTIPLIER,PACMAN_MULTIPLIER)=1 then COLLISION=1:IDX=I:exit for 8130 next 8135 if COLLISION=1 then 8140 if GHOST_FRIGHTENED_MODE[IDX]=0 then:'パックマンが捕まった 8150 GAME_OVER=1:sound 1,SOUND05:play 1:'死亡音を鳴らす 8155 if PAC_DIR=STOP then PAC_DIR=UP 8160 for I=0 to PACMAN_ANIME_NUM-1 8170 IDX=PAC_DIR*PACMAN_ANIME_NUM+I 8190 put MAP_L_CENTER_X,MAP_L_CENTER_Y,PACMAN_FM[IDX],set,F,MAP_L_AREA_FM 8200 put 0,0,MAP_L_AREA_FM,set:'マップエリアを画面に表示 8210 sleep 500 8220 next 8225 LIFE=LIFE-1:if LIFE=0 then END_GAME=1 8230 else :'パックマンが?みついた 8240 SCORE=SCORE+200*COOKIE_BONUS_RATE 8250 sound 1,SOUND04:play 1:'噛みつき音を鳴らす 8260 X=MAP_L_CENTER_X+(GHOST_X[IDX]-PAC_X)*MAP_CELL_SIZE/PACMAN_MULTIPLIER 8270 Y=MAP_L_CENTER_Y+(GHOST_Y[IDX]-PAC_Y)*MAP_CELL_SIZE/PACMAN_MULTIPLIER 8280 putStr X-1,Y-1,format("%D",200*COOKIE_BONUS_RATE),1,set,F,MAP_L_AREA_FM 8285 put 0,0,MAP_L_AREA_FM,set:'マップエリアを画面に表示 8290 sleep 500:COOKIE_BONUS_RATE=COOKIE_BONUS_RATE*2 8300 gosub 6400:GHOST_X[IDX]=X:GHOST_Y[IDX]=Y:GHOST_DIR[IDX]=DIR:GHOST_FRIGHTENED_MODE[IDX]=0:GHOST_SLEEP_COUNT[I]=16*3 8370 end if 8380 end if 8390 return 9000 '------------------ ターゲットタイルの設定 -------------------- 9010 if GHOST_MODE=GHOST_MODE_SCATTER then 9020 GHOST_TX[IDX]=val(mid(GHOST_TARGET_TILE,IDX*4,IDX*4+2))*PACMAN_MULTIPLIER 9030 GHOST_TY[IDX]=val(mid(GHOST_TARGET_TILE,IDX*4+2,IDX*4+4))*PACMAN_MULTIPLIER 9040 else 9050 if IDX=0 then GHOST_TX[IDX]=PAC_X:GHOST_TY[IDX]=PAC_Y:' アカべエ:パックマンの座標 9060 if IDX=1 then:' ピンキー:パックマンの4マス先 9070 GHOST_TX[IDX]=(PAC_DIR=STOP)*PAC_X+(PAC_DIR<>STOP)*(PAC_X+(mod(PAC_DIR,2)=0)*(PAC_DIR-1)*16) 9080 GHOST_TY[IDX]=(PAC_DIR=STOP)*PAC_Y+(PAC_DIR<>STOP)*(PAC_Y+(mod(PAC_DIR,2)=1)*(PAC_DIR-2)*16) 9090 end if 9100 if IDX=2 then:' アオスケ:「アカベエの位置」と「パックマンの2マス先」を結んだベクトルの2倍伸ばした先 9200 X=(PAC_DIR=STOP)*PAC_X+(PAC_DIR<>STOP)*(PAC_X+(mod(PAC_DIR,2)=0)*(PAC_DIR-1)*16) 9210 Y=(PAC_DIR=STOP)*PAC_Y+(PAC_DIR<>STOP)*(PAC_Y+(mod(PAC_DIR,2)=1)*(PAC_DIR-2)*16) 9220 GHOST_TX[IDX]=GHOST_X[0]+2*(X-GHOST_X[0]) 9230 GHOST_TY[IDX]=GHOST_Y[0]+2*(Y-GHOST_Y[0]) 9240 end if 9250 if IDX=3 then:'グズタ:8マス以内に近づくと自分の縄張り、そうでなければアカべーと同じ 9260 if abs(PAC_X-GHOST_X[IDX])+abs(PAC_Y-GHOST_Y[IDX])<64 then 9270 GHOST_TX[IDX]=val(mid(GHOST_TARGET_TILE,IDX*4,IDX*4+2))*PACMAN_MULTIPLIER 9280 GHOST_TY[IDX]=val(mid(GHOST_TARGET_TILE,IDX*4+2,IDX*4+4))*PACMAN_MULTIPLIER 9290 else 9300 GHOST_TX[3]=PAC_X:GHOST_TY[3]=PAC_Y 9310 end if 9320 end if 9325 'print format("%D: ",IDX)+format("%-3D,",GHOST_TX[IDX])+format("%-3D",GHOST_TY[IDX]) 9330 end if 9490 return 9500 '------------------ モード切替テーブルの展開 --------------------- 9510 if STAGE=1 then IDX=0 else if STAGE<5 then IDX=1 else IDX=2 9520 PREV_COUNT=0 9530 for I=0 to MODE_CHANGE_NUM-1 9540 MODE_CHANGE_COUNT[I]=PREV_COUNT+val(mid(MODE_CHANGE_TABLE[IDX],I*4,I*4+4))*16 9550 PREV_COUNT=MODE_CHANGE_COUNT[I] 9555 'print format("I:%D ",I)+format("%D",PREV_COUNT) 9560 next 9570 return 9600 '------------------ モード切替 ------------------------- 9610 MODE=GHOST_MODE_CHASE 9620 for I=0 to MODE_CHANGE_NUM-1 9630 if COUNT GHOST_MODE then 9660 GHOST_MODE=MODE 9665 'print format("--Mode Change-- %D:",I)+format("%D",GHOST_MODE) 9670 for I=0 to GHOST_NUM-1 9680 if GHOST_FRIGHTENED_MODE[I]=0 then GHOST_DIR[I]=GHOST_DIR[I]+2:if GHOST_DIR[I]>=DIR_NUM then GHOST_DIR[I]=GHOST_DIR[I]-DIR_NUM:'イジケモードでないとき、逆走に設定 9690 next 9700 end if 9710 return 30000 '---------------- スコア表示 ------------------- 30010 putStr SCORE_X,SCORE_Y,format("%-6D ",SCORE)+format("%D",LIFE),1,set,F 30020 return 40000 '----------------マップ----------------- 40010 MAP[ 0]="+============Tt============7" 40020 MAP[ 1]="|............II............i" 40030 MAP[ 2]="|.r--?.r---?.II.r---?.r--?.i" 40040 MAP[ 3]="|0I I.I I.II.I I.I I0i" 40050 MAP[ 4]="|.L--J.L---J.LJ.L---J.L--J.i" 40060 MAP[ 5]="|..........................i" 40070 MAP[ 6]="|.r--?.r?.r------?.r?.r--?.i" 40080 MAP[ 7]="|.L--J.II.L--?r--J.II.L--J.i" 40090 MAP[ 8]="|......II....II....II......i" 40100 MAP[ 9]="l~~~~8.IL--? II r--JI.1~~~~j" 40110 MAP[10]=" |.Ir--J LJ L--?I.i " 40120 MAP[11]=" |.II II.i " 40130 MAP[12]="=====9.LJ +== ==7 LJ.2=====" 40140 MAP[13]=" . | i . " 40150 MAP[14]="~~~~~8.r? l~~~~~~j r?.1~~~~~" 40160 MAP[15]=" |.II II.i " 40170 MAP[16]=" |.II r------? II.i " 40180 MAP[17]="+====9.LJ L--?r--J LJ.2====7" 40190 MAP[18]="|............II............i" 40200 MAP[19]="|.r--?.r---?.LJ.r---?.r--?.i" 40210 MAP[20]="|.L-?I.L---J. .L---J.Ir-J.i" 40220 MAP[21]="|0..II....... .......II..0i" 40230 MAP[22]="F-?.II.r?.r------?.r?.II.r-G" 40240 MAP[23]="f-J.LJ.II.L--?r--J.II.LJ.L-g" 40250 MAP[24]="|......II....II....II......i" 40260 MAP[25]="|.r----JL--?.II.r--JL----?.i" 40270 MAP[26]="|.L--------J.LJ.L--------J.i" 40280 MAP[27]="|..........................i" 40290 MAP[28]="l~~~~~~~~~~~~~~~~~~~~~~~~~~j" 40300 GHOST_TARGET_TILE="0000270027280028":'いじけモードの時のターゲットタイルの座標を2文字ずつ4文字でゴースト1体の座標を表す。アカべエ、ピンキー、アオスケ、グズタの順 40310 MODE_CHANGE_TABLE[0]="0007002000070020000500200005":MODE_CHANGE_TABLE[1]="0007002000050020000510330001":MODE_CHANGE_TABLE[2]="0005002000050020000510370001":'16カウントを1秒と見なす 40395 return 50000 PACMAN_ANIME_NUM=3:dim PACMAN_FM[PACMAN_ANIME_NUM*DIR_NUM] 50010 PACMAN_FM[0]=createFM(CHAR_SIZE,CHAR_SIZE):'10x10dotバージョン 50020 setBM PACMAN_FM[0], 0,"0001111000" 50030 setBM PACMAN_FM[0], 1,"0111111110" 50040 setBM PACMAN_FM[0], 2,"0111111110" 50050 setBM PACMAN_FM[0], 3,"1111111111" 50060 setBM PACMAN_FM[0], 4,"1111111111" 50070 setBM PACMAN_FM[0], 5,"1111111111" 50075 setBM PACMAN_FM[0], 6,"1111111111" 50080 setBM PACMAN_FM[0], 7,"0111111110" 50090 setBM PACMAN_FM[0], 8,"0111111110" 50092 setBM PACMAN_FM[0], 9,"0001111000" 50100 PACMAN_FM[1]=createFM(CHAR_SIZE,CHAR_SIZE) 50120 setBM PACMAN_FM[1], 0,"0001111000" 50130 setBM PACMAN_FM[1], 1,"0011111110" 50140 setBM PACMAN_FM[1], 2,"0001111110" 50150 setBM PACMAN_FM[1], 3,"0000111111" 50160 setBM PACMAN_FM[1], 4,"0000011111" 50170 setBM PACMAN_FM[1], 5,"0000011111" 50175 setBM PACMAN_FM[1], 6,"0000111111" 50180 setBM PACMAN_FM[1], 7,"0001111110" 50190 setBM PACMAN_FM[1], 8,"0011111110" 50192 setBM PACMAN_FM[1], 9,"0001111000" 50210 PACMAN_FM[2]=createFM(CHAR_SIZE,CHAR_SIZE) 50220 setBM PACMAN_FM[2], 0,"0001111000" 50230 setBM PACMAN_FM[2], 1,"0001111110" 50240 setBM PACMAN_FM[2], 2,"0000111110" 50250 setBM PACMAN_FM[2], 3,"0000111111" 50260 setBM PACMAN_FM[2], 4,"0000011111" 50270 setBM PACMAN_FM[2], 5,"0000011111" 50275 setBM PACMAN_FM[2], 6,"0000111111" 50280 setBM PACMAN_FM[2], 7,"0000111111" 50290 setBM PACMAN_FM[2], 8,"0001111110" 50292 setBM PACMAN_FM[2], 9,"0001111110" 50294 setBM PACMAN_FM[2],10,"0001111000" 50300 for I=UP to DOWN 50310 for J=0 to PACMAN_ANIME_NUM-1 50320 PACMAN_FM[I*PACMAN_ANIME_NUM+J]=createFM(CHAR_SIZE,CHAR_SIZE) 50330 SRC_FM=PACMAN_FM[(I-1)*PACMAN_ANIME_NUM+J]:DIST_FM=PACMAN_FM[I*PACMAN_ANIME_NUM+J] 50340 gosub 58100:'SRC_FM -90°回転-> DIST_FM 50350 next 50360 next 50400 dim GHOST_FM[DIR_NUM+2] 50510 GHOST_FM[LEFT]=createFM(CHAR_SIZE,CHAR_SIZE) 50520 setBM GHOST_FM[LEFT], 0,"0001111000" 50530 setBM GHOST_FM[LEFT], 1,"0001000110" 50540 setBM GHOST_FM[LEFT], 2,"0101010110" 50550 setBM GHOST_FM[LEFT], 3,"0101010111" 50560 setBM GHOST_FM[LEFT], 4,"0001000111" 50570 setBM GHOST_FM[LEFT], 5,"1111111111" 50575 setBM GHOST_FM[LEFT], 6,"1111111111" 50580 setBM GHOST_FM[LEFT], 7,"1111111111" 50590 setBM GHOST_FM[LEFT], 8,"1111111111" 50592 setBM GHOST_FM[LEFT], 9,"0110110110" 50610 GHOST_FM[UP]=createFM(CHAR_SIZE,CHAR_SIZE) 50620 setBM GHOST_FM[UP], 0,"0001111000" 50630 setBM GHOST_FM[UP], 1,"0010110100" 50640 setBM GHOST_FM[UP], 2,"0010110100" 50650 setBM GHOST_FM[UP], 3,"1000110001" 50660 setBM GHOST_FM[UP], 4,"1101111011" 50670 setBM GHOST_FM[UP], 5,"1111111111" 50675 setBM GHOST_FM[UP], 6,"1111111111" 50680 setBM GHOST_FM[UP], 7,"1111111111" 50690 setBM GHOST_FM[UP], 8,"1111111111" 50692 setBM GHOST_FM[UP], 9,"0110110110" 50693 GHOST_FM[RIGHT]=createFM(CHAR_SIZE,CHAR_SIZE) 50694 SRC_FM=GHOST_FM[LEFT]:DIST_FM=GHOST_FM[RIGHT] 50695 gosub 58200:'セルを左右反転させる 50710 GHOST_FM[DOWN]=createFM(CHAR_SIZE,CHAR_SIZE) 50720 setBM GHOST_FM[DOWN], 0,"0001111000" 50730 setBM GHOST_FM[DOWN], 1,"0111111110" 50740 setBM GHOST_FM[DOWN], 2,"0101111010" 50750 setBM GHOST_FM[DOWN], 3,"1000110001" 50760 setBM GHOST_FM[DOWN], 4,"1010110101" 50770 setBM GHOST_FM[DOWN], 5,"1101111011" 50775 setBM GHOST_FM[DOWN], 6,"1111111111" 50780 setBM GHOST_FM[DOWN], 7,"1111111111" 50790 setBM GHOST_FM[DOWN], 8,"1111111111" 50792 setBM GHOST_FM[DOWN], 9,"0110110110" 50810 GHOST_FM[GHOST_FRIGHTENED]=createFM(CHAR_SIZE,CHAR_SIZE) 50820 setBM GHOST_FM[GHOST_FRIGHTENED], 0,"0001111000" 50830 setBM GHOST_FM[GHOST_FRIGHTENED], 1,"0100000010" 50840 setBM GHOST_FM[GHOST_FRIGHTENED], 2,"0100000010" 50850 setBM GHOST_FM[GHOST_FRIGHTENED], 3,"1000000001" 50860 setBM GHOST_FM[GHOST_FRIGHTENED], 4,"1011001101" 50870 setBM GHOST_FM[GHOST_FRIGHTENED], 5,"1000110001" 50875 setBM GHOST_FM[GHOST_FRIGHTENED], 6,"1011001101" 50880 setBM GHOST_FM[GHOST_FRIGHTENED], 7,"1000000001" 50890 setBM GHOST_FM[GHOST_FRIGHTENED], 8,"1000000001" 50892 setBM GHOST_FM[GHOST_FRIGHTENED], 9,"0110110110" 50910 GHOST_FM[GHOST_MASK]=createFM(CHAR_SIZE+2,CHAR_SIZE+2) 50915 setBM GHOST_FM[GHOST_MASK], 0,"111100001111" 50920 setBM GHOST_FM[GHOST_MASK], 1,"111000000111" 50930 setBM GHOST_FM[GHOST_MASK], 2,"100000000001" 50940 setBM GHOST_FM[GHOST_MASK], 3,"100000000001" 50950 setBM GHOST_FM[GHOST_MASK], 4,"000000000000" 50960 setBM GHOST_FM[GHOST_MASK], 5,"000000000000" 50970 setBM GHOST_FM[GHOST_MASK], 6,"000000000000" 50975 setBM GHOST_FM[GHOST_MASK], 7,"000000000000" 50980 setBM GHOST_FM[GHOST_MASK], 8,"000000000000" 50990 setBM GHOST_FM[GHOST_MASK], 9,"000000000000" 50992 setBM GHOST_FM[GHOST_MASK],10,"100000000001" 50995 setBM GHOST_FM[GHOST_MASK],11,"110010010011" 51000 MAP_CELL_NUM=27:dim MAP_CELL_FM[MAP_CELL_NUM]:MAP_CELL_FM[0]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'+ 51010 setBM MAP_CELL_FM[0], 0,"0000000" 51020 setBM MAP_CELL_FM[0], 1,"0011111" 51030 setBM MAP_CELL_FM[0], 2,"0100000" 51040 setBM MAP_CELL_FM[0], 3,"0100111" 51050 setBM MAP_CELL_FM[0], 4,"0101000" 51060 setBM MAP_CELL_FM[0], 5,"0101000" 51070 setBM MAP_CELL_FM[0], 6,"0101000" 51100 MAP_CELL_FM[1]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'= 51110 setBM MAP_CELL_FM[1], 0,"0000000" 51120 setBM MAP_CELL_FM[1], 1,"1111111" 51130 setBM MAP_CELL_FM[1], 2,"0000000" 51140 setBM MAP_CELL_FM[1], 3,"1111111" 51150 setBM MAP_CELL_FM[1], 4,"0000000" 51160 setBM MAP_CELL_FM[1], 5,"0000000" 51170 setBM MAP_CELL_FM[1], 6,"0000000" 51200 MAP_CELL_FM[2]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'T 51210 setBM MAP_CELL_FM[2], 0,"0000000" 51220 setBM MAP_CELL_FM[2], 1,"1111111" 51230 setBM MAP_CELL_FM[2], 2,"0000000" 51240 setBM MAP_CELL_FM[2], 3,"1110000" 51250 setBM MAP_CELL_FM[2], 4,"0001000" 51260 setBM MAP_CELL_FM[2], 5,"0001000" 51270 setBM MAP_CELL_FM[2], 6,"0001000" 51300 MAP_CELL_FM[3]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'t 51310 setBM MAP_CELL_FM[3], 0,"0000000" 51320 setBM MAP_CELL_FM[3], 1,"1111111" 51330 setBM MAP_CELL_FM[3], 2,"0000000" 51340 setBM MAP_CELL_FM[3], 3,"0000111" 51350 setBM MAP_CELL_FM[3], 4,"0001000" 51360 setBM MAP_CELL_FM[3], 5,"0001000" 51370 setBM MAP_CELL_FM[3], 6,"0001000" 51400 MAP_CELL_FM[4]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'7 51410 setBM MAP_CELL_FM[4], 0,"0000000" 51420 setBM MAP_CELL_FM[4], 1,"1111100" 51430 setBM MAP_CELL_FM[4], 2,"0000010" 51440 setBM MAP_CELL_FM[4], 3,"1110010" 51450 setBM MAP_CELL_FM[4], 4,"0001010" 51460 setBM MAP_CELL_FM[4], 5,"0001010" 51470 setBM MAP_CELL_FM[4], 6,"0001010" 51500 MAP_CELL_FM[5]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'i 51510 setBM MAP_CELL_FM[5], 0,"0001010" 51520 setBM MAP_CELL_FM[5], 1,"0001010" 51530 setBM MAP_CELL_FM[5], 2,"0001010" 51540 setBM MAP_CELL_FM[5], 3,"0001010" 51550 setBM MAP_CELL_FM[5], 4,"0001010" 51560 setBM MAP_CELL_FM[5], 5,"0001010" 51570 setBM MAP_CELL_FM[5], 6,"0001010" 51600 MAP_CELL_FM[6]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'| 51610 setBM MAP_CELL_FM[6], 0,"0101000" 51620 setBM MAP_CELL_FM[6], 1,"0101000" 51630 setBM MAP_CELL_FM[6], 2,"0101000" 51640 setBM MAP_CELL_FM[6], 3,"0101000" 51650 setBM MAP_CELL_FM[6], 4,"0101000" 51660 setBM MAP_CELL_FM[6], 5,"0101000" 51670 setBM MAP_CELL_FM[6], 6,"0101000" 51700 MAP_CELL_FM[7]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'l 51710 setBM MAP_CELL_FM[7], 0,"0101000" 51720 setBM MAP_CELL_FM[7], 1,"0101000" 51730 setBM MAP_CELL_FM[7], 2,"0101000" 51740 setBM MAP_CELL_FM[7], 3,"0100111" 51750 setBM MAP_CELL_FM[7], 4,"0100000" 51760 setBM MAP_CELL_FM[7], 5,"0011111" 51770 setBM MAP_CELL_FM[7], 6,"0000000" 51800 MAP_CELL_FM[8]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'~ 51810 setBM MAP_CELL_FM[8], 0,"0000000" 51820 setBM MAP_CELL_FM[8], 1,"0000000" 51830 setBM MAP_CELL_FM[8], 2,"0000000" 51840 setBM MAP_CELL_FM[8], 3,"1111111" 51850 setBM MAP_CELL_FM[8], 4,"0000000" 51860 setBM MAP_CELL_FM[8], 5,"1111111" 51870 setBM MAP_CELL_FM[8], 6,"0000000" 51900 MAP_CELL_FM[9]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'8 51910 setBM MAP_CELL_FM[9], 0,"0000000" 51920 setBM MAP_CELL_FM[9], 1,"0000000" 51930 setBM MAP_CELL_FM[9], 2,"0000000" 51940 setBM MAP_CELL_FM[9], 3,"1110000" 51950 setBM MAP_CELL_FM[9], 4,"0001000" 51960 setBM MAP_CELL_FM[9], 5,"1001000" 51970 setBM MAP_CELL_FM[9], 6,"0101000" 52000 MAP_CELL_FM[10]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'9 52010 setBM MAP_CELL_FM[10], 0,"0101000" 52020 setBM MAP_CELL_FM[10], 1,"1001000" 52030 setBM MAP_CELL_FM[10], 2,"0001000" 52040 setBM MAP_CELL_FM[10], 3,"1110000" 52050 setBM MAP_CELL_FM[10], 4,"0000000" 52060 setBM MAP_CELL_FM[10], 5,"0000000" 52070 setBM MAP_CELL_FM[10], 6,"0000000" 52100 MAP_CELL_FM[11]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'F 52110 setBM MAP_CELL_FM[11], 0,"0101000" 52120 setBM MAP_CELL_FM[11], 1,"0101000" 52130 setBM MAP_CELL_FM[11], 2,"0101000" 52140 setBM MAP_CELL_FM[11], 3,"0100111" 52150 setBM MAP_CELL_FM[11], 4,"0100000" 52160 setBM MAP_CELL_FM[11], 5,"0100000" 52170 setBM MAP_CELL_FM[11], 6,"0100000" 52200 MAP_CELL_FM[12]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'f 52210 setBM MAP_CELL_FM[12], 0,"0100000" 52220 setBM MAP_CELL_FM[12], 1,"0100000" 52230 setBM MAP_CELL_FM[12], 2,"0100000" 52240 setBM MAP_CELL_FM[12], 3,"0100111" 52250 setBM MAP_CELL_FM[12], 4,"0101000" 52260 setBM MAP_CELL_FM[12], 5,"0101000" 52270 setBM MAP_CELL_FM[12], 6,"0101000" 52300 MAP_CELL_FM[13]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'j 52310 setBM MAP_CELL_FM[13], 0,"0001010" 52320 setBM MAP_CELL_FM[13], 1,"0001010" 52330 setBM MAP_CELL_FM[13], 2,"0001010" 52340 setBM MAP_CELL_FM[13], 3,"1110010" 52350 setBM MAP_CELL_FM[13], 4,"0000010" 52360 setBM MAP_CELL_FM[13], 5,"1111100" 52370 setBM MAP_CELL_FM[13], 6,"0000000" 52400 MAP_CELL_FM[14]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'1 52410 setBM MAP_CELL_FM[14], 0,"0000000" 52420 setBM MAP_CELL_FM[14], 1,"0000000" 52430 setBM MAP_CELL_FM[14], 2,"0000000" 52440 setBM MAP_CELL_FM[14], 3,"0000111" 52450 setBM MAP_CELL_FM[14], 4,"0001000" 52460 setBM MAP_CELL_FM[14], 5,"0001001" 52470 setBM MAP_CELL_FM[14], 6,"0001010" 52500 MAP_CELL_FM[15]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'2 52510 setBM MAP_CELL_FM[15], 0,"0001010" 52520 setBM MAP_CELL_FM[15], 1,"0001001" 52530 setBM MAP_CELL_FM[15], 2,"0001000" 52540 setBM MAP_CELL_FM[15], 3,"0000111" 52550 setBM MAP_CELL_FM[15], 4,"0000000" 52560 setBM MAP_CELL_FM[15], 5,"0000000" 52570 setBM MAP_CELL_FM[15], 6,"0000000" 52600 MAP_CELL_FM[16]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'G 52610 setBM MAP_CELL_FM[16], 0,"0001010" 52620 setBM MAP_CELL_FM[16], 1,"0001010" 52630 setBM MAP_CELL_FM[16], 2,"0001010" 52640 setBM MAP_CELL_FM[16], 3,"1110010" 52650 setBM MAP_CELL_FM[16], 4,"0000010" 52660 setBM MAP_CELL_FM[16], 5,"0000010" 52670 setBM MAP_CELL_FM[16], 6,"0000010" 52700 MAP_CELL_FM[17]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'g 52710 setBM MAP_CELL_FM[17], 0,"0001010" 52720 setBM MAP_CELL_FM[17], 1,"0001010" 52730 setBM MAP_CELL_FM[17], 2,"0001010" 52740 setBM MAP_CELL_FM[17], 3,"1110010" 52750 setBM MAP_CELL_FM[17], 4,"0000010" 52760 setBM MAP_CELL_FM[17], 5,"0000010" 52770 setBM MAP_CELL_FM[17], 6,"0000010" 52800 MAP_CELL_FM[18]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'r 52810 setBM MAP_CELL_FM[18], 0,"0000000" 52820 setBM MAP_CELL_FM[18], 1,"0000000" 52830 setBM MAP_CELL_FM[18], 2,"0000000" 52840 setBM MAP_CELL_FM[18], 3,"0000111" 52850 setBM MAP_CELL_FM[18], 4,"0001000" 52860 setBM MAP_CELL_FM[18], 5,"0001000" 52870 setBM MAP_CELL_FM[18], 6,"0001000" 52900 MAP_CELL_FM[19]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'- 52910 setBM MAP_CELL_FM[19], 0,"0000000" 52920 setBM MAP_CELL_FM[19], 1,"0000000" 52930 setBM MAP_CELL_FM[19], 2,"0000000" 52940 setBM MAP_CELL_FM[19], 3,"1111111" 52950 setBM MAP_CELL_FM[19], 4,"0000000" 52960 setBM MAP_CELL_FM[19], 5,"0000000" 52970 setBM MAP_CELL_FM[19], 6,"0000000" 53000 MAP_CELL_FM[20]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'? 53010 setBM MAP_CELL_FM[20], 0,"0000000" 53020 setBM MAP_CELL_FM[20], 1,"0000000" 53030 setBM MAP_CELL_FM[20], 2,"0000000" 53040 setBM MAP_CELL_FM[20], 3,"1110000" 53050 setBM MAP_CELL_FM[20], 4,"0001000" 53060 setBM MAP_CELL_FM[20], 5,"0001000" 53070 setBM MAP_CELL_FM[20], 6,"0001000" 53100 MAP_CELL_FM[21]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'I 53110 setBM MAP_CELL_FM[21], 0,"0001000" 53120 setBM MAP_CELL_FM[21], 1,"0001000" 53130 setBM MAP_CELL_FM[21], 2,"0001000" 53140 setBM MAP_CELL_FM[21], 3,"0001000" 53150 setBM MAP_CELL_FM[21], 4,"0001000" 53160 setBM MAP_CELL_FM[21], 5,"0001000" 53170 setBM MAP_CELL_FM[21], 6,"0001000" 53200 MAP_CELL_FM[22]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'L 53210 setBM MAP_CELL_FM[22], 0,"0001000" 53220 setBM MAP_CELL_FM[22], 1,"0001000" 53230 setBM MAP_CELL_FM[22], 2,"0001000" 53240 setBM MAP_CELL_FM[22], 3,"0000111" 53250 setBM MAP_CELL_FM[22], 4,"0000000" 53260 setBM MAP_CELL_FM[22], 5,"0000000" 53270 setBM MAP_CELL_FM[22], 6,"0000000" 53300 MAP_CELL_FM[23]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'J 53310 setBM MAP_CELL_FM[23], 0,"0001000" 53320 setBM MAP_CELL_FM[23], 1,"0001000" 53330 setBM MAP_CELL_FM[23], 2,"0001000" 53340 setBM MAP_CELL_FM[23], 3,"1110000" 53350 setBM MAP_CELL_FM[23], 4,"0000000" 53360 setBM MAP_CELL_FM[23], 5,"0000000" 53370 setBM MAP_CELL_FM[23], 6,"0000000" 53400 MAP_CELL_FM[COOKIE_FM_IDX]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'. 53410 setBM MAP_CELL_FM[COOKIE_FM_IDX], 0,"0000000" 53420 setBM MAP_CELL_FM[COOKIE_FM_IDX], 1,"0000000" 53430 setBM MAP_CELL_FM[COOKIE_FM_IDX], 2,"0001000" 53440 setBM MAP_CELL_FM[COOKIE_FM_IDX], 3,"0011100" 53450 setBM MAP_CELL_FM[COOKIE_FM_IDX], 4,"0001000" 53460 setBM MAP_CELL_FM[COOKIE_FM_IDX], 5,"0000000" 53470 setBM MAP_CELL_FM[COOKIE_FM_IDX], 6,"0000000" 53500 MAP_CELL_FM[POWERUP_FM_IDX]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'0 53510 setBM MAP_CELL_FM[POWERUP_FM_IDX], 0,"0011100" 53520 setBM MAP_CELL_FM[POWERUP_FM_IDX], 1,"0111110" 53530 setBM MAP_CELL_FM[POWERUP_FM_IDX], 2,"1111111" 53540 setBM MAP_CELL_FM[POWERUP_FM_IDX], 3,"1111111" 53550 setBM MAP_CELL_FM[POWERUP_FM_IDX], 4,"1111111" 53560 setBM MAP_CELL_FM[POWERUP_FM_IDX], 5,"0111110" 53570 setBM MAP_CELL_FM[POWERUP_FM_IDX], 6,"0011100" 53600 MAP_CELL_FM[SPACE_FM_IDX]=createFM(MAP_CELL_SIZE,MAP_CELL_SIZE):'スペース 53610 setBM MAP_CELL_FM[SPACE_FM_IDX], 0,"0000000" 53620 setBM MAP_CELL_FM[SPACE_FM_IDX], 1,"0000000" 53630 setBM MAP_CELL_FM[SPACE_FM_IDX], 2,"0000000" 53640 setBM MAP_CELL_FM[SPACE_FM_IDX], 3,"0000000" 53650 setBM MAP_CELL_FM[SPACE_FM_IDX], 4,"0000000" 53660 setBM MAP_CELL_FM[SPACE_FM_IDX], 5,"0000000" 53670 setBM MAP_CELL_FM[SPACE_FM_IDX], 6,"0000000" 54000 dim MAP_CELL_S_FM[4] 54010 MAP_CELL_S_FM[0]=createFM(MAP_CELL_S_SIZE,MAP_CELL_S_SIZE):'壁 54020 setBM MAP_CELL_S_FM[0], 0,"11" 54030 setBM MAP_CELL_S_FM[0], 1,"11" 54110 MAP_CELL_S_FM[1]=createFM(MAP_CELL_S_SIZE,MAP_CELL_S_SIZE):'クッキー 54120 setBM MAP_CELL_S_FM[1], 0,"00" 54130 setBM MAP_CELL_S_FM[1], 1,"10" 54210 MAP_CELL_S_FM[2]=createFM(MAP_CELL_S_SIZE,MAP_CELL_S_SIZE):'パワーアップエサ 54220 setBM MAP_CELL_S_FM[2], 0,"00" 54230 setBM MAP_CELL_S_FM[2], 1,"00" 54310 MAP_CELL_S_FM[3]=createFM(MAP_CELL_S_SIZE,MAP_CELL_S_SIZE):'空白 54320 setBM MAP_CELL_S_FM[3], 0,"00" 54330 setBM MAP_CELL_S_FM[3], 1,"00" 57990 return 58100 '------------ セルを90°回転させる ------------- 58105 for X=0 to CHAR_SIZE-1 58110 for Y=0 to CHAR_SIZE-1 58120 pset CHAR_SIZE-1-Y,X,point(SRC_FM,X,Y),set,F,DIST_FM 58130 next 58140 next 58150 return 58200 '------------ セルを左右反転させる ------------- 58205 for X=0 to CHAR_SIZE-1 58210 for Y=0 to CHAR_SIZE-1 58220 pset X,Y,point(SRC_FM,CHAR_SIZE-1-X,Y),set,F,DIST_FM 58230 next 58240 next 58250 return 59000 '------------- 音の定義 ------------------ 59100 SOUND01="T115V128L16_B5B6F#6D#6_L32B6L32HF#6L8D#6L32._L16C6C7G6E6_L32C7L32HG6L8E6L32._L16B5B6F#6D#6_L32B6L32HF#6L8D#6L32._L32D#6E6L16F6_L32F#6G6L16G#6_L32A6L8HB6_L32." 59110 SOUND02="T150V50L64_E3..A#3D4C#4.":'クッキー食べる 59120 SOUND03="T150V1L128_G5G#5V200A5A5V100F#5F#5F5D5V200G#5V1G4G4B4B4..":'いじけ 59130 SOUND04="T150V1L32_V128C4_C#4C3G#4B4B4_C#5F5F#5A5A5_B5B5C#4D6D6_F#6F#6F#6.":'噛みつき 59140 SOUND05="T150V200L64_F#5F5_E5D#5E5F5F#5_F5E5D#5F4C#5_D#4E5F5E5D#5_D5C#5C5C#5D5_D#5D5C#5C5B4_B4C5C#5D5D5_C5B4A4A4A#4_B4C5B4A#4A4_G#4F1G#4F#4_C#5A#4C#6F#6G#6A#6C7._C#5A#4C#6F#6G#6A#6C7.":'死亡 59200 return 60000 '============= システム関連サブルーチン =============================== 61000 '-------- EEPROMにハイスコアテーブルを保存する ------------ 61010 ADDR=0 61020 write ADDR,GAME_TITLE:ADDR=ADDR+16 61030 for I=0 to HIGH_SCORE_NUM-1 61040 write ADDR,format("%D",HIGH_SCORE[I]):ADDR=ADDR+16 61050 next 61060 return 61100 '-------- EEPROMからハイスコアテーブルを読み出す ------------ 61110 ADDR=0 61120 if GAME_TITLE=read(ADDR,strlen(GAME_TITLE)) then 61125 ADDR=ADDR+16 61130 for I=0 to HIGH_SCORE_NUM-1 61140 HIGH_SCORE[I]=val(read(ADDR,5)):ADDR=ADDR+16 61150 next 61160 end if 61170 return 62000 '---------ハイスコアテーブルの中の最大と最小を求める------------- 62010 MAX_HIGH_SCORE=0:MIN_HIGH_SCORE=100000 62020 for I=0 to HIGH_SCORE_NUM-1 62030 if HIGH_SCORE[I]>MAX_HIGH_SCORE then MAX_HIGH_SCORE=HIGH_SCORE[I] 62035 if MIN_HIGH_SCORE>HIGH_SCORE[I] then MIN_HIGH_SCORE=HIGH_SCORE[I] 62040 next 62050 return 62100 '--------ハイスコアテーブルを初期化する---------- 62110 for I=0 to HIGH_SCORE_NUM-1 62120 HIGH_SCORE[I]=0 62130 next 62140 return 62500 '--------ハイスコアテーブルを更新する---------- 62510 for I=0 to HIGH_SCORE_NUM-1 62520 if HIGH_SCORE[I]10 then putStr COMMENT_X,COMMENT_Y,COMMENT,1,xor,F:COUNT=0 63180 update 63210 sleep 50:COUNT=COUNT+1 63220 put PAC_X,PAC_Y,PACMAN_FM[PAC_DIR*PACMAN_ANIME_NUM+PAC_ANIME_IDX],xor,F 63225 put DEMO_GHOST_X,DEMO_GHOST_Y,GHOST_FM[DEMO_GHOST_DIR],xor,F 63230 PAC_X_BAC=PAC_X:PAC_Y_BAC=PAC_Y:gosub 64000 63240 if isOut(0,0,SCREEN_WIDTH,SCREEN_HIGHT,PAC_X,PAC_Y,CHAR_SIZE,CHAR_SIZE)=1 then 63250 PAC_DIR=PAC_DIR+1:PAC_X=PAC_X_BAC:PAC_Y=PAC_Y_BAC 63260 if PAC_DIR=DIR_NUM then PAC_DIR=LEFT 63270 end if 63300 DEMO_GHOST_X_BAC=DEMO_GHOST_X:DEMO_GHOST_Y_BAC=DEMO_GHOST_Y 63310 if DEMO_GHOST_DIR=LEFT then DEMO_GHOST_X=DEMO_GHOST_X-1 63320 if DEMO_GHOST_DIR=UP then DEMO_GHOST_Y=DEMO_GHOST_Y-1 63330 if DEMO_GHOST_DIR=RIGHT then DEMO_GHOST_X=DEMO_GHOST_X+1 63340 if DEMO_GHOST_DIR=DOWN then DEMO_GHOST_Y=DEMO_GHOST_Y+1 63350 if isOut(0,0,SCREEN_WIDTH,SCREEN_HIGHT,DEMO_GHOST_X,DEMO_GHOST_Y,CHAR_SIZE,CHAR_SIZE)=1 then 63360 DEMO_GHOST_DIR=DEMO_GHOST_DIR+1:DEMO_GHOST_X=DEMO_GHOST_X_BAC:DEMO_GHOST_Y=DEMO_GHOST_Y_BAC 63370 if DEMO_GHOST_DIR=DIR_NUM then DEMO_GHOST_DIR=LEFT 63380 end if 63385 update 63390 end while 63395 return 63700 '================== ステージ終了画面 ====================== 63710 cls 63720 COMMENT=format("SCORE:%-5D",SCORE) 63730 if STAGE_CLEAR=1 then STAGE=STAGE+1:TITLE=format("NEXT CLEAR %D",STAGE) else TITLE="GAME OVER" 63740 TITLE_X=(SCREEN_WIDTH-strlen(TITLE)*FONT_WIDTH)/2 63750 TITLE_Y=SCREEN_HIGHT/3-FONT_HIGHT/2 63760 putStr TITLE_X,TITLE_Y,TITLE,1 63770 COMMENT_X=(SCREEN_WIDTH-strlen(COMMENT)*FONT_WIDTH)/2 63775 COMMENT_Y=SCREEN_HIGHT*2/3-FONT_HIGHT/2 63780 putStr COMMENT_X,COMMENT_Y,COMMENT,1 63790 sleep 2000 63800 if GAME_OVER=1 then 63810 gosub 62000:'ハイスコアの最低ラインを取得 63820 if MIN_HIGH_SCORE=PACMAN_ANIME_NUM then 64070 PAC_ANIME_IDX_INC=-PAC_ANIME_IDX_INC:PAC_ANIME_IDX=PACMAN_ANIME_NUM-1 64080 else if PAC_ANIME_IDX<0 then 64090 PAC_ANIME_IDX_INC=-PAC_ANIME_IDX_INC:PAC_ANIME_IDX=1 64100 end if 64110 return @Invaders.bas 100 '============== 画面やシステム関連の定義 ============= 110 GAME_TITLE="INVADERS":FONT_WIDTH=6:FONT_HIGHT=8:SCREEN_WIDTH=128:SCREEN_HIGHT=64:'フォントの幅と高さ 120 HIGH_SCORE_NUM=SCREEN_HIGHT/FONT_HIGHT-3:dim HIGH_SCORE[HIGH_SCORE_NUM]:gosub 62100 130 if (keyA()<>1)||(keyB()<>1) then gosub 61100 : 'ハイスコアを読み出す 200 '============== ゲーム関連の定義 ================ 210 INVADER_Y_NUM=3:'インベーダの行数 220 gosub 50000:'ビットマップの定義 230 TANK_Y=SCREEN_HIGHT-TANK_HIGHT:'自機のY座標 240 SHIELD_Y_GAP=1:SHIELD_Y=TANK_Y-SHIELD_Y_GAP-SHIELD_HIGHT:'シールドのY座標 250 SHIELD_NUM=4:SHIELD_X_GAP=(SCREEN_WIDTH-SHIELD_WIDTH*SHIELD_NUM)/SHIELD_NUM/2:'シールド表示開始X座標 260 dim SHIELD[SHIELD_NUM]:for I=0 to SHIELD_NUM-1:SHIELD[I]=createFM(SHIELD_WIDTH,SHIELD_HIGHT):next:'シールドのフレームメモリーを作成 270 ABSENT=0:EXIST=1:EXPLOSION=2:'状態 0:不在 1:存在 2:爆発中 280 INVADER_THIS_TIME_DY=0:INVADER_THIS_TIME_DX=0:'初回の移動量 290 gosub 2000:'インベーダ関連の配列宣言 300 EXPLOSION_LENGTH=6:'爆発の長さ 950 gosub 59000:'音の定義 1000 '-------- メインルーティン -------------- 1010 B_END=0:'プログラム終了(0:継続 1:終了) 1020 STAGE=1:'ステージを初期化 1030 TANK_NUM=2:'スペアのタンク数 1040 SCORE=0:'スコアを初期化 1050 GAME_OVER=0: 'ゲームオーバー(1:終了 0:継続) 1060 STAGE_CLEAR=0:'ステージクリア(ゲーム中:0,クリア時:1) 1100 while B_END=0 1110 if STAGE_CLEAR=0 then gosub 63000 else STAGE_CLEAR=0:'待機画面の表示 1140 A=0:'キー変数初期化 (L,Rは、押しっぱなしで入力OKなので、変数化しない。UとLは使わない。連写の可能性はAのみ) 1150 gosub 2100:'インベーダ情報初期設定 1160 TANK_X=(SCREEN_WIDTH-TANK_WIDTH)/2:'自機のX座標の初期化 1170 TANK_DX=0:TANK_STS=EXIST:'タンクの移動量、タンク状態の初期化 1180 MISSILE_STS=ABSENT:MISSILE_X=0:MISSILE_Y=0:'ミサイル状態(0:未発射,1:発射)、ミサイルの座標の初期化 1200 for I=0 to SHIELD_NUM-1:put 0,0,SHIELD_FM,set,F,SHIELD[I]:next:'壊れていないシールドのイメージを設定 1210 SLEEP_TIME=21-STAGE:if SLEEP_TIME<1 then SLEEP_TIME=1:'ステージの待ち時間を設定 1490 MOVE_COUNTER=1:EXIST_INVADER_NUM=INVADER_NUM:'移動カウンタと状態が存在のインベーダの数を設定 1500 while GAME_OVER=0 && STAGE_CLEAR=0 1510 MOVE_COUNTER=MOVE_COUNTER-1:gosub 4100:'自機の操作、自機・敵のミサイルの移動 1520 if MOVE_COUNTER=0 then 1550 gosub 3000:MOVE_COUNTER=EXIST_INVADER_NUM:'インベーダの移動 1560 sound 0,TEMPO0+INVADER_SOUND[INVADER_SOUND_IDX]:play 0 1570 INVADER_SOUND_IDX=INVADER_SOUND_IDX+1:if INVADER_SOUND_IDX>=INVADER_SOUND_NUM then INVADER_SOUND_IDX=0 1575 cls F:gosub 2500:'インベーダの表示 1580 end if 1590 gosub 4100:'自機の操作、自機・敵のミサイルの移動 1600 gosub 4000:'自機の表示 1650 gosub 5000:'シールドの表示 1660 gosub 7000:'爆発アニメーション 1680 if keyU()=1 then B_END=1:GMAE_OVER=1 1710 gosub 4100:'自機の操作、自機・敵のミサイルの移動 1720 gosub 6000:'自機ミサイルと敵の衝突判定 1730 gosub 6500:'自機ミサイル・敵ミサイル・敵とシールドの衝突判定 1740 gosub 4500:'自機と敵・敵ミサイルの衝突判定 1880 update 1890 sleep SLEEP_TIME:gosub 63500:'キーが一旦離されたことのスキャン 1900 end while 1910 if STAGE_CLEAR=1 then gosub 8000:STAGE=STAGE+1:TANK_NUM=TANK_NUM+1:'ステージクリア表示 1920 if GAME_OVER=1 then gosub 8200:GAME_OVER=0:STAGE=1:TANK_NUM=2:SCORE=0:'ゲームオーバー表示 1950 end while 1970 sound 0,"L8.":play 0:'音を消す 1980 sound 1,"L8.":play 1:'音を消す 1990 end:'終了 2000 '---------------------- インベーダ関連の配列宣言 ------------------------------- 2020 INVADER_GAP=4:INVADER_X_NUM=SCREEN_WIDTH/(INVADER_A_WIDTH+INVADER_GAP)-2:'インベーダの列数 2030 INVADER_NUM=INVADER_X_NUM*INVADER_Y_NUM 2040 dim INVADER_X[INVADER_NUM],INVADER_Y[INVADER_NUM]:'インベーダの左上の座標 2050 dim INVADER_WIDTH[INVADER_NUM],INVADER_HIGHT[INVADER_NUM]:'インベーダの幅と高さ 2060 dim INVADER_STS[INVADER_NUM]:'インベーダの状態 2070 dim INVADER_EDGE_IDX[INVADER_Y_NUM*2]:'各行の端のインベーダのインデックス 2080 dim INVADER_MISSILE_X[INVADER_NUM],INVADER_MISSILE_Y[INVADER_NUM],INVADER_MISSILE_WIDTH[INVADER_NUM]:'インベーダのミサイルの定義 2090 dim INVADER_MISSILE_HIGHT[INVADER_NUM],INVADER_MISSILE_STS[INVADER_NUM]:'インベーダのミサイルの定義 2099 return 2100 '---------------------- インベーダ情報初期設定 ------------------------------- 2110 INVADER_ANIME_IDX=0:'インベーダのアニメーションインデックス 2200 for I=0 to INVADER_X_NUM-1 2210 INVADER_X[I]=I*(INVADER_A_WIDTH+INVADER_GAP)+(INVADER_A_WIDTH-INVADER_C_WIDTH)/2:INVADER_Y[I]=0:INVADER_WIDTH[I]=INVADER_C_WIDTH:INVADER_HIGHT[I]=INVADER_C_HIGHT 2220 INVADER_X[I+INVADER_X_NUM]=I*(INVADER_A_WIDTH+INVADER_GAP)+(INVADER_A_WIDTH-INVADER_B_WIDTH)/2:INVADER_Y[I+INVADER_X_NUM]=INVADER_A_HIGHT+1:INVADER_WIDTH[I+INVADER_X_NUM]=INVADER_B_WIDTH:INVADER_HIGHT[I+INVADER_X_NUM]=INVADER_B_HIGHT 2230 INVADER_X[I+INVADER_X_NUM*2]=I*(INVADER_A_WIDTH+INVADER_GAP):INVADER_Y[I+INVADER_X_NUM*2]=INVADER_A_HIGHT+INVADER_B_HIGHT+2:INVADER_WIDTH[I+INVADER_X_NUM*2]=INVADER_A_WIDTH:INVADER_HIGHT[I+INVADER_X_NUM*2]=INVADER_A_HIGHT 2250 next 2300 for I=0 to INVADER_NUM-1 2310 INVADER_STS[I]=EXIST:INVADER_MISSILE_STS[I]=ABSENT:'インベーダとミサイルの状態を初期化 2315 INVADER_MISSILE_WIDTH[I]=MISSILE_WIDTH:INVADER_MISSILE_HIGHT[I]=MISSILE_HIGHT 2320 next 2330 INVADER_EDGE_IDX[0]=0:INVADER_EDGE_IDX[1]=INVADER_X_NUM-1:'1行目の端のインベーダのインデックスを設定 2340 INVADER_EDGE_IDX[2]=INVADER_X_NUM:INVADER_EDGE_IDX[3]=INVADER_X_NUM*2-1:'2行目の端のインベーダのインデックスを設定 2350 INVADER_EDGE_IDX[4]=INVADER_X_NUM*2:INVADER_EDGE_IDX[5]=INVADER_X_NUM*3-1:'3行目の端のインベーダのインデックスを設定 2360 INVADER_MISSILE_RATE=10-STAGE:if INVADER_MISSILE_RATE<1 then INVADER_MISSILE_RATE=1:'ミサイルの発射率 小さいほどよく発射する 2370 INVADER_DX=INVADER_A_WIDTH/2+STAGE:INVADER_DY=INVADER_A_HIGHT/2+STAGE:'インベーダの移動量 2380 if INVADER_DX>INVADER_C_WIDTH then INVADER_DX=INVADER_C_WIDTH 2390 if INVADER_DY>INVADER_C_HIGHT then INVADER_DY=INVADER_C_HIGHT 2490 return 2500 '---------------------- インベーダ表示 ------------------------------- 2510 for I=0 to INVADER_NUM-1 2520 if INVADER_STS[I]=EXIST then 2530 INVADER_X[I]=INVADER_X[I]+INVADER_THIS_TIME_DX:INVADER_Y[I]=INVADER_Y[I]+INVADER_THIS_TIME_DY 2540 put INVADER_X[I],INVADER_Y[I],INVADER_FM[INVADER_A_WIDTH-INVADER_WIDTH[I]+INVADER_ANIME_IDX],or,F 2550 if INVADER_MISSILE_STS[I]=ABSENT then if mod(rand(),INVADER_MISSILE_RATE)=0 then INVADER_MISSILE_STS[I]=EXIST:INVADER_MISSILE_X[I]=INVADER_X[I]+(INVADER_WIDTH[I]-MISSILE_WIDTH)/2:INVADER_MISSILE_Y[I]=INVADER_Y[I]+INVADER_HIGHT[I] 2590 end if 2760 next 2770 INVADER_ANIME_IDX=INVADER_ANIME_IDX+1:if INVADER_ANIME_IDX=INVADER_PAT_NUM then INVADER_ANIME_IDX=0 2890 return 3000 '---------------------- インベーダの移動 --------------------------- 3010 '-------インベーダ群の左右の端の座標を求める--------------- 3020 LEFT_X=INVADER_X[INVADER_EDGE_IDX[0]]:RIGHT_X=INVADER_X[INVADER_EDGE_IDX[1]]+INVADER_WIDTH[INVADER_EDGE_IDX[1]] 3030 for I=2 to INVADER_Y_NUM*2-1 step 2 3040 if LEFT_X> INVADER_X[INVADER_EDGE_IDX[I]] then LEFT_X=INVADER_X[INVADER_EDGE_IDX[I]] 3050 if RIGHT_X< (INVADER_X[INVADER_EDGE_IDX[I+1]]+INVADER_WIDTH[INVADER_EDGE_IDX[I+1]]) then RIGHT_X=INVADER_X[INVADER_EDGE_IDX[I+1]]+INVADER_WIDTH[INVADER_EDGE_IDX[I+1]] 3060 next 3070 '---------------- 移動量を求める ----------------------- 3080 INVADER_THIS_TIME_DY=0:INVADER_THIS_TIME_DX=INVADER_DX 3090 if INVADER_DX>0 then 3095 if RIGHT_X=SCREEN_WIDTH then 3097 INVADER_DX=-INVADER_DX:INVADER_THIS_TIME_DX=0:INVADER_THIS_TIME_DY=INVADER_DY 3098 else 3100 if RIGHT_X+INVADER_DX>SCREEN_WIDTH then INVADER_THIS_TIME_DX=SCREEN_WIDTH-RIGHT_X 3105 end if 3110 else 3115 if LEFT_X=0 then 3117 INVADER_DX=-INVADER_DX:INVADER_THIS_TIME_DX=0:INVADER_THIS_TIME_DY=INVADER_DY 3118 else 3120 if LEFT_X+INVADER_DX<0 then INVADER_THIS_TIME_DX=-LEFT_X 3125 end if 3130 end if 3190 return 4000 '-------------- 自機の表示 -------------------- 4010 put TANK_X,TANK_Y,TANK_BLANK_FM,set 4020 TANK_X=TANK_X+TANK_DX:TANK_DX=0 4030 put TANK_X,TANK_Y,TANK_FM,or 4090 return 4100 '-------------- 自機の操作、自機・敵のミサイルの移動、自機と敵ミサイルの衝突判定 -------------------- 4105 if TANK_STS=EXIST then 4110 DX=0:if keyL()=1 then DX=-1 else if keyR()=1 then DX=1 4120 if TANK_X+TANK_DX+DX>=0 && TANK_X+TANK_DX+DX+TANK_WIDTH=0 then put MISSILE_X,MISSILE_Y,MISSILE_FM,set else put MISSILE_X,0,TANK_BLANK_FM,set:MISSILE_STS=ABSENT 4170 end if 4180 end if 4280 gosubM INVADER_MISSILE_STS,IDX,EXIST,4300:'敵のミサイルの移動 4290 return 4300 '--------------- 敵ミサイルの移動 -------------------------- 4310 INVADER_MISSILE_Y[IDX]=INVADER_MISSILE_Y[IDX]+1 4330 if INVADER_MISSILE_Y[IDX]INVADER_NUM then 4530 TANK_STS=EXPLOSION 4540 INVADER_MISSILE_STS[IDX]=ABSENT 4550 sound 1,SOUND8:play 1 4560 end if 4580 IDX=isColM(TANK_X,TANK_Y,TANK_WIDTH,TANK_HIGHT,INVADER_X,INVADER_Y,INVADER_WIDTH,INVADER_HIGHT,INVADER_STS,EXIST):'自機と敵の衝突判定 4585 'print format("T-I IDX:%D ",IDX)+format("X:%D ",TANK_X)+format("Y:%D ",TANK_Y)+format("W:%D ",TANK_WIDTH)+format("H:%D ",TANK_HIGHT) 4590 if IDX<>INVADER_NUM then 4600 TANK_STS=EXPLOSION 4650 sound 1,SOUND8:play 1:GAME_OVER=1 4670 end if 4680 end if 4690 return 5000 '-------------- シールドの表示 ---------------- 5010 for I=0 to SHIELD_NUM-1 5020 put SHIELD_X_GAP+I*(SHIELD_WIDTH+SHIELD_X_GAP*2),SHIELD_Y,SHIELD[I],or,F 5030 next 5050 return 6000 '-------------- 自機ミサイルと敵・敵ミサイルの衝突判定 ---------------- 6010 if MISSILE_STS=EXIST then 6020 IDX=isColM(MISSILE_X,MISSILE_Y,MISSILE_WIDTH,MISSILE_HIGHT,INVADER_X,INVADER_Y,INVADER_WIDTH,INVADER_HIGHT,INVADER_STS,EXIST):'自機ミサイルと敵の衝突判定 6030 if IDX<>INVADER_NUM then 6035 ' インデックスがIDXのインベーダにミサイルが当たった 6040 put MISSILE_X,MISSILE_Y,MISSILE_BLANK_FM,set:MISSILE_STS=ABSENT 6050 INVADER_STS[IDX]=EXPLOSION:sound 1,SOUND3:play 1:SCORE=SCORE+((INVADER_A_WIDTH-INVADER_WIDTH[IDX])/2+1)*10 6055 put INVADER_X[IDX]+(INVADER_WIDTH[IDX]-EXPLOSION_WIDTH)/2,INVADER_Y[IDX],EXPLOSION_FM[0],set,T 6060 EXIST_INVADER_NUM=EXIST_INVADER_NUM-1:if EXIST_INVADER_NUM=0 then STAGE_CLEAR=1:sound 1,SOUND4:play 1 6065 ' インベーダ群の左右の端をインデックスを更新 6070 for I=0 to INVADER_Y_NUM*2-1 step 2 6080 if INVADER_EDGE_IDX[I]= IDX then 6085 B_FOUND=0:'左端が見つかったら1 6090 for J=IDX to INVADER_EDGE_IDX[I+1] 6100 if INVADER_STS[J]=EXIST then B_FOUND=1:INVADER_EDGE_IDX[I]=J:exit for 6110 next 6120 if B_FOUND=0 then INVADER_EDGE_IDX[I]=INVADER_EDGE_IDX[I+1] 6130 exit for 6140 else if INVADER_EDGE_IDX[I+1]= IDX then 6150 B_FOUND=0:'右端が見つかったら1 6160 for J=IDX to INVADER_EDGE_IDX[I] step -1 6170 if INVADER_STS[J]=EXIST then B_FOUND=1:INVADER_EDGE_IDX[I+1]=J: exit for 6180 next 6190 if B_FOUND=0 then INVADER_EDGE_IDX[I+1]=INVADER_EDGE_IDX[I] 6200 exit for 6210 end if 6220 next 6230 end if 6300 IDX=isColM(MISSILE_X,MISSILE_Y,MISSILE_WIDTH,MISSILE_HIGHT,INVADER_MISSILE_X,INVADER_MISSILE_Y,INVADER_MISSILE_WIDTH,INVADER_MISSILE_HIGHT,INVADER_MISSILE_STS,EXIST):'自機ミサイルと敵ミサイルの衝突判定 6310 if IDX<>INVADER_NUM then 6320 put MISSILE_X,MISSILE_Y,MISSILE_BLANK_FM,set:MISSILE_STS=ABSENT 6330 INVADER_MISSILE_STS[IDX]=ABSENT 6340 sound 1,SOUND5:play 1 6350 end if 6480 end if 6490 return 6500 '-------------- 自機ミサイル・敵ミサイル・敵とシールドの衝突判定 ---------------- 6510 for SHIELD_IDX=0 to SHIELD_NUM-1 6511 XS=SHIELD_X_GAP+SHIELD_IDX*(SHIELD_WIDTH+SHIELD_X_GAP*2) 6512 if MISSILE_STS=EXIST then 6520 if isCol(MISSILE_X,MISSILE_Y,MISSILE_WIDTH,MISSILE_HIGHT,XS,SHIELD_Y,SHIELD_WIDTH,SHIELD_HIGHT)=1 then : ' 自機ミサイルとシールドの衝突判定 6530 X=MISSILE_X-XS:Y=MISSILE_Y-SHIELD_Y:W=MISSILE_WIDTH:H=MISSILE_HIGHT:SHIELD_HIT=0:gosub 6600 6540 if SHIELD_HIT=1 then MISSILE_STS=ABSENT 6550 end if 6560 end if 6570 gosubM INVADER_MISSILE_STS,IDX,EXIST,6700:'敵ミサイルとシールドの衝突判定 6575 gosubM INVADER_STS,IDX,EXIST,6800:'敵とシールドの衝突判定 6580 next 6590 return 6600 '-------------- シールド内部の判定と表示 ------------- 6610 ' X,Y:シールドフレームワーク内の座標 6620 for I=0 to W-1 6630 for J=0 to H-1 6640 if point(SHIELD[SHIELD_IDX],X+I,Y+J)=1 then 6650 put X-1,Y-1,MISSILE_EXPLOSION_FM,and,F,SHIELD[SHIELD_IDX] 6660 SHIELD_HIT=1:sound 1,SOUND2:play 1:exit for 6670 end if 6680 next 6690 next 6695 return 6700 '-------------- 敵ミサイルとシールドの衝突判定 ------------- 6710 if isCol(INVADER_MISSILE_X[IDX],INVADER_MISSILE_Y[IDX],INVADER_MISSILE_WIDTH[IDX],INVADER_MISSILE_HIGHT[IDX],XS,SHIELD_Y,SHIELD_WIDTH,SHIELD_HIGHT)=1 then 6720 X=INVADER_MISSILE_X[IDX]-XS:Y=INVADER_MISSILE_Y[IDX]-SHIELD_Y:W=INVADER_MISSILE_WIDTH[IDX]:H=INVADER_MISSILE_HIGHT[IDX]:SHIELD_HIT=0:gosub 6600 6730 if SHIELD_HIT=1 then INVADER_MISSILE_STS[IDX]=ABSENT 6740 end if 6750 return 6800 '-------------- 敵とシールドの衝突判定 ------------- 6810 if isCol(INVADER_X[IDX],INVADER_Y[IDX],INVADER_WIDTH[IDX],INVADER_HIGHT[IDX],XS,SHIELD_Y,SHIELD_WIDTH,SHIELD_HIGHT)=1 then 6820 put INVADER_X[IDX]-XS,INVADER_Y[IDX]-SHIELD_Y,INVADER_FM[INVADER_A_WIDTH-INVADER_WIDTH[IDX]+INVADER_ANIME_IDX],not,F,SHIELD[SHIELD_IDX] 6840 end if 6850 return 7000 '------------ 爆発アニメーション -------------------- 7010 for I=0 to INVADER_NUM-1 7050 if EXPLOSION<=INVADER_STS[I] && INVADER_STS[I]<=EXPLOSION+EXPLOSION_LENGTH then 7060 INVADER_STS[I]=INVADER_STS[I]+1 7070 put INVADER_X[I]+(INVADER_WIDTH[I]-EXPLOSION_WIDTH)/2,INVADER_Y[I],EXPLOSION_FM[mod(INVADER_STS[I],2)],or,F 7090 end if 7100 next 7110 if EXPLOSION<=TANK_STS && TANK_STS<=EXPLOSION+EXPLOSION_LENGTH then 7120 TANK_STS=TANK_STS+1 7130 put TANK_X+(TANK_WIDTH-EXPLOSION_WIDTH)/2,TANK_Y,EXPLOSION_FM[mod(TANK_STS,2)],set,T 7140 if TANK_STS=EXPLOSION+EXPLOSION_LENGTH then 7150 if TANK_NUM<>0 then TANK_STS=EXIST:TANK_NUM=TANK_NUM-1 else GAME_OVER=1 7180 end if 7190 end if 7290 return 8000 '-------------- ステージクリア表示 ------------------ 8020 cls 8030 COMMENT=format("NEXT STAGE:%-2D",STAGE) 8035 COMMENT1=format("SCORE:%-5D",SCORE) 8037 COMMENT2=format("TANK:%-2D",TANK_NUM) 8040 COMMENT_X=(SCREEN_WIDTH-strlen(COMMENT)*FONT_WIDTH)/2 8050 COMMENT_Y=(SCREEN_HIGHT-2*FONT_HIGHT)/3-FONT_HIGHT/2 8060 putStr COMMENT_X,COMMENT_Y,COMMENT,1 8070 COMMENT1_X=(SCREEN_WIDTH-strlen(COMMENT1)*FONT_WIDTH)/2 8075 COMMENT1_Y=(SCREEN_HIGHT-2*FONT_HIGHT)*2/3-FONT_HIGHT/2 8080 putStr COMMENT1_X,COMMENT1_Y,COMMENT1,1 8090 COMMENT2_X=(SCREEN_WIDTH-strlen(COMMENT2)*FONT_WIDTH)/2 8100 COMMENT2_Y=SCREEN_HIGHT-FONT_HIGHT*2 8110 putStr COMMENT2_X,COMMENT2_Y,COMMENT2,1 8120 sleep 3000 8190 return 8200 '-------------- ゲームオーバー表示 ------------------ 8220 cls 8230 COMMENT="GAME OVER" 8235 COMMENT1=format("SCORE:%-5D",SCORE) 8237 COMMENT2=format("STAGE:%-2D",STAGE) 8240 COMMENT_X=(SCREEN_WIDTH-strlen(COMMENT)*FONT_WIDTH)/2 8250 COMMENT_Y=(SCREEN_HIGHT-2*FONT_HIGHT)/3-FONT_HIGHT/2 8260 putStr COMMENT_X,COMMENT_Y,COMMENT,1 8270 COMMENT1_X=(SCREEN_WIDTH-strlen(COMMENT1)*FONT_WIDTH)/2 8275 COMMENT1_Y=(SCREEN_HIGHT-2*FONT_HIGHT)*2/3-FONT_HIGHT/2 8280 putStr COMMENT1_X,COMMENT1_Y,COMMENT1,1 8290 COMMENT2_X=(SCREEN_WIDTH-strlen(COMMENT2)*FONT_WIDTH)/2 8300 COMMENT2_Y=SCREEN_HIGHT-FONT_HIGHT*2 8310 putStr COMMENT2_X,COMMENT2_Y,COMMENT2,1 8320 sleep 3000 8330 gosub 62000:'ハイスコアの最低ラインを取得 8340 if MIN_HIGH_SCOREMAX_HIGH_SCORE then MAX_HIGH_SCORE=HIGH_SCORE[I] 62035 if MIN_HIGH_SCORE>HIGH_SCORE[I] then MIN_HIGH_SCORE=HIGH_SCORE[I] 62040 next 62050 return 62100 '--------ハイスコアテーブルを初期化する---------- 62110 for I=0 to HIGH_SCORE_NUM-1 62120 HIGH_SCORE[I]=0 62130 next 62140 return 62500 '--------ハイスコアテーブルを更新する---------- 62510 for I=0 to HIGH_SCORE_NUM-1 62520 if HIGH_SCORE[I]=INVADER_SOUND_NUM then INVADER_SOUND_IDX=0 63190 end if 63195 end while 63196 return 63500 '------- キーが離されたことのスキャン------------- 63550 if keyA()=0 then A=0 63580 return @Tetris.bas 10 GAME_TITLE="TETRIS":MINO_NUM=7:BLOCK_NUM_PER_MINO=4 20 dim MX[MINO_NUM*BLOCK_NUM_PER_MINO],MY[MINO_NUM*BLOCK_NUM_PER_MINO]:' ミノの形状 30 dim CURRENT_MX[BLOCK_NUM_PER_MINO],CURRENT_MY[BLOCK_NUM_PER_MINO]:' 表示中のミノ 40 dim TEMP_MX[BLOCK_NUM_PER_MINO],TEMP_MY[BLOCK_NUM_PER_MINO]:' ミノ回転用ワーク 50 CX=5:CY=5:'ミノを表示する座標 60 BLOCK_WIDTH=3:'1ブロックの幅と高さ 70 SCORE=0:LEVEL=1:'スコアとレベル 80 GAPX=2:GAPY=2:'壁の幅 90 X_BLOCK_NUM=10:Y_BLOCK_NUM=20:dim GAME_BOARD[Y_BLOCK_NUM]:EMPTY_ROW="0000000000":FULL_ROW="1111111111":'ゲーム盤の広さ 100 FONT_WIDTH=6:FONT_HIGHT=8:SCREEN_WIDTH=128:SCREEN_HIGHT=64:'フォントの幅と高さ 110 ANIME_X_GAP=1:ANIME_X=GAPX*2+BLOCK_WIDTH*X_BLOCK_NUM+ANIME_X_GAP:'アニメーションエリア関連の定義 120 ANIME_Y_GAP=1:ANIME_Y=FONT_HIGHT*2+ANIME_Y_GAP:'アニメーションエリア関連の定義 130 ANIME_WIDTH=SCREEN_WIDTH-ANIME_X:ANIME_HIGHT=SCREEN_HIGHT-ANIME_Y:ANIME_F_WIDTH=160:ANIME_F_HIGHT=160:'アニメーションエリア関連の定義 150 gosub 10000:gosub 10200:gosub 10400:'アニメーションエリア関連の定義 160 ANIME_FM_NUM=3:dim ANIME_FM[ANIME_FM_NUM]:ANIME_FM[0]=girl01:ANIME_FM[1]=girl02:ANIME_FM[2]=girl03:'アニメーションエリア関連の定義 170 gosub 12000:'音の定義 230 ' 棒(I) MINO_NO=0 240 MX[0]=-1:MX[1]=0:MX[2]=1:MX[3]=2 250 MY[0]=0:MY[1]=0:MY[2]=0:MY[3]=0 260 ' 四角(O) MINO_NO=1 270 MX[4]=0:MX[5]=1:MX[6]=1:MX[7]=0 280 MY[4]=0:MY[5]=0:MY[6]=1:MY[7]=1 290 ' T字(T) MINO_NO=2 300 MX[8]=-1:MX[9]=0:MX[10]=1:MX[11]=0 310 MY[8]=0:MY[9]=0:MY[10]=0:MY[11]=1 320 ' S字(S) MINO_NO=3 330 MX[12]=-1:MX[13]=0:MX[14]=0:MX[15]=1 340 MY[12]=0:MY[13]=0:MY[14]=1:MY[15]=1 350 ' Z字(Z) MINO_NO=4 360 MX[16]=-1:MX[17]=0:MX[18]=0:MX[19]=1 370 MY[16]=1:MY[17]=0:MY[18]=1:MY[19]=0 380 ' L字(L) MINO_NO=5 390 MX[20]=0:MX[21]=0:MX[22]=0:MX[23]=1 400 MY[20]=-1:MY[21]=0:MY[22]=1:MY[23]=1 410 ' J字(J) MINO_NO=6 420 MX[24]=0:MX[25]=0:MX[26]=0:MX[27]=-1 430 MY[24]=-1:MY[25]=0:MY[26]=1:MY[27]=1 460 gosub 9200:'ブロックのフレームメモリーの定義 470 HIGH_SCORE_NUM=SCREEN_HIGHT/FONT_HIGHT-3 480 dim HIGH_SCORE[HIGH_SCORE_NUM]:gosub 62100 490 if (keyA()<>1)||(keyB()<>1) then gosub 61100 : 'ハイスコアを読み出す 1000 '-------- メインルーティン -------------- 1010 B_END=0:'プログラム終了(0:継続 1:終了) 1100 while B_END=0 1110 gosub 9600: '待ち画面 1115 if B_END=1 then exit while 1120 gosub 9800:gosub 9400: '初期表示(壁表示、スコア表示) 1130 GMAE_OVER=0: 'ゲームオーバー(1:終了 0:継続) 1140 B_MINO_EXIST=0:'ミノ有無(0:ミノがなし 1:ミノあり) 1150 FALL_COUNTER=0:WAIT_FOR_FALL=3:'落下カウンタ初期化 1160 gosub 7300:'ゲーム盤初期化 1170 D=0:L=0:R=0:'キー変数初期化 1180 MUSIC_NO=0:'曲番号の設定 1190 LEVEL_COUNTER=0:'消去数を加算する。一定以上溜まるとレベルが上がる 1195 SLEEP_TIME=50:'待ち時間 1200 while GMAE_OVER=0 1210 gosub 7500:gosub 9400:'盤表示 1220 if B_MINO_EXIST=0 then gosub 7000:'ミノがない時、新しいミノを決める 1225 if GMAE_OVER=1 then gosub 6000:exit while:'ゲームオーバー 1230 gosub 9000:gosub 11020:update: 'ミノを表示 1240 FALL_COUNTER=FALL_COUNTER+1:gosub 5300:'キーが一旦離されたことのスキャン 1250 if FALL_COUNTER>WAIT_FOR_FALL then 1260 NEXT_CX=CX:NEXT_CY=CY+1:gosub 7700:gosub 7600:'衝突判定 1270 if B_COLLISION=0 then CY=CY+1:FALL_COUNTER=0 else B_MINO_EXIST=0:gosub 7400: ' 衝突する場合、ミノを固定する。衝突しない場合、ミノを落下させる 1290 end if 1300 gosub 7100:'落下判定 1320 if sound0status()=0 then sound 0,MUSIC[MUSIC_NO]:play 0 :'曲が終わったら、再度、曲の演奏を開始 1330 gosub 5000:'キー操作 1340 gosub 4000:'ミノ消去 1400 sleep SLEEP_TIME:gosub 5300:'キーが一旦離されたことのスキャン 1410 end while 1420 end while 1500 sound 0,SOUND7:play 0:end:'音を消して終了 4000 '----------- ミノ消去 ---------------- 4010 ERASE_NUM=0:I=Y_BLOCK_NUM-1 4100 while -1 4110 if GAME_BOARD[I]=FULL_ROW then 4120 for J=I to 1 step -1:GAME_BOARD[J]=GAME_BOARD[J-1]:next 4130 GAME_BOARD[0]=EMPTY_ROW 4140 ERASE_NUM=ERASE_NUM+1 4150 else 4155 I=I-1:if I=0 then exit while 4156 end if 4160 end while 4170 if ERASE_NUM<>0 then 4180 SCORE=SCORE+10*ERASE_NUM*ERASE_NUM*LEVEL 4190 SCORE_SOUND=SOUND2 4200 if ERASE_NUM>2 then SCORE_SOUND=SOUND4 4210 sound 1,SCORE_SOUND:play 1 4220 end if 4230 LEVEL_COUNTER=LEVEL_COUNTER+ERASE_NUM 4240 if LEVEL_COUNTER>5 then 4250 LEVEL=LEVEL+1:LEVEL_COUNTER=0 4260 WAIT_FOR_FALL=WAIT_FOR_FALL-1 4270 if WAIT_FOR_FALL=0 then 4280 WAIT_FOR_FALL=1:SLEEP_TIME=SLEEP_TIME-10 4290 if SLEEP_TIME<10 then SLEEP_TIME=10 4300 end if 4310 end if 4400 return 5000 '----------- キー操作 ---------------- 5010 DCX=0:ROTATE=0 5100 if L=0 && keyL()=1 then DCX=-1:L=1 5110 if R=0 && keyR()=1 then DCX=1:R=1 5120 if D=0 && keyD()=1 then ROTATE=1:D=1 5130 NEXT_CX=CX+DCX:NEXT_CY=CY:gosub 7700:gosub 7600:'衝突判定 5140 if B_COLLISION=0 then CX=NEXT_CX 5150 if ROTATE=1 then 5160 gosub 9300:'仮に回転 5170 NEXT_CX=CX:NEXT_CY=CY:gosub 7600:'衝突判定 5180 if B_COLLISION=0 then sound 1,SOUND1:play 1:gosub 9330:'回転 5190 end if 5200 return 5300 '------- キースキャン------------- 5310 if keyL()=0 then L=0 5320 if keyR()=0 then R=0 5330 if keyD()=0 then D=0 5340 return 6000 '---------- ゲームオーバー ------------ 6010 sound 0,SOUND7:play 0:cls 6012 gosub 62000 6013 if MIN_HIGH_SCORE0 then GMAE_OVER=1:'ミノの出現時点で衝突したらゲームオーバー 7090 return 7100 '-------------- 落下判定 ---------------- 7110 for I=0 to BLOCK_NUM_PER_MINO-1 7120 BX=CX+CURRENT_MX[I]:BY=CY+CURRENT_MY[I] 7130 if BY=Y_BLOCK_NUM-1 then B_MINO_EXIST=0:gosub 7400:exit for 7250 next 7290 return 7300 '-------------- ゲーム盤初期化 -------------- 7310 for I=0 to Y_BLOCK_NUM-1 7320 GAME_BOARD[I]=EMPTY_ROW 7330 next 7350 return 7400 '-------------- 落下ミノをゲーム盤に固定 ----------- 7410 for J=0 to BLOCK_NUM_PER_MINO-1 7420 BX=CX+CURRENT_MX[J]:BY=CY+CURRENT_MY[J] 7440 GAME_BOARD[BY]=mid(GAME_BOARD[BY],0,BX)+"1"+mid(GAME_BOARD[BY],BX+1,X_BLOCK_NUM) 7445 TEMP_MUSIC_NO=MUSIC_NO 7450 if BY<15 then TEMP_MUSIC_NO=1 7460 if BY<10 then TEMP_MUSIC_NO=2 7465 if MUSIC_NO>0 && BY>16 then TEMP_MUSIC_NO=0 7466 if MUSIC_NO=2 && BY>12 then TEMP_MUSIC_NO=2 7470 if MUSIC_NO<>TEMP_MUSIC_NO then MUSIC_NO=TEMP_MUSIC_NO:sound 0,MUSIC[MUSIC_NO]:play 0 7480 next 7490 return 7500 '------------ ゲーム盤表示 ------------------ 7510 fill GAPX+1,GAPY+1,X_BLOCK_NUM*BLOCK_WIDTH,Y_BLOCK_NUM*BLOCK_WIDTH,0,set,F 7520 for I=0 to Y_BLOCK_NUM-1 7530 if GAME_BOARD[I]<>EMPTY_ROW then 7540 for J=0 to X_BLOCK_NUM-1 7550 if mid(GAME_BOARD[I],J,J+1)="1" then BX=J:BY=I:put GAPX+BX*BLOCK_WIDTH,GAPY+BY*BLOCK_WIDTH,BOX_FM,set,F 7560 next 7565 end if 7570 next 7580 return 7600 '---------------衝突判定 --------------- 7605 ' NEXT_CX,NEXT_CY,TEMP_MX[],TEMP_MY[]にブロックが移動した時に衝突するかを判定する 7606 ' ブロックと衝突:B_COLLISION=1,壁に衝突:B_COLLISION=2 7610 B_COLLISION=0 7620 for I=0 to BLOCK_NUM_PER_MINO-1 7630 BX=NEXT_CX+TEMP_MX[I]:BY=NEXT_CY+TEMP_MY[I] 7640 if BX<0 || BX>=X_BLOCK_NUM then B_COLLISION=2: exit for 7650 if BY>=Y_BLOCK_NUM then B_COLLISION=2: exit for 7670 if mid(GAME_BOARD[BY],BX,BX+1)="1" then B_COLLISION=1: exit for 7680 next 7690 return 7700 '----- 現在のミノ相対座標を仮変数に格納 ---------- 7710 for I=0 to BLOCK_NUM_PER_MINO-1 7720 TEMP_MX[I]=CURRENT_MX[I]:TEMP_MY[I]=CURRENT_MY[I] 7730 next 7740 return 9000 '--------- CX,CYに現在のミノを表示 ---------- 9010 for I=0 to BLOCK_NUM_PER_MINO-1 9020 BX=CX+CURRENT_MX[I]:BY=CY+CURRENT_MY[I]:put GAPX+BX*BLOCK_WIDTH,GAPY+BY*BLOCK_WIDTH,BOX_FM,set,F 9030 next 9040 return 9100 '-------- MINO_NOのミノを現在のミノに設定 ----------- 9110 for I=0 to BLOCK_NUM_PER_MINO-1 9120 CURRENT_MX[I]=MX[MINO_NO*BLOCK_NUM_PER_MINO+I] 9130 CURRENT_MY[I]=MY[MINO_NO*BLOCK_NUM_PER_MINO+I] 9140 next 9150 return 9200 '-------- ブロックのフレームメモリーの定義 ----------- 9210 BOX_FM=createFM(BLOCK_WIDTH,BLOCK_WIDTH):cls F,BOX_FM 9220 box 0,0,BLOCK_WIDTH-1,BLOCK_WIDTH-1,1,set,F,BOX_FM 9230 return 9300 '---------- ミノ右90°回転 (x,y)->(-y,x) ---------- 9301 ' TEMP_MX、TEMP_MYに回転した相対座標を格納 9310 for I=0 to BLOCK_NUM_PER_MINO-1 9320 TEMP_MX[I]=-CURRENT_MY[I]:TEMP_MY[I]=CURRENT_MX[I] 9325 next 9326 return 9330 '---------- 仮の相対座標を実際の相対座標に反映 ---------- 9340 for I=0 to BLOCK_NUM_PER_MINO-1 9350 CURRENT_MX[I]=TEMP_MX[I]:CURRENT_MY[I]=TEMP_MY[I] 9360 next 9370 return 9400 '-------------- スコア表示 ------------ 9405 putStr GAPX*2+X_BLOCK_NUM*BLOCK_WIDTH+6,0,format("SCORE:%-5D",SCORE),1,set,F 9410 putStr GAPX*2+X_BLOCK_NUM*BLOCK_WIDTH+6,FONT_HIGHT,format("LEVEL:%-5D",LEVEL),1,set,F 9420 return 9500 '-------------- 壁表示 --------------- 9510 fill 0,0,GAPX*2+X_BLOCK_NUM*BLOCK_WIDTH-1,GAPY*2+Y_BLOCK_NUM*BLOCK_WIDTH-1,1,set,F 9520 fill GAPX+1,GAPY+1,X_BLOCK_NUM*BLOCK_WIDTH,Y_BLOCK_NUM*BLOCK_WIDTH,0,set,F 9530 return 9600 '================== オープニング ====================== 9610 '----- スクリーンの座標初期化 ------- 9620 cls 9630 COMMENT="PUSH B KEY" 9640 TITLE_X=(SCREEN_WIDTH-strlen(GAME_TITLE)*FONT_WIDTH)/2 9650 TITLE_Y=(SCREEN_HIGHT-2*FONT_HIGHT)/3 9660 putStr TITLE_X,TITLE_Y,GAME_TITLE,1 9670 COMMENT_X=(SCREEN_WIDTH-strlen(COMMENT)*FONT_WIDTH)/2 9680 putStr COMMENT_X,TITLE_Y*2,COMMENT,1 9700 '--------------- KeyB待ち --------------- 9710 KEY_B_PUSHED=0 9720 while -1 9730 for I=0 to 20 9735 if keyA()=1 && keyB()=1 then KEY_B_PUSHED=1:B_END=1:exit for:'AとBを両方押したらプログラム終了 9740 if keyB()=1 then KEY_B_PUSHED=1:exit for 9750 sleep 50 9760 next 9770 putStr COMMENT_X,TITLE_Y*2,COMMENT,1,xor,T 9780 if KEY_B_PUSHED=1 then sleep 1000:exit while 9795 end while 9796 return 9800 '---- ステージ初期表示 -------- 9810 cls:gosub 9500:'壁表示 9820 gosub 9400:'スコア表示 9830 gosub 11000:'応援アニメーション初期化 9840 update 9850 return 10000 girl01=createFM(ANIME_F_WIDTH,ANIME_F_HIGHT) 10001 setBM girl01,0,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10002 setBM girl01,1,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10003 setBM girl01,2,"0000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000" 10004 setBM girl01,3,"0000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000" 10005 setBM girl01,4,"0000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000" 10006 setBM girl01,5,"0000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000" 10007 setBM girl01,6,"0000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000" 10008 setBM girl01,7,"0000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000" 10009 setBM girl01,8,"0000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000" 10010 setBM girl01,9,"0000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000" 10011 setBM girl01,10,"0000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000" 10012 setBM girl01,11,"0000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000" 10013 setBM girl01,12,"0000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000" 10014 setBM girl01,13,"0000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000" 10015 setBM girl01,14,"0000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000" 10016 setBM girl01,15,"0000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000" 10017 setBM girl01,16,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000" 10018 setBM girl01,17,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000" 10019 setBM girl01,18,"0000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000" 10020 setBM girl01,19,"0000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000" 10021 setBM girl01,20,"0000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000" 10022 setBM girl01,21,"0000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000" 10023 setBM girl01,22,"0000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000" 10024 setBM girl01,23,"0000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000" 10025 setBM girl01,24,"0000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000" 10026 setBM girl01,25,"0000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000" 10027 setBM girl01,26,"0000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000" 10028 setBM girl01,27,"0000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111110011111111111111111111111111111111111000000000000000000000000000000" 10029 setBM girl01,28,"0000000000000000000000001111111111111111111111111111111111111111100111111111111111111111111110011111111111111111111111111111111111000000000000000000000000000000" 10030 setBM girl01,29,"0000000000000000000000001111111111111111111111111111111111111111100111111111111111111111111110011111111111111111111111111111111111000000000000000000000000000000" 10031 setBM girl01,30,"0000000000000000000000001111111111111111111111111111111111111111100111111111111111111111111110011111111111111111111111111111111111111000000000000000000000000000" 10032 setBM girl01,31,"0000000000000000000000001111111111111111111111111111111111111111100111111111111111111111111110011111111111111111111111111111111111111000000000000000000000000000" 10033 setBM girl01,32,"0000000000000000000000001111111111111111111111111111111111111111100111111111111111111111111110011111111111111100011111111111111111111000000000000000000000000000" 10034 setBM girl01,33,"0000000000000000000001111111111111111111111111111111111111111111100111111111111111111111111110011111111111111100011111111111111111111000000000000000000000000000" 10035 setBM girl01,34,"0000000000000000000001111111111111111111111111111111111111111111100111111111111111111111111110011111111111111100011111111111111111111000000000000000000000000000" 10036 setBM girl01,35,"0000000000000000000001111111111111111111111111111111111111111001100111111111111111111111111110011111111111111100011111111111111111111000000000000000000000000000" 10037 setBM girl01,36,"0000000000000000000001111111001111111111111111110001111111111001100111111111111111111111111110011111111111111100011111111111111111111111000000000000000000000000" 10038 setBM girl01,37,"0000000000000000000001111110001111111111111111110001111111111001100011111111111111111111111110001111111111111100011111111111111111111111100000000000000000000000" 10039 setBM girl01,38,"0000000000000000000001111111001111111111111111110001111111111001100000111111111111111111111110000001111111111100011111111111111111111111100000000000000000000000" 10040 setBM girl01,39,"0000000000000000000001111111001111111111111111110001111111111001100000111111111111111111111110000001111111111100011111111111111111000111100000000000000000000000" 10041 setBM girl01,40,"0000000000000000000001111111001111111111111111110001111111111001100000111111111111111111111111100001111111111100011111111111111111000111100000000000000000000000" 10042 setBM girl01,41,"0000000000000000000001111111001111111111111111110001111111111001111100111111111111111111111111110001111111111100011100011111111111000111100000000000000000000000" 10043 setBM girl01,42,"0000000000000000000000001111001111111111111111110001111111111001111000111111111111111111111111100001111111111100011100011111111111000111100000000000000000000000" 10044 setBM girl01,43,"0000000000000000000000001110001111111111111111110000001111000000000000110011111111111111110000000000011111111100011100011111111111000011011100000000000000000000" 10045 setBM girl01,44,"0000000000000111100011110010001111111111111111110000001111000000000000110001111111111111110000000000001111111100011100011111111111000000011100011111000000000000" 10046 setBM girl01,45,"0000000000001111100011110010001111111111111111110001101100000000000000110001111111111110111111111110001111111100011100011111111111100000011100011111000000000000" 10047 setBM girl01,46,"0000000000001111100011110010001111111111100011110001110000000111111111110001111111111110011111111110001111001100011100011111111111100000011100011111000000000000" 10048 setBM girl01,47,"0000000000000011100011110010001111111111100011110001110000001111111111110001111111111110011111111110000110000000011100011111111111100000011100011100000000000000" 10049 setBM girl01,48,"0000000000000011100011110000001111111111100011110000000001111000000011110001110011111110011000000001111000000000011100011111111110000000011100011100000000000000" 10050 setBM girl01,49,"0000000000000011100011110000000001111111100011110000000011111000000011110001110011111110011000000001111000000000011100011111111110000000011100011100000000000000" 10051 setBM girl01,50,"0000000001100011110011110000000000111111100011110000001111111000000011110001110011111110011111111111111000111111111100011111110100000000011111111100011000000000" 10052 setBM girl01,51,"0000000011100011111111110011111000111111100011111110001111111111111111110001110011111100011111111111111100111111111100011111110001111100011111111100111100000000" 10053 setBM girl01,52,"0000000011110011111111110011111100111111100011111110011111111111111111111111110011100011111111111111111111000111111100011111110001111100011111111100111100000000" 10054 setBM girl01,53,"0000000011110011111111100011111000111111100011111110001111111111111111111111110011100011111111111111111111000111111100011111110001111110011111111100111100000000" 10055 setBM girl01,54,"0000000011110011111110011111111000011111100011111111100000000000000011111111111100011111111000000000000000011111111100011111110000111111100011111111111100000000" 10056 setBM girl01,55,"0000000001111111111110011111100000011111100011111111100000000000000011111111111110011111110000000000000000111111111100011111110000011111100011111111100000000000" 10057 setBM girl01,56,"0000000000011111111110011111100000011111100011111111100000000000000001111111111111111111110000000000000000011111111100011111110000001111100111111111100000000000" 10058 setBM girl01,57,"0000000000011111111111111111000000000111100011111110000000000000000001111111111111111111110000000000000000001111111100011110000000001111111111111111100000000000" 10059 setBM girl01,58,"0000000000011111111111111111000000000111100011111110000001111100000001111111111111111111110001111100000000000111111100011110000000000111111111111111100000000000" 10060 setBM girl01,59,"0000000000011111111111111100000000000111100011111110000001111100000001111111111111111111110001111100000000000111111100011110000011000001111111111111100000000000" 10061 setBM girl01,60,"0000000000011111111111111100001100011000000011110000000001111100000001111111111111111111110001111100000000000000111100000001100011000000111111111111100000000000" 10062 setBM girl01,61,"0000000000001111111111001111111100111000000011110000000001111100000001111111111111111111110001111100000000000000111100000001110011111111110111111110000000000000" 10063 setBM girl01,62,"0000000000000011111110000111111100011000000011110001110001111100000001111111111111111111110001111100000000000000111100000011110011111111000011111100000000000000" 10064 setBM girl01,63,"0000000000000111111000111111111100111111100011110001110001111100000001111111111111111111110001111100000000111000111100111100000011111111000011111100000000000000" 10065 setBM girl01,64,"0000000000000000000001111111110000000011100011110001110001111100000001111111111111111111110001111100000000111000111100111100000000011111111000000000000000000000" 10066 setBM girl01,65,"0000000000000000000001111111100000000011100011110001110001111100000001111111111111111111110001111100000000111000111100111100000000001111111000000000000000000000" 10067 setBM girl01,66,"0000000000000000001111111111000001111011100011110001110001111100000001111111111111111111110000000000000000111000111100111001111000001111111111000000000000000000" 10068 setBM girl01,67,"0000000000000000001111111111000011111001100011110001110000000000000001111111111111111111110000000000000000111000111100010001111100001111111111000000000000000000" 10069 setBM girl01,68,"0000000000000000001111111000111111111000000011110001110000000000000001111111111111111111110000000000000000111000111100000001111111110001111111000000000000000000" 10070 setBM girl01,69,"0000000000000000001111111000111111111100000011110001110000000000000001111111111111111111110000000000000000111000111100000011111111110001111111000000000000000000" 10071 setBM girl01,70,"0000000000000000001111111101111111111100000011111111110000000000000001111111111111111111110000000000000000111111111100000011111111111111111110000000000000000000" 10072 setBM girl01,71,"0000000000000000000000000111111111111100000011111111110000000000000001111111111111111111110000000000000000111111111100000111111111111111000000000000000000000000" 10073 setBM girl01,72,"0000000000000000000000000111111111111111000011111111110000000000000001111111111111111111110000000000000000111111111100011111111111111111000000000000000000000000" 10074 setBM girl01,73,"0000000000000000000000111111111111111111100011111111111110000000000111111111111111111111111110000000000111111111111100011111111111111111110000000000000000000000" 10075 setBM girl01,74,"0000000000000000000001111111111111111111100011111111111110000000000111111111111111111111111111000000000111111111111100011111111111111111111000000000000000000000" 10076 setBM girl01,75,"0000000000000000000001111111111111111111100011111111111110000000000111111111111111111111111111000000000111111111111100011111111111111111110000000000000000000000" 10077 setBM girl01,76,"0000000000000000000000111111111111111111100011111111111111000001011111111111111111111111111111111111111111111111111100011111111111111111110000000000000000000000" 10078 setBM girl01,77,"0000000000000000000000001111111111111111100011111111111111111111111111111111111111111111111111111111111111111111111100011111111111111111000000000000000000000000" 10079 setBM girl01,78,"0000000000000000000000001111111111111111100011111111111111111111111111111111111111111111111111111111111111111111111100011111111111111111000000000000000000000000" 10080 setBM girl01,79,"0000000000000000000000001111111111111111100011111111111111111111111111111111111111111111111111111111111111111111111100011111111111111111000000000000000000000000" 10081 setBM girl01,80,"0000000000000000000000001111111111111111111100011111111111111111110000000000000000000000000001111111111111111111100011111111111111111111000000000000000000000000" 10082 setBM girl01,81,"0000000000000000000000000001111111111111111100011111111111111111110000000000000000000000000001111111111111111111100011111111111111111000000000000000000000000000" 10083 setBM girl01,82,"0000000000000000000000000001111111111111111100011111111111111111110001000111111111111111111000111111111111111111110111111111111111111000000000000000000000000000" 10084 setBM girl01,83,"0000000000000000000000000001111111111111111111100011111111111111110011111111111111111111111000111111111111111100011111111111111111111000000000000000000000000000" 10085 setBM girl01,84,"0000000000000000000000000001111111111111111111100011111111111111110011111111111111111111111000111111111111111100011111111111111111111000000000000000000000000000" 10086 setBM girl01,85,"0000000000000000000000000000011111111111111111110011111111111111110000011111111111111111111000111111111111111110111111111111111111100000000000000000000000000000" 10087 setBM girl01,86,"0000000000000000000000000000011111111111111111111100111111111111110000011111111111111111100000111111111111100011111111111111111111000000000000000000000000000000" 10088 setBM girl01,87,"0000000000000000000000000000001111111111111111111100011111111111111110011111111111111111100011111111111111100011111111111111111110000000000000000000000000000000" 10089 setBM girl01,88,"0000000000000000000000000000000011111111111111111110001111111111111110001111111111111111000111111111111110001111111111111111111100000000000000000000000000000000" 10090 setBM girl01,89,"0000000000000000000000000000000011111111111111111110001111111111111111100001111111111100011111111111111110011111111111111111111100000000000000000000000000000000" 10091 setBM girl01,90,"0000000000000000000000000000000011111111111111111111110111111111111111100001111111111100011111111111111110011111111111111111111000000000000000000000000000000000" 10092 setBM girl01,91,"0000000000000000000000000000000000011111111111111111110000001111111111111111111111111111111111111110000001111111111111111111100000000000000000000000000000000000" 10093 setBM girl01,92,"0000000000000000000000000000000000011111111111111111110000001111111111111111111111111111111111111110000001111111111111111111000000000000000000000000000000000000" 10094 setBM girl01,93,"0000000000000000000000000000000000001111111111111111111110001111111111111111111111111111111111111110001111111111111111111110000000000000000000000000000000000000" 10095 setBM girl01,94,"0000000000000000000000000000000000000111111111111111111110000000000000000000000000000000000000000000001111111111111111111100000000000000000000000000000000000000" 10096 setBM girl01,95,"0000000000000000000000000000000000000111111111111111111110000000000000000000000000000000000000000000001111111111111111111100000000000000000000000000000000000000" 10097 setBM girl01,96,"0000000000000000000000000000000000000001111111111111111110000000000000001111111111111111110000111110001111111111111111110000000000000000000000000000000000000000" 10098 setBM girl01,97,"0000000000000000000000000000000000000000111111111111111110001111110001111111111111111111110001111111001111111111111111110000000000000000000000000000000000000000" 10099 setBM girl01,98,"0000000000000000000000000000000000000000011111111111111110001111110001111111111111111111110001111111001111111111111111100000000000000000000000000000000000000000" 10100 setBM girl01,99,"0000000000000000000000000000000000000000011111111111111110001111111110111111111111111111000111111111001111111111111110000000000000000000000000000000000000000000" 10101 setBM girl01,100,"0000000000000000000000000000000000000000000111111111111110001111111110001111111111111111000111111111001111111111111110000000000000000000000000000000000000000000" 10102 setBM girl01,101,"0000000000000000000000000000000000000000000011111111111110001111111110001111111111111110001111111110001111111111111000000000000000000000000000000000000000000000" 10103 setBM girl01,102,"0000000000000000000000000000000000000000000001111111111110001111111110000011111111111000001111111110001111111111110000000000000000000000000000000000000000000000" 10104 setBM girl01,103,"0000000000000000000000000000000000000000000000111111111110001111111111110000000000000001111111111110001111111111110000000000000000000000000000000000000000000000" 10105 setBM girl01,104,"0000000000000000000000000000000000000000000000001111111110001111111111111000000000000001111111111110001111111111000000000000000000000000000000000000000000000000" 10106 setBM girl01,105,"0000000000000000000000000000000000000000000000001111111110001111111111111000000000000001111111111110001111111111000000000000000000000000000000000000000000000000" 10107 setBM girl01,106,"0000000000000000000000000000000000000000000000001111111111111111111111111110001111000111111111111111111111111110000000000000000000000000000000000000000000000000" 10108 setBM girl01,107,"0000000000000000000000000000000000000000000000000001110001111111111111111110001111001111111111111111111001111000000000000000000000000000000000000000000000000000" 10109 setBM girl01,108,"0000000000000000000000000000000000000000000000000001110001111111111111111111001111001111111111111111111001110000000000000000000000000000000000000000000000000000" 10110 setBM girl01,109,"0000000000000000000000000000000000000000000000000001110001111111111111111111001111001111111111111111111001110000000000000000000000000000000000000000000000000000" 10111 setBM girl01,110,"0000000000000000000000000000000000000000000000000001110001111111111111111111001111001111111111111111111000110000000000000000000000000000000000000000000000000000" 10112 setBM girl01,111,"0000000000000000000000000000000000000000000000000000000001111111111111111000001111001111111111111111111000000000000000000000000000000000000000000000000000000000" 10113 setBM girl01,112,"0000000000000000000000000000000000000000000000000000000001111111111111111000001111001111111111111111111000000000000000000000000000000000000000000000000000000000" 10114 setBM girl01,113,"0000000000000000000000000000000000000000000000000000000001111111111111111100001111111111111111111111111000000000000000000000000000000000000000000000000000000000" 10115 setBM girl01,114,"0000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000" 10116 setBM girl01,115,"0000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000" 10117 setBM girl01,116,"0000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000" 10118 setBM girl01,117,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10119 setBM girl01,118,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10120 setBM girl01,119,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10121 setBM girl01,120,"0000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000" 10122 setBM girl01,121,"0000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000" 10123 setBM girl01,122,"0000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000" 10124 setBM girl01,123,"0000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000" 10125 setBM girl01,124,"0000000000000000000000000000000000000000000000000011111111110000000000000000000000000000000000000000111111110000000000000000000000000000000000000000000000000000" 10126 setBM girl01,125,"0000000000000000000000000000000000000000000000000011111111110000000000000000000000000000000000000000111111110000000000000000000000000000000000000000000000000000" 10127 setBM girl01,126,"0000000000000000000000000000000000000000000000000011111111110000000000000000000000000000000000000001111111111100000000000000000000000000000000000000000000000000" 10128 setBM girl01,127,"0000000000000000000000000000000000000000000000000011111111111111111111111111111111111000111111111111111111111100000000000000000000000000000000000000000000000000" 10129 setBM girl01,128,"0000000000000000000000000000000000000000000000000011111111111111111111111111111111111000111111111111111111111100000000000000000000000000000000000000000000000000" 10130 setBM girl01,129,"0000000000000000000000000000000000000000000000011111111111111111111111111111111111111000111111111111111111111111100000000000000000000000000000000000000000000000" 10131 setBM girl01,130,"0000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000" 10132 setBM girl01,131,"0000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000" 10133 setBM girl01,132,"0000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000" 10134 setBM girl01,133,"0000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000" 10135 setBM girl01,134,"0000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000" 10136 setBM girl01,135,"0000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000" 10137 setBM girl01,136,"0000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000" 10138 setBM girl01,137,"0000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000" 10139 setBM girl01,138,"0000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000" 10140 setBM girl01,139,"0000000000000000000000000000000000000000000000000001111110001111111111111111111111111111111111111010000111111000000000000000000000000000000000000000000000000000" 10141 setBM girl01,140,"0000000000000000000000000000000000000000000000000011111110000000000001111111111111111111111000000000000111111100000000000000000000000000000000000000000000000000" 10142 setBM girl01,141,"0000000000000000000000000000000000000000000000000011111110000000000001111111111111111111111000000000000111111100000000000000000000000000000000000000000000000000" 10143 setBM girl01,142,"0000000000000000000000000000000000000000000000000011111111111110000000000000000000000000000000001111111111111100000000000000000000000000000000000000000000000000" 10144 setBM girl01,143,"0000000000000000000000000000000000000000000000000111111111111111000000000000000000000000000000001111111111111111000000000000000000000000000000000000000000000000" 10145 setBM girl01,144,"0000000000000000000000000000000000000000000000000111111111111111000000000000000000000000000000001111111111111110000000000000000000000000000000000000000000000000" 10146 setBM girl01,145,"0000000000000000000000000000000000000000000000000111111111111111000000000000000000000000000000001111111111111110000000000000000000000000000000000000000000000000" 10147 setBM girl01,146,"0000000000000000000000000000000000000000000000000111111111111111000000000000000000000000000000001111111111111111000000000000000000000000000000000000000000000000" 10148 setBM girl01,147,"0000000000000000000000000000000000000000000000000111111111111111000000000000000000000000000000001111111111111110000000000000000000000000000000000000000000000000" 10149 setBM girl01,148,"0000000000000000000000000000000000000000000000000111111111111111000000000000000000000000000000001111111111111110000000000000000000000000000000000000000000000000" 10150 setBM girl01,149,"0000000000000000000000000000000000000000000000000111111111111111000000000000000000000000000000001111111111111110000000000000000000000000000000000000000000000000" 10151 setBM girl01,150,"0000000000000000000000000000000000000000000000000111111111111111000000000000000000000000000000001111111111111110000000000000000000000000000000000000000000000000" 10152 setBM girl01,151,"0000000000000000000000000000000000000000000000000111111111111111000000000000000000000000000000001111111111111110000000000000000000000000000000000000000000000000" 10153 setBM girl01,152,"0000000000000000000000000000000000000000000000000111111111111111000000000000000000000000000000001111111111111110000000000000000000000000000000000000000000000000" 10154 setBM girl01,153,"0000000000000000000000000000000000000000000000000111111111111111000000000000000000000000000000001111111111111110000000000000000000000000000000000000000000000000" 10155 setBM girl01,154,"0000000000000000000000000000000000000000000000000111111111111111000000000000000000000000000000001111111111111110000000000000000000000000000000000000000000000000" 10156 setBM girl01,155,"0000000000000000000000000000000000000000000000000111111111111000000000000000000000000000000000000001111111111110000000000000000000000000000000000000000000000000" 10157 setBM girl01,156,"0000000000000000000000000000000000000000000000000111111111111000000000000000000000000000000000000001111111111110000000000000000000000000000000000000000000000000" 10158 setBM girl01,157,"0000000000000000000000000000000000000000000000000111111111111000000000000000000000000000000000000001111111111111000000000000000000000000000000000000000000000000" 10159 setBM girl01,158,"0000000000000000000000000000000000000000000000000111111111110000000000000000000000000000000000000000111111111110000000000000000000000000000000000000000000000000" 10160 setBM girl01,159,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10170 return 10200 girl02=createFM(ANIME_F_WIDTH,ANIME_F_HIGHT) 10201 setBM girl02,0,"0111100011111111111111111100000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000011111111111111111100" 10202 setBM girl02,1,"0111100011111111111111111100000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000011111111111111111100" 10203 setBM girl02,2,"0111111110000000001111111100000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000011111111000000001111" 10204 setBM girl02,3,"1111111110000000001111111100011100000000011111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000011111111000000001111" 10205 setBM girl02,4,"1000111110000000001111111100011100000000011111111111111111111111111111111111111111111111111111111111111111111111111111000000000000001111000011111110000000001111" 10206 setBM girl02,5,"1000111111111111100011111100011100000000111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000001111000111111000011111111111" 10207 setBM girl02,6,"1000111111111111100011111100011100000011111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000001111000111111000001111111111" 10208 setBM girl02,7,"0001111111111111100011111101111100000011111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000001111000111111000111111111111" 10209 setBM girl02,8,"0111111111111111100011111111111100000111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000001111111111111000111111111111" 10210 setBM girl02,9,"0111111111111111111111111111111100011111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000001111111111111101111111111111" 10211 setBM girl02,10,"0111111111111111111111111111111100011111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000001111111111111111111111111111" 10212 setBM girl02,11,"1111111111111111111111111111111100011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000001111111111111111111111111111" 10213 setBM girl02,12,"1111111111111111111111111111111100011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000001111111111111111111111111111" 10214 setBM girl02,13,"1111111111111000001111111111111100011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000001111111111111110000011111111" 10215 setBM girl02,14,"1111111111111000000111111111111100011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000001111111111111110000011111111" 10216 setBM girl02,15,"1111111111111100001111111111111100011111111111111111111111110001111111111111111110001111111111111111111111111111111111111111100000001111111111111110000011111111" 10217 setBM girl02,16,"1111111111111111111000111111110000011111111111111111111111110001111111111111111110001111111111111111111111111111111111111111111100000111111111111111111111111111" 10218 setBM girl02,17,"1111111111111111110000111111110000111111111111111111111111110001111111111111111110001111111111111111111111111111111111111111111110000111111111000001111111111111" 10219 setBM girl02,18,"1111111111111111110000111111110111111111111111111111111111110001111111111111111110001111111111111111111111111111111111111111111110000111111111000011111111111111" 10220 setBM girl02,19,"1111111111111111111110000000001111111111111111111111111111110001111111111111111110001111111111111111111111111111111111111111111110000000000000000011111111111111" 10221 setBM girl02,20,"0011111111111111111110000000000111111111111111111111111111110001111111111111111110001111111111111111111111111111111111111111111110000000000000011111111111111111" 10222 setBM girl02,21,"0011111111111111111110000000000111111111111111111111111111110001111111111111111110001111111111111111111111111111111111111111111110000000000000011111111111111111" 10223 setBM girl02,22,"0011111111111111111111111111000111111111111111111111111111110001111111111111111110001111111111111111111111111111111111111111111110000000111000011111111111111111" 10224 setBM girl02,23,"0011111111111111111111111111000111111111111111111111111100110001111111111111111110001111111111111111111111111111111111111111111110000000111111111111111111111111" 10225 setBM girl02,24,"0000011111111111111111111111000111111111111000111111111000010001111111111111111110001111100011111111100011111111111111111111111110000000111111111111111111111111" 10226 setBM girl02,25,"1100011111111111111111111111000111111111111000111111111100010001111111111111111110001111100011111111100011111111111111111111111110000000111111111111111111111111" 10227 setBM girl02,26,"1100011111111111111111111100000111111111111000111111111000010001111111111111111110001111100011111111100011111111111111111111111110000000001111111111111111111111" 10228 setBM girl02,27,"1100011111111111111111111100000111111111111000111111111000010000000111111111111110001111100011111111100011111111111111111111111110000111001111111111111011111111" 10229 setBM girl02,28,"1100011111100000111111111100000111111111111000111111111000011111000111111111111110001111100011111111100011111111111111111111111110000111000111111111111000111111" 10230 setBM girl02,29,"1100011111100000111111100011000111111111111000111111111000011111000111111111111110001111100011111111100011111111111111111111111110000111110001111111111000111111" 10231 setBM girl02,30,"1100011111100000111111100011000111111111111000111111111100011111000000111111111110001111100011111111100011111111111111111111111111111111110001111111100000111111" 10232 setBM girl02,31,"1100011111100000011100000111000111111111111000111111111100011111000000011111111110001111100011111111100011111111111111111111111111111111111110001111000000111111" 10233 setBM girl02,32,"1100011111100000011100011111000111111111111000111100000000011111111100011111111110001111100100001111100011111111111111111111111111111111111110001111000000111111" 10234 setBM girl02,33,"0000011111100000011110011111000111111111111000110111000011111111111100011111111110001111111100001111100011111111111111111111111111111111111110001111100000111111" 10235 setBM girl02,34,"0001111111100000011111111111000111111111111000110011000011111111111100011111111110001111111100001111100011111111111111111111111111111111111111111111000000111111" 10236 setBM girl02,35,"0001111111100000000011111111000111111111111000000011000011000000111100011111111110001110000000001111100011111111111111111111111111111111111111111000000000111111" 10237 setBM girl02,36,"0001111111100000000011111111000111111111111000000000000110000000111100011111111110001100000000001111100011111111111111111111111111111111111111111000000000111111" 10238 setBM girl02,37,"0011111111100000000001111111000111111111111000000000000110000000111111100001111110001100000000110000000001111111111111111111111111111111111111111000000000111111" 10239 setBM girl02,38,"1111111111100000000001111111000111100111111000000000111111111111111111100001111110001111111111110000000000000011111111111111111111111111111111100000000000111111" 10240 setBM girl02,39,"1111111111100000000000001111000111100001111000111111111111111111111111100001111110001111111111110000000000000000011111111111111111111111111110000000000000111111" 10241 setBM girl02,40,"1111111111100000000000001111000111100001111000111111111111111111111111111111111110001111111111110000111110000000011111111111111111111111111110000000000000111111" 10242 setBM girl02,41,"1111111111000000000000001110000000110001111000111110000000000000011111111110000111011000000000000000011111111100011111111111111111111111111110000000000000111111" 10243 setBM girl02,42,"0000000000000000000000001111111000110001111000111110000000000000011111111110000111111000000000000000011111111100011111111111111111111111111000000000000000000000" 10244 setBM girl02,43,"0000000000000000000000000011111000110001111000111110000000000000011111111111000111111000000000000000011111111100011111111111111111111111110000000000000000000000" 10245 setBM girl02,44,"0000000000000000000000000011111000110001111000111110000000000000011111111111111111111000000000000000001111111100011111111111111111111111110000000000000000000000" 10246 setBM girl02,45,"0000000000000000000000000011111000110001111000111110001111000000011111111111111111111000111100000000000001111100011111111111111111111110000000000000000000000000" 10247 setBM girl02,46,"0000000000000000000000000000011000110000000000111110001111000000011111111111111111111000111100000000000001111100011111111111111111111100000000000000000000000000" 10248 setBM girl02,47,"0000000000000000000000000000011100111000000000111110001111000000011111111111111111111000111100000000000001111100011111111111111111111100000000000000000000000000" 10249 setBM girl02,48,"0000000000000000000000000000011111111111111000111110001111000000011111111111111111111000111100000000011111111100011111111111111111111100000000000000000000000000" 10250 setBM girl02,49,"0000000000000000000000000000000011111111111000111110001111000000011111111111111111111000111100000000011111111100011111111111111111111100000000000000000000000000" 10251 setBM girl02,50,"0000000000000000000000000000000011111111111000111110001111000000011111111111111111111000111100000000011111111100011111111111111111111100000000000000000000000000" 10252 setBM girl02,51,"0000000000000000000000000000000011111111111000111110001111000000011111111111111111111000111100000000011111111100011111111111111111111100000000000000000000000000" 10253 setBM girl02,52,"0000000001100000000000000000000011111111111000111110001111000000011111111111111111111000111100000000011111111100011111111111111111111100000000000000000000111000" 10254 setBM girl02,53,"0000000001100000000000000000000000111111111000111110001110000000011111111111111111111000000000000000011111111100011111111111111111111100000000000000000000111000" 10255 setBM girl02,54,"0000000001100000000000000000000000111111111000111110000000000000011111111111111111111000000000000000011111111100011111111111111111111100000000000000000000111000" 10256 setBM girl02,55,"0000000001100000000000000000000000111111111000111110000000000000011111111111111111111000000000000000011111111100011111111111111111111100000000000000000000111000" 10257 setBM girl02,56,"0000000001100000000000000000000000000111111000111110000000000000011111111111111111111000000000000000011111111100011111111111111111111100000000000000000000111000" 10258 setBM girl02,57,"0000000001100000000000000000000000000011111000111110000000000000001111111111111111111000000000000000011111111100011111111111111111111100000000000000000000111000" 10259 setBM girl02,58,"0000000001100000000000000000000000000011111000111110000000000000001111111111111111111000000000000000011111111100011111111111111111111100000000000000000000111000" 10260 setBM girl02,59,"0000000001100000000000000000000000000011111000111110000000000000001111111111111111111000000000000000011111111100011111111111111111111100000000000000000000111000" 10261 setBM girl02,60,"0000000001100000000000000000000000000000111000111110000000000000001111111111111111111000000000000000111111111100011111111111111111111100000000000000000000111000" 10262 setBM girl02,61,"0000000001100000000000000000000000000000111000111111110000000001111111111111111111111111100000000011111111111100011111111111111111111100000000000000000000111000" 10263 setBM girl02,62,"0000000001100000000000000000000000000000111000111111110000000011111111111111111111111111100000000011111111111100011111111111111111111100000000000000000000111000" 10264 setBM girl02,63,"0000000001100000000000000000000000000000111000111111110000000011111111111111111111111111100000000011111111111100011111111111111111111100000000000000000000111000" 10265 setBM girl02,64,"0000000001100000000000000000000000000000111000111111111111111111111111111111111111111111100000000111111111111100011111111000111111111100000000000000000000111000" 10266 setBM girl02,65,"0000000001100000000000000000000000000000111000111111111111111111111111111111111111111111111111111111111111111100011111111000111111111100000000000000000000110000" 10267 setBM girl02,66,"0000000000000000000000000000000000000000111000111111111111111111111111111111111111111111111111111111111111111100011111111000111111111100000000000000000010000000" 10268 setBM girl02,67,"0000000000001110000000000000000000000000111000111111111111111111111111111111111111111111111111111111111111111100011111111000111111111100000000000000000110000000" 10269 setBM girl02,68,"1110000000001110000000000000000000000000111000111111111111111111111111111111111111111111111111111111111111111100011111111000111111111100000000000000000110000000" 10270 setBM girl02,69,"1110000000001110000000000000000000000000111000111111111111111111111011111111111111011111111111111111111111111100011111111000111111111100000000000000000110000000" 10271 setBM girl02,70,"1110000000001110000000000000000000000000111000111111111111111111111000000000000000001111111111111111111111111100011111111000111111111100000000000000000110000000" 10272 setBM girl02,71,"1110000000001110000000000000000000000000111000000111111111111111111000000000000000001111111111111111111111100011111111110000111111111100000000000000000110000000" 10273 setBM girl02,72,"1110000000001110000000000000000000000000111111100111111111111111111000000000000000011111111111111111111111100011111111110000111111111100000000000000000110000000" 10274 setBM girl02,73,"1110000000001110000000000000000000000000111111100111111111111111111111111111111111111111111111111111111111100011111111110000111111111100000000000000000110000000" 10275 setBM girl02,74,"1110000000001100000000000000000000000000111111101000111111111111111111111111111111111111111111111111111100011111111111110000111111111100000000000000000110000000" 10276 setBM girl02,75,"1100000000000001110000000000000000000000111111111000111111111111111111111111111111111111111111111111111000011111111110001111111111100000000000000001110000000000" 10277 setBM girl02,76,"0001110000000001110000000000000000000000001111111100011111111111111111111111111111111111111111111111111000011111111110001111111111100000000000000001110000000001" 10278 setBM girl02,77,"0001110000000001110000000000000000000000001111111111000111111111111111111111111111111111111111111111100001111111111110001111111111100000000000000001110000000001" 10279 setBM girl02,78,"0001110000000001110000000000000000000000001111111111000011111111111111111111111111111111111111111111000001111111111110001111111111100000000000000001110000000001" 10280 setBM girl02,79,"0001110000000000000000000000000000000000000011111111000011111111111111111111111111111111111111111111000111111111111110001111111111100000000000001100000000000001" 10281 setBM girl02,80,"0001110000000000000111000000000000000000000011111111111000000111111111111111111111111111111111111111000111111111111110001111111111100000000000011110000000000001" 10282 setBM girl02,81,"0000001110000000000111000000000000000000000011111111111000000000000000000000000000000000000000000000000000000000000011111111111100000000000000011100000000000000" 10283 setBM girl02,82,"0000001110000000000111000000000000000000000001111111111000000000000000000000000000000000000000000000000000000000000011111111111000000000000000001100000000001110" 10284 setBM girl02,83,"0000001110000000000000011100000000000000000000011111111111110000000000001111111111111111110000000000000000000000000011111111111000000000000011000000000000001110" 10285 setBM girl02,84,"0000001110000000000000011100000000000000000000111111111111110001111110001111111111111111111000111110001111100001111111111111111000000000000111000000000000001110" 10286 setBM girl02,85,"0000000000000000000000011000000000000000000000000111111111110001111110001111111111111111111000111110001111100001111100011111100000000000000011000000000000000000" 10287 setBM girl02,86,"0000000001110000000000000000000000000000000000000111111111110001111110001111111111111111110000111110001111100001111100011111100000000000000000000000000001100000" 10288 setBM girl02,87,"0000000001110000000000000000000000000000000000000111111111110001111111110001111111111110000111111110001111110001111100011100000000000000000000000000000001110000" 10289 setBM girl02,88,"0000000001110100000000000000000000000000000000000000000000000001111111110001111111111110000111111110001111111111111100011100000000000000000000000000000001110000" 10290 setBM girl02,89,"0000000000001100000000000000000000000000000000000000000000000001111111110001111111111110011111111110001111000111111000011100000000000000000000000000001110000000" 10291 setBM girl02,90,"0000000000001100000000000000000000000000000000000000000000000001111111111100000000000000011111111110001111000111100000000000000000000000000000000000001110000000" 10292 setBM girl02,91,"0000000000000000000000000000000000000000000000000000000000000001111111111110000000000000011111111110001111000111100000000000000000000000000000000000000110000000" 10293 setBM girl02,92,"0000000000000000000000000000000000000000000000000000000000000001111111111110000000000000011111111110000000110000000000000000000000000000000000000000000000000000" 10294 setBM girl02,93,"0000000000000000000000000000000000000000000000000000000000011111111111111110000111100011111111111111111000111000000000000000000000000000000000000000000000000000" 10295 setBM girl02,94,"0000000000000000000000000000000000000000000000000000000000011111111111111111100111100011111111111111111000000000000000000000000000000000000000000000000000000000" 10296 setBM girl02,95,"0000000000000000000000000000000000000000000000000000000000011111111111111111100111100011111111111111111000000000000000000000000000000000000000000000000000000000" 10297 setBM girl02,96,"0000000000000000000000000000000000000000000000000000000000011111111111111111100111100011111111111111111000000000000000000000000000000000000000000000000000000000" 10298 setBM girl02,97,"0000000000000000000000000000000000000000000000000000000000011111111111111111100111100011111111111111111000000000000000000000000000000000000000000000000000000000" 10299 setBM girl02,98,"0000000000000000000000000000000000000000000000000000000000011111111111111100000111100011111111111111111000000000000000000000000000000000000000000000000000000000" 10300 setBM girl02,99,"0000000000000000000000000000000000000000000000000000000000011111111111111100000111100011111111111111111000000000000000000000000000000000000000000000000000000000" 10301 setBM girl02,100,"0000000000000000000000000000000000000000000000000000000000011111111111111110000111100011111111111111111000000000000000000000000000000000000000000000000000000000" 10302 setBM girl02,101,"0000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000" 10303 setBM girl02,102,"0000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000" 10304 setBM girl02,103,"0000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000" 10305 setBM girl02,104,"0000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000" 10306 setBM girl02,105,"0000000000000000000000000000000000000000000000000000000111011100000000000000000000000000000000000000001000110000000000000000000000000000000000000000000000000000" 10307 setBM girl02,106,"0000000000000000000000000000000000000000000000000000000111000000000000000000000000000000000000000000000001110000000000000000000000000000000000000000000000000000" 10308 setBM girl02,107,"0000000000000000000000000000000000000000000000000000000111000000000000000000000000000000000000000000001111110000000000000000000000000000000000000000000000000000" 10309 setBM girl02,108,"0000000000000000000000000000000000000000000000000000000110000001111111111111111111111111111111111111000111110000000000000000000000000000000000000000000000000000" 10310 setBM girl02,109,"0000000000000000000000000000000000000000000000001111111100000001111111111111111111111111111111111111100001110111111000000000000000000000000000000000000000000000" 10311 setBM girl02,110,"0000000000000000000000000000000000000000000000001111111100000001111111111111111111111111111111111111100001011111111000000000000000000000000000000000000000000000" 10312 setBM girl02,111,"0000000000000000000000000000000000000000000000001111111111111110111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000" 10313 setBM girl02,112,"0000000000000000000000000000000000000000001111111111111111111110000000000000000000000000000000000000111111111111111111110000000000000000000000000000000000000000" 10314 setBM girl02,113,"0000000000000000000000000000000000000000001111111111111111111110000000000000000000000000000000000000111111111111111111110000000000000000000000000000000000000000" 10315 setBM girl02,114,"0000000000000000000000000000000000000000001111111111111111111110000000000000000000000000000000000000111111111111111111110000000000000000000000000000000000000000" 10316 setBM girl02,115,"0000000000000000000000000000000000000000111111111111111111111111111111100011111111111111111111111111111111111111111111100000000000000000000000000000000000000000" 10317 setBM girl02,116,"0000000000000000000000000000000000000000110001101111111111111111111111100011111111111111111111111111111111111111111110001111000000000000000000000000000000000000" 10318 setBM girl02,117,"0000000000000000000000000000000000111111111000001111111111111111111111100011111111111111111111111111111111111111110000001111111100000000000000000000000000000000" 10319 setBM girl02,118,"0000000001111000000000000000000000111111111111001111111111111111111111111111111111111111111111111111111111111111110000001111111100000000000000000000000111100000" 10320 setBM girl02,119,"0000000001111000000000000000000000111111111111001111111111111111111111111111111111111111111111111111111111111111110001111111111100000000000000000000000111100000" 10321 setBM girl02,120,"0000000111111000000000001111111111111111111111000000111111111111111111111111111111111111111111111111111111111111110001111111111111111111111100000000001111100000" 10322 setBM girl02,121,"0000000111111111000000001111111111111111111111100000111111111111111111111111111111111111111111111111111111111100000011111111111111111111111100000000011111100000" 10323 setBM girl02,122,"0000000111111111100000001111111111111111111111100000111111111111111111111111111111111111111111111111111111111100000111111111111111111111111100000001111111100000" 10324 setBM girl02,123,"0000000111111111100000001111111111111111111111111111000011111111111111111111111111111111111111111111111111011011111111111111111111111111111100000001111111100000" 10325 setBM girl02,124,"0000000111111111111111111111111111111111111111111111000011111111111111111111111111111111111111111111111111000001111111111111111111111111111111111111111111100000" 10326 setBM girl02,125,"0000000111111111111111111111111111111111111111111110000011111111111111111111111111111111111111111111111111000001111111111111111111111111111111111111111111100000" 10327 setBM girl02,126,"0000000111111111111111111111111111111111111111111110000011111111111111111111111111111111111111111111111111000001111111111111111111111111111111111111111111100000" 10328 setBM girl02,127,"0000000111111111111111111111111111111111111111111110000000000000000001111111111111111111111100000000000000000001111111111111111111111111111111111111111111100000" 10329 setBM girl02,128,"0000000111111111111111111111111111111111111111111110000000000000000000111111111111111111111100000000000000000001111111111111111111111111111111111111111111100000" 10330 setBM girl02,129,"0000000111111111111111111111111111111111111000000000000000000000000000111111111111111111111100000000000000000000000000001111111111111111111111111111111111100000" 10331 setBM girl02,130,"0000000111111111111111111111111111111111111000000000000000000000000000111111111111111111111100000000000000000000000000001111111111111111111111111111111111100000" 10332 setBM girl02,131,"0000000111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111100000" 10333 setBM girl02,132,"0000000111111111111111111111111111111101000000000000000000000000000000000000000000000000000000000000000000000000000000000100000111111111111111111111111111100000" 10334 setBM girl02,133,"0000000000111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111100000000" 10335 setBM girl02,134,"0000000000111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111110000000" 10336 setBM girl02,135,"0000000000111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111110000000" 10337 setBM girl02,136,"0000000000111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111110000000" 10338 setBM girl02,137,"0000000000111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111110000000" 10339 setBM girl02,138,"0000000000111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111110000000" 10340 setBM girl02,139,"0000000000111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111110000000" 10341 setBM girl02,140,"0000000000000111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011110000000000" 10342 setBM girl02,141,"0000000000000111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011110000000000" 10343 setBM girl02,142,"0000000000000111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000" 10344 setBM girl02,143,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10345 setBM girl02,144,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10346 setBM girl02,145,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10347 setBM girl02,146,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10348 setBM girl02,147,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10349 setBM girl02,148,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10350 setBM girl02,149,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10351 setBM girl02,150,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10352 setBM girl02,151,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10353 setBM girl02,152,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10354 setBM girl02,153,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10355 setBM girl02,154,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10356 setBM girl02,155,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10357 setBM girl02,156,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10358 setBM girl02,157,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10359 setBM girl02,158,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10360 setBM girl02,159,"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10370 return 10400 girl03=createFM(ANIME_F_WIDTH,ANIME_F_HIGHT) 10401 setBM girl03,0,"0000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000" 10402 setBM girl03,1,"0000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000" 10403 setBM girl03,2,"0000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000" 10404 setBM girl03,3,"0000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000" 10405 setBM girl03,4,"0000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111000011110000000000000000000000000000000000000000000" 10406 setBM girl03,5,"0000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111000111111000000000000000000000000000000000000000000" 10407 setBM girl03,6,"0000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111000111111000000000000000000000000000000000000000000" 10408 setBM girl03,7,"0000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111000011111000000000000000000000000000000000000000000" 10409 setBM girl03,8,"0000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111100111111111100000000000000000000000000000000000000" 10410 setBM girl03,9,"0000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000" 10411 setBM girl03,10,"0000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000" 10412 setBM girl03,11,"0000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000" 10413 setBM girl03,12,"0000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000" 10414 setBM girl03,13,"0000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000" 10415 setBM girl03,14,"0000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000" 10416 setBM girl03,15,"0000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000" 10417 setBM girl03,16,"0000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000" 10418 setBM girl03,17,"0000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000" 10419 setBM girl03,18,"0000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000" 10420 setBM girl03,19,"0000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000" 10421 setBM girl03,20,"0000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000" 10422 setBM girl03,21,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000" 10423 setBM girl03,22,"0000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000" 10424 setBM girl03,23,"0000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000" 10425 setBM girl03,24,"0000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000001111111111111000000000" 10426 setBM girl03,25,"0000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000001111111111111000000000" 10427 setBM girl03,26,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000010000001111111111111000000000" 10428 setBM girl03,27,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000110000001111111111111000011110" 10429 setBM girl03,28,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000111111110001111111111111000011110" 10430 setBM girl03,29,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000111111110001111111111000000011111" 10431 setBM girl03,30,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000111111110001111111110000011111111" 10432 setBM girl03,31,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111001111111111110001111111110000111111111" 10433 setBM girl03,32,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111001111111111110001111111110001111111111" 10434 setBM girl03,33,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111001111111111110001111111110001111111111" 10435 setBM girl03,34,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111001111111111110001111110010001111000111" 10436 setBM girl03,35,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111001111111111110001111100000111111000111" 10437 setBM girl03,36,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111001111111111111111111100000111111000000" 10438 setBM girl03,37,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000001111111111111111100011111111000000" 10439 setBM girl03,38,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000001111111111111111100011111100111110" 10440 setBM girl03,39,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000001111111111111111100011111100111111" 10441 setBM girl03,40,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000001111111000000001111111111111111111" 10442 setBM girl03,41,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111100011010001111110000000000111111100111111111" 10443 setBM girl03,42,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111100011110001111110000000001111111100011111111" 10444 setBM girl03,43,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111100011110001111110011111111111111110111111111" 10445 setBM girl03,44,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111100011110001111100011111111111110011111100011" 10446 setBM girl03,45,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111100011110011111100011111111111110001111100011" 10447 setBM girl03,46,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111100011111111111100011111111111111100011100011" 10448 setBM girl03,47,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111100011111111111111111111111111111100001111000" 10449 setBM girl03,48,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111100011111111111111111111111111111110011111000" 10450 setBM girl03,49,"0000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111100011111111111111111111111111111111111111000" 10451 setBM girl03,50,"0010000011111111111110000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111100011111111111111100011111111111111111111111" 10452 setBM girl03,51,"0111000011111111111110000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111100011111111111111100011111111111111110001111" 10453 setBM girl03,52,"0111000011111111111110000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111100011111111111111100011111111111111110001111" 10454 setBM girl03,53,"0111000000011111111110000111110001111111111111111111111111111111111111111111111111111111111111111111111111111111111100011111111111100010011111111111111110001111" 10455 setBM girl03,54,"1111000000001111111110000111110001111111111111111111111111111111111111111111111111111111111111111111111111111111111100011111111110000011111111111111111110001111" 10456 setBM girl03,55,"1111111110001111111110000111110001111111111111111111111111111111111111111111111111111111111111111111111111111111111100011111111100000111111111111111111110001111" 10457 setBM girl03,56,"1111111110001111111110000111110001111111111111111111111111111111111111111111111111111111111111111111111111111111111100011111111100011111111111111111111110000001" 10458 setBM girl03,57,"1111111110001111111110000111110001111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000111111111111111111111111110001" 10459 setBM girl03,58,"1111111110001111111110000111110001111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000111111111111111111111111110001" 10460 setBM girl03,59,"1111111110001111111110000111110001111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000111111111111111111000011110001" 10461 setBM girl03,60,"0000011110001111111110000111100011111111111111111111111111111111111111111111111111111111111111111111111111111111111111100011111111111111111111111111000011110001" 10462 setBM girl03,61,"0000011111110000011111111000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111000000011111111111111111111111111000011110001" 10463 setBM girl03,62,"0000011111110000011111111000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111000010011111111111111111111111100000011110001" 10464 setBM girl03,63,"0000011111111000011111111000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111000011100111111111111111111111000000011110001" 10465 setBM girl03,64,"0011011111111110011111111000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111000111100111111111111111111111000011111110001" 10466 setBM girl03,65,"1111100001111110011111111000011111111111111111111111111111111111111111111111111111111111111111111111111111111111100011111100011111111111111111111000011111110001" 10467 setBM girl03,66,"1111100001111110011111111000111111111111111111111111111111111111111111111111111111111111111111111111111111111111100011111111000111111110000011111000011111110001" 10468 setBM girl03,67,"1111111111111111110000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111100001111111111000111111110000011111000011111110001" 10469 setBM girl03,68,"1111111111111111100000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111100001111111111000111111111000011111100011111110001" 10470 setBM girl03,69,"1111111111110011111100000111111111111111111111111111111111111111111111111111111111111111111111111111111111110000011111111111111000011111000011111100011111110001" 10471 setBM girl03,70,"1111111111110011111110011111111111111111111111111111111111111111111111111111111111111111111111111111111111110001111111111111111000011110000011111100011111110001" 10472 setBM girl03,71,"1111111110011111111110011111111111111111111111111111111111111111111111111111111111111111111111111111111111110001111111111111111000111110000011111100011111110001" 10473 setBM girl03,72,"1111111100011111111100011111111111111111111111111111111111111111111111111111111111111111111111111111111110000001111111111111111111110000000011111111000111110001" 10474 setBM girl03,73,"1111111100011111100000011111111111111111111111111111111111111111111111111111111111111111111111111111111110001111111111111111111111110000000011111111000011110001" 10475 setBM girl03,74,"1111111110011111110000111111111111111111111111111111111111111111111111111111111111111111111111111111111110001111111111111111111111110000000011111111000011111001" 10476 setBM girl03,75,"1111100011111111110000111111111111111111111111111111111111111111111111111111111111111111111111111111110000011111111111111111111110000000000011111111000000011110" 10477 setBM girl03,76,"1111100011111111111100111111000111111111111111111111111111111111111111111111111111111111111111111111110001111111111111111111111110000000000011111111111000111110" 10478 setBM girl03,77,"1111110011111111111100111111000111111111000111111111111111111111111111111111111111111111111111111111110001111111111111111111111110000000000011111111111000111100" 10479 setBM girl03,78,"0000011111111111111100000000000111111110000111111111111111111111111111111111111111111111111111111111110001111111111111111111111000000000000011111111111000000000" 10480 setBM girl03,79,"0000011111111111111100000000011111111110000111111111111111111111111111111111111111111111111111111111000111111111111111111111111000000000000011111111111000000000" 10481 setBM girl03,80,"0000011111111111111100000000111111111110000111111111111111111111111111111111111111111111111111111110000111111111111111111111111000000000000000000000000000000000" 10482 setBM girl03,81,"1100011111111111111111111000111111111110000111111111111111111111111111111111111111111111111111111110000111111111111111111111000000000000000000000000000000000000" 10483 setBM girl03,82,"1100011111111111111111111000111111111110000111111111111111000011111111111111001111111111111111111100001111111111111111111111100000000000000000000000000000000000" 10484 setBM girl03,83,"1100011111111111111111111000111111111110000111111111111111000011111111111110001111111111111111111000001111111111111111111111000000000000000000000000000000000000" 10485 setBM girl03,84,"1100011111111111111111111000111111111110000111111111111111000011111111111110001111111111111111110001111111111111111111111000000000000000000000000000000000000000" 10486 setBM girl03,85,"1100011111111110001111111000111111111110000000111111111111000011111111111110001111111111111111110001111111111111111111111000000000000000000000000000000000000000" 10487 setBM girl03,86,"1100011111111110001111111000000111111110000000111111111111000011111111111110001111111111111111000001111111111111111111111000000000000000000000000000000000000000" 10488 setBM girl03,87,"1100011111111110001111111000000111110001111000111111111111000000011111111110001111111111111100000111111111111111111111000000000000000000011000000000111000000000" 10489 setBM girl03,88,"1100011111111110001111111111100111110001111100001111111111000000011111111110001111111111111100000111111111111111111111000000000000000000011000000000111000000000" 10490 setBM girl03,89,"1100011111111110001111111111110000000001111110001111111111111100011111111111001111111111111100000111111111111111111111000000000000000000011000000000111000000000" 10491 setBM girl03,90,"0000011111111110001111111111110000001111111111001111111111111111110111111111000000111111110000000111111111111111111000000000000000000000011000000000111000000000" 10492 setBM girl03,91,"0000011111111110001111111111110000011111111111000001111111111111100001111111001000111110000000100111111111111111111000000000000000000000011100000000111000000000" 10493 setBM girl03,92,"0000011111111100001111111111111110001111111110000001111111111111110001111111111000111110000000111110111111111111111000000000000000000000011100000000111000000000" 10494 setBM girl03,93,"1100011111100000001111111111111111000000000000000001111111111111110001111111111000111110000001111000111111111111000000000000000000000000011100000000111000000000" 10495 setBM girl03,94,"1100011111100011111111111111111111000000000000000000000000011111111110000011111110000011111111111000111111111111000000000000000000000000011100000000111000000000" 10496 setBM girl03,95,"1100011111100011111001111111111111000000000000000000000000011111111110000011111110000011111111111000111111111111000000000000000000000000011100000000111000000000" 10497 setBM girl03,96,"1100011111100011111000001111111111000000000000000000000000011111111110010111111110000011111111111000000111111000000000000000000000000000011100000000111000000000" 10498 setBM girl03,97,"1100011111100011111000001111111000000000000000000000000000011111111111111111111111111111111111111111000011111000000000000000000000000010000000000000111000000000" 10499 setBM girl03,98,"1100011111100011111000000111111000000000000000000000000000011111111111111111111111111111111111111111000011111000000000000000000000000011100000000000111000000000" 10500 setBM girl03,99,"0111111000111111111000000111111000000000000000000000000000011111111111111111111111111111111111111111000000000000000000000000000000000011100000000000111000000000" 10501 setBM girl03,100,"0111111000111111111000000111110000000000000000000000000000011111111111111111111111111111111111111111111100000000000000000000000000000011100000000110000000000000" 10502 setBM girl03,101,"0111111000111111111000000000000000000000000000000000000000011111111111111111111111111111111111111111111100000000000000000000000000000011100000000111000000000000" 10503 setBM girl03,102,"0011111000111111111000000000000000000000000000000000000000011111111111111111111111111111111111111111111100000000000000000000000000000000000000000111000000000000" 10504 setBM girl03,103,"0000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111100000000000000000000000000111100000000000111000000000000" 10505 setBM girl03,104,"0000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111100000000000000000000000000111100000000000111000000000000" 10506 setBM girl03,105,"0000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111100000000000000000000000000111000000000000110000000000000" 10507 setBM girl03,106,"0000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111100000000000000000000000111000000000000000111000000000000" 10508 setBM girl03,107,"0000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111100000000000000000000000111000000000000001110000000000000" 10509 setBM girl03,108,"0000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111100000000000000000000000111000000000000001110000000000000" 10510 setBM girl03,109,"0000000000000000000001100000000000000000111110000000000000011111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000" 10511 setBM girl03,110,"0000000000000000000001100000000000000000111110000000000000011111111111111111111111111111111111111111111100000000000000000000000000000000000001110000000000000000" 10512 setBM girl03,111,"0000000000000000000001100000000000000000111110000000000000011111111111111111111111111111111111111111111100000000000000000000000000000000000001110000000000000000" 10513 setBM girl03,112,"0000000000000000000000011000000000000000111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001110000000000000000" 10514 setBM girl03,113,"0000000000000000000000011100000000000000111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10515 setBM girl03,114,"0000000000001110000000011100000000000000111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000" 10516 setBM girl03,115,"0000000000001110000000000000000000000000111110000000000000111111111111111111111111111111111111111111111110000000000000000000000000000000001100000000000000000000" 10517 setBM girl03,116,"0000000000001110000000000011111000000000111110000000000001111111111111111111111111111111111111111111111111000000000000000000000000000000001100000000000000000000" 10518 setBM girl03,117,"0000000000001110000000000011111000000000111110000000000001111111111111111111111111111111111111111111111111000000000000000000000000000011110000000000000000000000" 10519 setBM girl03,118,"0000000000001110000000000011000000000000111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011110000000000000000000000" 10520 setBM girl03,119,"0000000000001100000000000000000000000000111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10521 setBM girl03,120,"0000000000000000000000000000000000000000111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 10522 setBM girl03,121,"0000000000000001110000000000000000000000111111111000000111111111111100001111111110001111111111111111111111111100000000000000000000000000000000000000000000000000" 10523 setBM girl03,122,"0000000000000001110000000000000000000000000111111000001111111111111110001111111110001111111111111111111111111100000000000000000000000000000000000000000000000000" 10524 setBM girl03,123,"0000000000000001110000000000000000000000000111111000001111111111111110001111111110001111111111111111111111111100000000000000000000000000000000000000000000000000" 10525 setBM girl03,124,"0000000000000000111000000000000000000000000011111111101111111111111100011111111110001111111111111111111111111100000000000000000000000000000000000000000000000000" 10526 setBM girl03,125,"0000000000000000000000000000000000000000000011111111110000000000000001111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000" 10527 setBM girl03,126,"0000000000000000000111000000000000000000000000111111110000000000000001111111000011111111111111111111111111111111110000000000000000000000000000000000000000000000" 10528 setBM girl03,127,"0000000000000000000111000000000000000000000000111111110000000000000001111111000011111111111111111111111111111111110000000000000000000000000000000000000000000000" 10529 setBM girl03,128,"0000000000000000000000000000000000000000000000000001111111111111111111110000010111111111111111111111111111111111110000000000000000000000000000000000000000000000" 10530 setBM girl03,129,"0000000000000000000000011111000000000000000000000001111111111111111111110000111111111111111111111111111111111111110000000000000000000000000000000000000000000000" 10531 setBM girl03,130,"0000000000000000000000011111000000000000000000000001111111111111111111110000111111111111111111111111111111111100000000000000000000000000000000000000000000000000" 10532 setBM girl03,131,"0000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111100000000000000000000000000000000000000000000000000" 10533 setBM girl03,132,"0000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111100000000000000000000000000000000000000000000000000" 10534 setBM girl03,133,"0000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111110000000000000000000000000000000000000000000000000000000000" 10535 setBM girl03,134,"0000000000000000000000000000000000000000000000000000001111111100011111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000" 10536 setBM girl03,135,"0000000000000000000000000000000000000000000000000000001111111100011111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000" 10537 setBM girl03,136,"0000000000000000000000000000000000000000000000000000001111111100011111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000" 10538 setBM girl03,137,"0000000000000000000000000000000000000000000000000000001111111100000000000000000000000000000000000000001111111000000000000000000000000000000000000000000000000000" 10539 setBM girl03,138,"0000000000000000000000000000000000000000000000000000001111111111100000000000000000000000000000000000001111111000000000000000000000000000000000000000000000000000" 10540 setBM girl03,139,"0000000000000000000000000000000000000000000000000000001111111111000000000000000000000000000000000000001111111000000000000000000000000000000000000000000000000000" 10541 setBM girl03,140,"0000000000000000000000000000000000000000000000000000001111111111111111100000000000000000000111111111111111111000000000000000000000000000000000000000000000000000" 10542 setBM girl03,141,"0000000000000000000000000000000000000000000000000000001111111111111111100000000000000000000111111111111111111000000000000000000000000000000000000000000000000000" 10543 setBM girl03,142,"0000000000000000000000000000000000000000000000000000001111111111111111100000000000000000000111111111111111111000000000000000000000000000000000000000000000000000" 10544 setBM girl03,143,"0000000000000000000000000000000000000000000000000000001111111111111111100000000000000000000111111111111111111000000000000000000000000000000000000000000000000000" 10545 setBM girl03,144,"0000000000000000000000000000000000000000000000000000001111111111111111100000000000000000000111111111111111111000000000000000000000000000000000000000000000000000" 10546 setBM girl03,145,"0000000000000000000000000000000000000000000000000000001111111111111111100000000000000000000111111111111111111000000000000000000000000000000000000000000000000000" 10547 setBM girl03,146,"0000000000000000000000000000000000000000000000000000001111111111111111100000000000000000000111111111111111111000000000000000000000000000000000000000000000000000" 10548 setBM girl03,147,"0000000000000000000000000000000000000000000000000000001111111111111111100000000000000000000111111111111111111000000000000000000000000000000000000000000000000000" 10549 setBM girl03,148,"0000000000000000000000000000000000000000000000000000001111111111111111100000000000000000000111111111111111110000000000000000000000000000000000000000000000000000" 10550 setBM girl03,149,"0000000000000000000000000000000000000000000000000000001111111111111111100000000000000000000111111111111111110000000000000000000000000000000000000000000000000000" 10551 setBM girl03,150,"0000000000000000000000000000000000000000000000000000001111111111111111100000000000000000000111111111111111110000000000000000000000000000000000000000000000000000" 10552 setBM girl03,151,"0000000000000000000000000000000000000000000000000000001111111111111111100000000000000000000111111111111111110000000000000000000000000000000000000000000000000000" 10553 setBM girl03,152,"0000000000000000000000000000000000000000000000000000001111111111111111100000000000000000000111111111111111110000000000000000000000000000000000000000000000000000" 10554 setBM girl03,153,"0000000000000000000000000000000000000000000000000000001111111111111111100000000000000000000111111111111111110000000000000000000000000000000000000000000000000000" 10555 setBM girl03,154,"0000000000000000000000000000000000000000000000000000001111111111111111100000000000000000000111111111111111110000000000000000000000000000000000000000000000000000" 10556 setBM girl03,155,"0000000000000000000000000000000000000000000000000000001111111111111111100000000000000000000111111111111111110000000000000000000000000000000000000000000000000000" 10557 setBM girl03,156,"0000000000000000000000000000000000000000000000000000001111111111111100000000000000000000000000111111111111110000000000000000000000000000000000000000000000000000" 10558 setBM girl03,157,"0000000000000000000000000000000000000000000000000000001111111111111100000000000000000000000000011111111111110000000000000000000000000000000000000000000000000000" 10559 setBM girl03,158,"0000000000000000000000000000000000000000000000000000001111111111111100000000000000000000000000011111111111110000000000000000000000000000000000000000000000000000" 10560 setBM girl03,159,"0000000000000000000000000000000000000000000000000000001111111111111100000000000000000000000000011111111111110000000000000000000000000000000000000000000000000000" 10570 return 11000 ' 応援アニメーション 11010 ANIME_DX=12:ANIME_DY=12:ANIME_CX=20:ANIME_CY=0:ANIME_FM_NO=0 11020 get ANIME_X,ANIME_Y,ANIME_FM[ANIME_FM_NO],ANIME_CX,ANIME_CY,ANIME_WIDTH,ANIME_HIGHT,set,F 11030 ANIME_CX=ANIME_CX+ANIME_DX:if ANIME_CX>=ANIME_F_WIDTH-ANIME_WIDTH then ANIME_CX=ANIME_F_WIDTH-ANIME_WIDTH:ANIME_DX=-ANIME_DX 11040 if ANIME_CX<0 then ANIME_CX=0:ANIME_DX=-ANIME_DX 11050 ANIME_CY=ANIME_CY+ANIME_DY:if ANIME_CY>=ANIME_F_HIGHT-ANIME_HIGHT then ANIME_CY=ANIME_F_HIGHT-ANIME_HIGHT:ANIME_DY=-ANIME_DY 11060 if ANIME_CY<0 then ANIME_CY=0:ANIME_DY=-ANIME_DY:ANIME_FM_NO=(rand()*ANIME_FM_NUM-1)/255 11070 return 12000 'music 12010 dim MUSIC[3] 12050 S1="T100V1L16_A3E4A4C5_E4A4C5A4_G4D4G4B4_D4G4B4G4_F4C4F4A4_C4F4A4F4_E4B3E4G4_B3E4G4E4_A3E4A4C5_G4E4C5A4_B3F4B4D5_F4B4D5B4_C4G4C5E5_G4C5E5C5_B3F4B4D5_F4B4D5B4" 12060 S2="A4E4C5E4_A4E4C5E4_G4D4B4D4_G4D4B4D4_F4C4A4C4_F4C4A4C4_E4B3G4B3_E4B3G4B3_D4A3F4A3_E4B3G4B3_F4C4A4C4_G4D4B4D4_A4E4C5E4_B4F4D5F4_C5G4E5G4_L8A4_L16A3." 12070 MUSIC[0]=S1+S2 12080 S1="T150V1L16_A3A#3A3A#3_A3A#3C4A#3_B3C4B3C4_B3C4D4C4_E4F4E4F4_E4F4G4F4_A4G#4A4G#4_A4G#4F4E4_A3A#3A3A#3_C4B3A3A#3_D4C#4D4C#4_D4C#4B3A3_F4E4F4E4_F4E4D4C4_A4G4F4E4_D4C4B3A3" 12090 S2="A3C4E4F4_G4F4E4C4_B3D4F4G4_A4G4F4D4_C4E4G4A4_B4A4G4E4_D4F4A4B4_C5B4A4F4_E4F4E4D4_C4B3A3A#3_A3A#3C4D4_E4D4C4A#3_B3C4D4E4_F4E4D4C4_A3A#3A3A#3_L8A3_L16A3." 12100 MUSIC[1]=S1+S2 12120 S1="T180V1L16_C4E4G4C5_G4E4C4E4_D4F4A4D5_A4F4D4F4_E4G4C5E5_C5G4E4G4_C5A4F4D4_E4G4C5._G4B4D5G5_D5B4G4B4_A4C5E5A5_E5C5A4C5_F4A4C5F5_C5A4F4A4_E4G4C5E5_G4E4C4E4" 12130 S2="C5C4C5C4_G4G5G4G5_A4A5A4A5_E5E4E5E4_F4D5F4D5_A4C5A4C5_G4E5G4E5_C5G4E4C4_D4F4A4D5_C5A4F4D4_E4G4C5E5_G5E5C5G4_A4C5E5A5_L8G5E5_L16C5G4E4C4." 12140 MUSIC[2]=S1+S2 12560 SOUND1="T150L64V200G5A6." 12570 SOUND2="T150L64V100G4B4V200G5V10B4B3G4." 12580 SOUND3="T150L64V200C7C6E5G5C7." 12590 SOUND4="T150L64V10C#6V200C#6A5V10A5V200A6A6V10A6." 12600 SOUND5="T150L32V200C#7F7F7V10F7L64." 12620 SOUND6="T150L128V200C7." 12650 SOUND7="L8." 12700 return 61000 '-------- EEPROMにハイスコアテーブルを保存する ------------ 61010 ADDR=0 61020 write ADDR,GAME_TITLE:ADDR=ADDR+16 61030 for I=0 to HIGH_SCORE_NUM-1 61040 write ADDR,format("%D",HIGH_SCORE[I]):ADDR=ADDR+16 61050 next 61060 return 61100 '-------- EEPROMからハイスコアテーブルを読み出す ------------ 61110 ADDR=0 61120 if GAME_TITLE=read(ADDR,strlen(GAME_TITLE)) then 61125 ADDR=ADDR+16 61130 for I=0 to HIGH_SCORE_NUM-1 61140 HIGH_SCORE[I]=val(read(ADDR,5)):ADDR=ADDR+16 61150 next 61160 end if 61170 return 62000 '---------ハイスコアテーブルの中の最大と最小を求める------------- 62010 MAX_HIGH_SCORE=0:MIN_HIGH_SCORE=100000 62020 for I=0 to HIGH_SCORE_NUM-1 62030 if HIGH_SCORE[I]>MAX_HIGH_SCORE then MAX_HIGH_SCORE=HIGH_SCORE[I] 62035 if MIN_HIGH_SCORE>HIGH_SCORE[I] then MIN_HIGH_SCORE=HIGH_SCORE[I] 62040 next 62050 return 62100 '--------ハイスコアテーブルを初期化する---------- 62110 for I=0 to HIGH_SCORE_NUM-1 62120 HIGH_SCORE[I]=0 62130 next 62140 return 62500 '--------ハイスコアテーブルを更新する---------- 62510 for I=0 to HIGH_SCORE_NUM-1 62520 if HIGH_SCORE[I]SCREEN_WIDTH then 480 PADDLE_X=SCREEN_WIDTH-PADDLE_WIDTH 490 end if 500 '--- ボール移動 --- 510 BALL_X=BALL_X+BALL_VX 520 BALL_Y=BALL_Y+BALL_VY 530 '--- 壁 --- 540 if BALL_X<0 then BALL_X=0:BALL_VX=-BALL_VX 550 if BALL_X+BALL_SIZE>SCREEN_WIDTH then 560 BALL_X=SCREEN_WIDTH-BALL_SIZE:BALL_VX=-BALL_VX 570 end if 580 if BALL_Y<0 then BALL_Y=0:BALL_VY=-BALL_VY 590 '--- パドル衝突 --- 600 if isCol(BALL_X,BALL_Y,BALL_SIZE,BALL_SIZE, PADDLE_X,PADDLE_Y,PADDLE_WIDTH,PADDLE_HEIGHT)=1 then 610 BALL_VY = -1 620 BALL_VX = (BALL_X + BALL_SIZE/2) - (PADDLE_X + PADDLE_WIDTH/2) 630 if BALL_VX>2 then BALL_VX=2 640 if BALL_VX<-2 then BALL_VX=-2 650 end if 660 '--- 落下 --- 670 if BALL_Y>SCREEN_HEIGHT then goto 1600 680 '--- ブロック衝突 --- 690 for BLOCK_INDEX=0 to BLOCK_COUNT-1 700 if BLOCK_ALIVE[BLOCK_INDEX]=1 then 710 BLOCK_COL = mod(BLOCK_INDEX,BLOCK_COLS) 720 BLOCK_ROW = BLOCK_INDEX / BLOCK_COLS 730 BLOCK_X = BLOCK_COL * BLOCK_WIDTH 740 BLOCK_Y = BLOCK_ROW * BLOCK_HEIGHT 750 if isCol(BALL_X,BALL_Y,BALL_SIZE,BALL_SIZE, BLOCK_X,BLOCK_Y,BLOCK_WIDTH,BLOCK_HEIGHT)=1 then 760 BLOCK_ALIVE[BLOCK_INDEX]=0 770 BALL_VY=1 780 end if 790 end if 800 next 810 '--- CLEAR 判定 --- 820 CLEAR_FLAG=1 830 for BLOCK_INDEX=0 to BLOCK_COUNT-1 840 if BLOCK_ALIVE[BLOCK_INDEX]=1 then CLEAR_FLAG=0 850 next 860 if CLEAR_FLAG=1 then goto 1700 870 gosub 2000 880 sleep 100 890 goto 400 1600 '==== GAME OVER ==== 1610 cls 1620 putStr 40,30,"GAME OVER",1 1630 end 1700 '==== CLEAR ==== 1710 cls 1720 putStr 45,30,"CLEAR!",1 1730 end 2000 '============================== 2010 ' 描画 2020 '============================== 2030 cls 2040 '--- ブロック --- 2050 for BLOCK_INDEX=0 to BLOCK_COUNT-1 2060 if BLOCK_ALIVE[BLOCK_INDEX]=1 then 2070 BLOCK_COL = mod(BLOCK_INDEX,BLOCK_COLS) 2080 BLOCK_ROW = BLOCK_INDEX / BLOCK_COLS 2090 box BLOCK_COL*BLOCK_WIDTH,BLOCK_ROW*BLOCK_HEIGHT,BLOCK_COL*BLOCK_WIDTH+BLOCK_WIDTH-1,BLOCK_ROW*BLOCK_HEIGHT+BLOCK_HEIGHT-1,1 2130 end if 2140 next 2150 '--- パドル --- 2160 box PADDLE_X,PADDLE_Y,PADDLE_X+PADDLE_WIDTH,PADDLE_Y+PADDLE_HEIGHT,1 2190 '--- ボール(2x2) --- 2200 box BALL_X,BALL_Y,BALL_X+BALL_SIZE-1,BALL_Y+BALL_SIZE-1,1 2230 return *** Project End ***