| HOME | PS3 | PSVita | PSP | WiiU | 3DS | DS | Xbox One | XBOX360 | PC | OCG |

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


秋花のプチコンmkIIプログラミング-第2回- ~デジタル時計解説編~

 

第1回の続き,解説編




それでは解説しよう。

 

CLEARは配列を使う場合に於ける推奨処理だ。

内部メモリーを初期化して2重定義を防いでくれる。

 

KEYの部分ではファンクションキーの割り当てを行っている。

F1にBREAKを割り当て,それ以外には何も割り当てない。

 

「DIM SHUKA(24)」 から「SHUKA(23) = &H200 」の部分では“秋花”を画像で表示する為に,点を打つ位置を定義している。

2進化し,図にすると以下のようになる。

0000100000100000000000100010000
0001000000100000000111111111111
0011000010101000000000100010000
0001000010101000000000000000000
1111110010100000000000100100000
0001000000100000000001000100000
0001000000100000000011000111110
0001000000100000000101000100000
0011100001010000000001000100000
0101010001001000000001000100000
0101010001001000000001000011110
0001000010000100000001000000000

1の部分だけを見ると微かに“秋花”の文字が見えるだろう。

――えっ,わからない?

そんな方の為に0を□,1を■としたものを用意した。

□□□□■□□□□□■□□□□□□□□□□□■□□□■□□□□
□□□■□□□□□□■□□□□□□□□■■■■■■■■■■■■
□□■■□□□□■□■□■□□□□□□□□□■□□□■□□□□
□□□■□□□□■□■□■□□□□□□□□□□□□□□□□□□
■■■■■■□□■□■□□□□□□□□□□□■□□■□□□□□
□□□■□□□□□□■□□□□□□□□□□■□□□■□□□□□
□□□■□□□□□□■□□□□□□□□□■■□□□■■■■■□
□□□■□□□□□□■□□□□□□□□■□■□□□■□□□□□
□□■■■□□□□■□■□□□□□□□□□■□□□■□□□□□
□■□■□■□□□■□□■□□□□□□□□■□□□■□□□□□
□■□■□■□□□■□□■□□□□□□□□■□□□□■■■■□
□□□■□□□□■□□□□■□□□□□□□■□□□□□□□□□

当ブログのフォントではわかりにくい方でも,メモ帳などにコピペして貰えれば理解して頂けると思う。

これを16進数化したのがこれだ。

4100110
8100fff
18540110
8540000
7e500120
8100220
810063e
8100a20
1c280220
2a240220
2a24021e
8420200

これだと12行しかないが,実際の配列には24行ある。

これは何故かというと1行をそのまま入れてしまうとオーバーフローしてしまう為だ。

1番数値が大きくなるのは5行目で,10進数値化すると 2,119,172,384 になる。

しかし,プチコンで使える整数部の値は ±524,287 の範囲までらしい。

よって,右半分を次の行に記述することとした。

 

次の部分,「CLS」から「NEXT」では,「セイサク 秋花」と表示させる部分だ。

まず,10行10列目の位置に“セイサク”と表示させる。

そして,FOR~NEXT部分では先ほど定義した配列を用いて,秋花という文字を(100, 100) の位置に描画している。

サブルーチンとして@BITSHIFTを使っているが,これはCの数だけ数値を右にシフトするものである。

これを行い取得した数値を AND 1 することにより,目的の1ビットだけを取り出すことができる。

シフトを行わずとも,1桁目を取り出したいなら2^0との論理積,2桁目を取り出したいなら2^1との論理積,3桁目なら2^2との論理積,……というように求められる。

こうした処理をしてビットが立っている位置に,色番号77の点を打っている。

 

次のFOR A = ~ NEXT の部分ではディジタル時計の処理を行っている。

時計の処理だけなら,この部分だけでも十分だ。

FOR A = 0 TO 1 STEP 0 というのは無限ループだ。

基本的にこの中を繰り返す。

まず,描画位置に原点(0, 0)を指定する。

次に日付を表示し,次の行で時刻を表示する。

そして,描画位置を(0, 20)に移し,"IF F1 THEN BREAK"と表示する。

次のFOR文ではF1が押されたかを判定し,押されたらENDフラグへ飛ぶ,飛ばなかったら1フレーム分待つ。

この処理を60回繰り返している。

これが終わると無限ループの先頭へ戻る。

60フレームで1秒なので1秒毎に更新しているのだ。

PRINT "IF F1 THEN BREAK"は毎回行う必要はないので,本来は無限ループより前に入れるべきであったが,間違えて無限ループの中に入れてしまった。

しかし,軽い処理なので問題はない。

 

つぎ@ENDだ。

まず文字と画像を消去する。

つぎに,A$へ「"」という文字(引用符)を割り当てる。

この文字はそのまま表示することができない為だ。

そして,ファンクションキーを元に戻す。

それから,メモリをクリアし,プログラムを終了する。

 

@BITSHIFTでは,前述の通り,数値の右シフトを擬似的に行っている。

右シフトが無いなら,使わずにもっと簡単な処理を行えばいいのだが,真っ先に思いついた方法を採用した。

 

次はアナログ時計をつくってみようと思う。

三角関数を使わねばならないのが面倒な上に,色々図形を描かねばなるまい。

もしかすると他のものをつくるかもしれないし,何もつくらないかもしれない。

 

始めは初心者向けにしようと思ったが,色々実装したくなって複雑化してしまった。

そこで,一応初心者向けのものも載せておく。

以下が簡略化したものだ。

@LOOP
CLS
PRINT DATE$, TIME$
WAIT 60
GOTO @LOOP

なんと簡単なプログラムだろう。

関連記事


この記事に拍手する     にほんブログ村 ゲームブログへ このエントリーをはてなブックマークに追加
この記事に含まれるタグ :  秋花     3DS     DSi     プチコンmkII     秋花のプチコンmkIIプログラミング     BASIC言語     SmileBASIC    

コメント:

投稿欄

  • URL
  • コメント:
  • パスワード
  • 秘密
  • 管理者にだけ表示を許可する
トラックバック:
URL:http://afignaz.blog.fc2.com/tb.php/323-183cc8fa

ゲーム


アニメ


漫画・ラノベ・BL


プロフィール

アフィグナス

Author:
 きんとす
 秋花
 TKG
 SERAHU
(順不同)



秋花
担  当:ブログ管理
主な記事:XBOX・PC周辺機器

秋花
技術者
Windows Phone使用者



TKG
担  当:編集製作・Twitter
主な記事:Sonyのステマ・ニュース

TKG
宣伝者
身の回りがSonyだらけ



きんとす
担当:怠け者
主な記事:オールジャンル・プレイレビュー
TKG
やる気スイッチどこにあるんだろ~


SERAHU
担当:任天堂のステマ
主な記事:DS・3DS
TKG
レアキャラ
DSソフト大量所持罪
プレイレビューを中心に活躍してくれるはず


4人の管理人で記事を更新していきます!
日々、リピーターを増やしていけるように頑張りますp(・∩・)q

今後とも当ブログをよろしくお願いします(^ー゜)ノ

ご意見・要望

カテゴリ


挨拶



最新記事


最新コメント


リンク


RSSリンクの表示


検索フォーム


ブロとも申請フォーム


月別アーカイブ


カウンター


ページジャンプ

全1ページ中
1ページ目
Presented by 遊んだら仲間だ。 篇GAME

Sponsored Link


  
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。