むかし「ワード使いづれーなあ改造とかできないのかな」って思って以来俺はプログラミングに興味があった。ソレ系の会社いってる仲間に入門書のおすすめとして紹介してもらったのが本書。紹介文をみると「プログラミング言語の習得ではなくプログラムを考え出す能力を身につけるのが本書の目的」とある。ってことは新書みたいなサイズなのかな? とアマゾンでポチる俺。

まさか500ページ級とは……。
まあともかく一日一章こなしてようやく読み終わったので感想、というか、この教本はプログラミング言語Sunabaをいじってカンタンなゲームを作る本なので、それにともなう苦労話とかそういう失敗メモをかく。本自体は文体がフランクなのでとても読みやすかった。カタくない、無礼でもない良いライン。

  • 空欄が1スペース分足らない。->タブを使うようにしてからなくなった。
  • 全体を書き直す際よけいな行も消しちゃう。->最後までやらかし続けた。
  • y' っていう変数を作ったんだが ' は使えないっぽい。
  • 入力元で(y, x + 1)、参照先でも(y, x + 1)って書いてた。->部分プログラム内の名前付メモリは他と独立している。みどりん覚えた。
  • 名前付メモリを作る際ハイフンは使えない。->マイナスとして扱われる。
  • 最初につっかかったのは10章。各マスにそれぞれメモリを割り当てるってのがうまく理解できなかった。いちばん知恵熱出したのは13章の表づくり。いま見直してもちょっと顔が強張る。

教本に従って作ったあと、練習としてゲームに点数要素を足した。

列を消すごとに点数がついて、10点でクリアが出る。それにともなう失敗メモが以下。

number -> 1
{numberに従って名前付メモリを作る}
名前付メモリに従って描画する()

def 名前付メモリに従って描画する()

だから部分プログラム内に外の名前付メモリは代入できないっつってんだろ。みどりんまったく覚えてない!

あと数字とかCLEARを描画するのに、

number()
def number()
    number -> 1
    while number <= 9
        if number = 1
            描画(1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1)
        if number = 2
{以下9まで}
        number -> number + 1
def 描画(number, aa, bb, cc, dd, ee, ff, gg, hh, ii, jj, kk, ll, mm, nn, oo)
    a -> 60000 + ((99 - (6 * number)) * 100) + 60
    b -> a + 1
{以下oまで}
    memory[a] -> 888888 * aa
    memory[b] -> 888888 * bb
{以下memory[o]まで}

こんなの書いたんだが、ありえないだろこのバカみたいな長さ…。どう短くすればよかったんだろ。(しかもポイント記号にも同じようなものが使われてる。)

エディタにはSublime Text3を使った。これ便利。検索置換できるし正規表現使えるし。

ゲームづくりといえば以前つくった自作ゲームが思い出される。あれはウディタを使って作ったゲームで、今回の学習の助けになった。とくに変数と繰り返し、条件実行。ただしウディタはどんなにゲーム作りやすいツールだったのかも分かった。htmlでサイト作るのとブログサービスでブログ作るくらいの差、いやそれ以上の差がある。なにせhtmlはアイウエオって書けばアイウエオって表示されるんだから。こちとら123456789って表示するのにこんなの(上参照)書いてる体たらくである。

  1. 著者です。

    「y'という変数を使いたい」というのは
    至極もっともなご意見です。
    早速'を使えるようにしました。
    ありがとうございます。

    ところで、文字や数字を書くならば「表」の考え方が便利かもしれません。0から9を10000番あたりのメモリに1文字100個づつ使って表を作っておき、10000+number*100で表の先頭を取る、という感じです。13章の応用ですね。

  2. 大変読み易い著作で、良い最初のプログラム体験をさせて頂きました。
    こちらこそありがとうございます。

    >文字や数字
    なるほど。今回の点数要素では各文字はひとつずつだけれど、たくさん書く場合はあらかじめ作っておいた方がよさそうです。