BASIC(COLOR)

カラフル/colorful PV

アニメ映画『カラフル』(2010)

重い感じで始まりますが、どうストーリーが進むのか気になって面白かったです。結末の予想はついていましたが感動で泣いてしまいました。

今回もBASICです。コンソールに表示する文字色と文字色を変えてみます。
color命令で数字を指定すれば、数字に割り当てられている色が設定できます。

書式) COLOR 文字色,背景色

takk@ubu16:~/basictest$ cat color.bas | nl -ba -i10 -v10
    10  '$lang: "qb"
    20
    30  cls
    40
    50  for i = 0 to 15
    60      y = int(i / 8) + 1
    70      x = (i mod 8) * 2 + 1
    80      locate y,x
    90      color i,8
   100      print "" & i
   110  next
takk@ubu16:~/basictest$


では作成中のゲームのマップに色を付けてみましょう。

takk@ubu16:~/basictest$ cat test.bas | nl -ba -i10 -v10
    10  '$lang: "qb"
    20
    30
    40  dim map$(30)
    50  '                    1         2         3
    60  '           12345678901234567890123456789012345
    70  map$(1)  = "###################################"
    80  map$(2)  = "###################################"
    90  map$(3)  = "###################################"
   100  map$(4)  = "#######S#   #    ##    ############"
   110  map$(5)  = "####### ### #### ## ## #    #######"
   120  map$(6)  = "####### #      #    ## #G## #######"
   130  map$(7)  = "####### # #### ### ### #### #######"
   140  map$(8)  = "#######      #     #        #######"
   150  map$(9)  = "###################################"
   160  map$(10) = "###################################"
   170  map$(11) = "###################################"
   180
   190  x = 8
   200  y = 4
   210
   220  while 1
   230    cls
   240
   250    color 2,1 'green on blue
   260    for yy = y-3 to y+3
   270      print mid$(map$(yy),x-7,15)
   280    next
   290
   300    color  5 'red
   310    locate 4,8
   320    print "*"
   330
   340    color ,0 'bgcolor=black
   350
   360    do
   370      let k$ = INKEY$
   380    loop until k$ <> ""
   390
   400    select case k$
   410    case "j"
   420      ck = y + 1
   430      if mid$(map$(ck),x,1) <> "#" and ck <= 8 then y = ck
   440    case "k"
   450      ck = y - 1
   460      if mid$(map$(ck),x,1) <> "#" and ck >= 4 then y = ck
   470    case "h"
   480      ck = x - 1
   490      if mid$(map$(y),ck,1) <> "#" and ck >= 8 then x = ck
   500    case "l"
   510      ck = x + 1
   520      if mid$(map$(y),ck,1) <> "#" and ck <= 28 then x = ck
   530    end select
   540  wend
   550
takk@ubu16:~/basictest$

コメント

タイトルとURLをコピーしました