「ブロック崩し」の編集履歴(バックアップ)一覧はこちら

ブロック崩し」(2010/05/26 (水) 12:56:04) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

#asciiart(blockquote){ 'ブロック崩し '操作方法 '←と→キーだけ。 #N88BASIC Const Xmax = 21 Const Ymax = 22 Const KABE=99 Const BALL=100 Const BAN=101 Dim map[Xmax,Ymax]'マップ情報 Dim k'のこりブロック数 Dim I$, x , y ,a'汎用 Dim c, wait'速度制御 Dim sx, sy'盤の位置 Dim bx, by 'ボールの位置 Dim bv, bh 'ボールの向き Dim dflag'デバッグモード dflag=0 Goto *MAIN '---------------------------- ' サブルーチンここから '---------------------------- '初期化 *INIT '変数の初期化 c=0 wait=8 bx=10:by=18 sx=10:sy=19 bh=-1:bv=1 'マップの初期化 For y=1 To Ymax map[1 ,y]=KABE map[Xmax,y]=KABE Next For x=1 To Xmax map[x ,1]=KABE map[x,Ymax]=KABE Next For y=4 To 9 For x=2 To Xmax-1 map[x ,y]=y-3 Next Next For x=1 To Xmax map[x ,1]=KABE Next map[bx,by]=BALL map[sx-1,sy]=BAN map[sx,sy]=BAN map[sx+1,sy]=BAN Return '描写 *DRAW k=0 For y=1 To Ymax For x=1 To Xmax Locate x,y Select Case map[x,y] Case KABE Print "X" Case BALL Print "o" Case BAN Print "=" Case 0 Print " " Case Else Color map[x,y],0 Print "X" k=k+1 Color 7,0 End Select Next Next If dflag=1 Then Locate 25, 5,:Print bx,by Locate 25, 6:Print bv, bh Locate 25, 7:Print sx,sy Locate 25, 8:Print k End If Return '盤の移動 *MOV If map[sx+2*a, sy] = 0 Then map[sx-1*a,sy] =0 map[sx+2*a, sy]=BAN sx=sx+a End If Return 'ボールの移動 *BALLMOV If by > sy+1 Then *GAMEOVER If map[bx+bh, by+bv]<>0 Then'壁に当たったら '反転 If map[bx+bh,by]<>0 Then bh=bh*-1 If map[bx,by+bv]<>0 Then bv=bv*-1 If map[bx+bh, by+bv]<>0 Then bv=bv*-1: bh=bh*Sgn(Rnd()-.5) End If If map[bx-bh, by-bv]>0 And map[bx-bh, by-bv]<7 Then map[bx-bh, by-bv]=0 If map[bx, by-bv]>0 And map[bx, by-bv]<7 Then map[bx, by-bv]=0 map[bx,by]=0 bx=bx+bh by=by+bv map[bx,by]=BALL Return '---------------------------- ' サブルーチンここまで '---------------------------- '---------------------------- ' メインルーチンここから '---------------------------- *MAIN GoSub *INIT Do GoSub *DRAW I$="" I$=Inkey$() Select Case Asc(I$) Case VK_LEFT a=-1 GoSub *MOV Case VK_RIGHT a=+1 GoSub *MOV End Select c=c+1 If c=wait Then GoSub *BALLMOV c=0 End If Loop While k *GAMEOVER Cls 3 Print "G A M E O V E R" INPUT I$ End '---------------------------- ' メインルーチンここまで '---------------------------- }

表示オプション

横に並べて表示:
変化行の前後のみ表示: