無料ブログはココログ

« 2013年9月 | トップページ | 2014年1月 »

2013年10月

2013年10月10日

Android の BASIC! を使ってみた

idRandomcircles

  Nexus 7 にインストールしたものの、サンプル・プログラムを動かしてみるだけで自分のプログラムをしばらく作らずにいた BASIC! で初めて自分のプログラムを作ってみました。
上の実行画面キャプチャのように、前に投稿した iPod touch 上の BASIC で作ったプログラムと似たような、いろいろな大きさと色の半透明の円を画面いっぱいにたくさん描くプログラムです。

このBASICではプログラムに行番号が不要でラベルを使えるので、読みやすいプログラムが書けます。
いろんな命令が盛りだくさんで、加速度センサーなども使えて高機能にもかかわらず、無料の BASIC です。
実効速度も速いです。コメントや文字列に日本語を使うことが出来ます。

  まず、このBASIC に関するホームページにいろいろな名前が出てきて、私の頭がこんがらがりそうになったのでここで整理しておきます。

  •   正式な名前は「RFO BASIC! for Android」です。
  •   Google Play でのアプリ名は「 BASIC! 」だけです。
  •   マニュアルの名前は「 De_Re_BASIC! 」です。この言葉は「 BASIC! について」というような意味です。

  アプリ作者によるサイトは http://laughton.com/basic/ です。簡単なヘルプはアプリに入っていますが、詳しいマニュアルはここからダウンロードできます。ただし、全て英語です。といっても簡単な英語ですので、プログラミングに慣れた人なら比較的すらすらと読めると思います。

  iPhone や iPad などの iOS 端末用に、よく似た名前の(大文字と小文字が違う)「 Basic! 」というBASICアプリが APP Store にありますが、これと BASIC! とは全く別のものですので、間違わないでください。

  この BASIC のサンプル・プログラムのリストを眺めたとき(きちんと読まずにさっと眺めただけ)、例えば「 Gr.circle 」という風に命令の途中に「.」(ピリオド)が入っていたりして、オブジェクト指向のプログラミングをしなければいけないと誤解させるような面構えだったので、敬遠していたのですが、実は全然オブジェクト指向ではありませんでした。単に命令を分類する手段に「.」を使っている感じです。

  さて、私の作ったプログラムを下に載せておきます。

  グラフィックスの表示のために、他の BASIC より少しだけ多くの命令を書かなくてはいけませんが、それをうまく使えば気の利いたプログラムが作れそうです。下のプログラムリストの中の 最初の3行や、後半にある Gr.render などがそれです。

 Nexus 7 では縦長の状態でのグラフィックスのプログラムは、うまく動きません。いろんな人のプログラム例を見ても、グラフィックスを使う場合は横長の画面で使っているものばかりです。その理由を私は知りません。

 また、乱数を発生させるための命令が、前回投稿の BASIC とは書き方が少し違うので、それを発見するのにも手間取りました。

-----------------------------------------------
Gr.open 255,0,0,0  % 背景は透明度なしで黒
Gr.orientation 0   % 横長画面にする
Gr.screen w, h
dummy = randomize(0)
for i = 1 to 500
  a = rnd()*128+127  % 円の透明度
  r = rnd()*235+20
  g = rnd()*235+20
  b = rnd()*235+20
  fill = 1
  Gr.color a,r,g,b,fill
  cx = rnd()*w
  cy = rnd()*h
  radi = rnd()*100 + 10
  Gr.circle nc, cx, cy, radi
  Gr.render
next i
do
until 0
-----------------------------------------------

2013年10月 7日

安くて高機能な有料BASICもあった

今度は、高機能である割に比較的安価な(170円) 有料の BASIC アプリ、Smart BASIC を iPod touch へインストールしました。グラフィックス関係の命令なども充実しています。実行速度も非常に速いです。

---修正---------------------------------------
Smart BASIC は Ver. 3.0 から日本語に完全に対応しました。
編集画面で文字定数に日本語を使うときにも、
以前のように異常な表示にはならず、すんなりと入力できるようになりました。
プログラム名にも日本語が使えるようになりました。
---修正ここまで--------------------------------

なお、この Smart BASIC にはsave命令はありません。プログラムは自動的にsaveされます。
プログラム単位のコピーやフォルダ作成などの機能は内蔵しています。

下に自作のプログラムと、その実行結果を載せておきます。例によって、正方形をたくさん描くプログラムです。このプログラムには日本語は使ってないので、Smart BASIC の編集画面だけで書くことができました。
ご覧のように、行番号は必要ありません。

-------------------------
graphics
shadow on
randomize

begin:
maxx = screen_width()
maxy = screen_height()
maxd = 160
halfd = maxd / 2

for i=1 to 400
x1 = rnd(maxx)
y1 = rnd(maxy)
x2 = x1 + rnd(maxd) - halfd
y2 = y1 + rnd(maxd) - halfd
draw color rnd(1), rnd(1), rnd(1)
draw size sqr((x2 - x1)^2 + (y2 - y1)^2)
draw line x1, y1 to x2, y2
if maxy <> screen_height() then goto begin
next i

end
-------------------------

Smartrandomsquares

2013年10月 4日

小さいBASICで正方形がいっぱい

今日は iPod touch 上の BASIC-II を使って、
短いが一工夫のあるプログラムを作ってみました。

ランダムに正方形を描いていくプログラムです。
私の iPod touch では、実行が遅くて少しイライラしました。
iPhone 5s なら、もっとずっと速く描けるでしょうねえ。

ボケ防止に丁度よい頭の体操になりました。

以下にプログラムと、実行途中の画像を載せておきます。

10 REM *Draw random squares*
20 GCLS
25 CLS
30 FOR n=0 TO 200
40 dx=rand(50)+10
50 dy=rand(100)
51 dy=dy-50
55 ss=dx*dx+dy*dy
56 s=sqrt(ss)
57 ux=dx/s
58 uy=dy/s
60 x1=rand(320)
70 y1=rand(480)
80 x2=x1+dx
90 y2=y1+dy
110 x3=x2+dy
120 y3=y2-dx
140 x4=x3-dx
150 y4=y3-dy
190 cu=rand(14)
200 for i =0 to s
210 xx1=x1+ux*i
220 yy1=y1+uy*i
230 xx4=x4+ux*i
240 yy4=y4+uy*i
250 LINE xx1,yy1,xx4,yy4,cu,2
270 next
500 c=rand(14)
505 if c=cu then goto 500
510 LINE x1,y1,x2,y2,c,2
530 LINE x2,y2,x3,y3,c,2
550 LINE x3,y3,x4,y4,c,2
570 LINE x4,y4,x1,y1,c,2
600 NEXT

Randsquares

2013年10月 3日

小さいBASIC見つけた

iPod touch でも BASIC でプログラミングが楽しめないかなあと思って探したら
BASIC-II という無料の小さなBASICを見つけました。
iPhone でも使えると思います。iOS7 上で使えています。

今のところ命令数が非常に少ないのですが、
それはそれで自分のやりたいことを、このわずかな命令をどう組み合わせて実現するかという、パズルを解くような楽しみがあります。

最近のプログラミング環境は、できることも多い代わりに、プログラミングに取りかかる前に覚えておくことが多くて、記憶力が衰えてきている初老の脳には使いづらいです。
その点、このBASICは覚えることが少なくて、すぐにプログラミングに取りかかれます。
手元ですぐに使える iPod touch にふさわしいBASICだと思います。

このアプリの使用例を探していて見つけた「四十路オヤジの雑記帳」というブログに LINE 命令で円を描けるということが書かれていたので、それをヒントにして、ちょっとプログラミングしてみようという気になりました。

LINE 命令で線の両端の点に同じ座標を指定すると、
線の幅を表す引数を大きくすればきれいな円が描け、
線の幅を小さく指定すれば点を描けます。

サンプルプログラムの「RandomLine.bas」をアレンジして、沢山の円を描くあそびのプログラムを書いてみました。

私のプログラムと、出来た絵を下に載せます。
(同じようなことを行なっているので、当然、出来た絵は「四十路オヤジの雑記帳」に載っている絵と似通っていますが、私は円周をはっきり描くことにこだわってみたので、プログラムは「四十路オヤジ」さんのとは異なっています。)

10 REM *Draw random Circles*
20 GCLS
25 CLS
30 FOR n=0 TO 300
40 x=rand(320)
50 y=rand(480)
80 c=rand(14)
90 w=rand(100)+2
100 LINE x,y,x,y,c,w
110 w=w-2
120 c2=rand(14)
125 IF c=c2 THEN goto 120
140 LINE x,y,x,y,c2,w
150 NEXT

Randcircles

« 2013年9月 | トップページ | 2014年1月 »

最近のトラックバック

2017年4月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30