したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |
レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。

おちゃめくらぶ掲示板

2499御茶目菜子:2016/01/11(月) 01:36:36
第4回プチコン大喜利受付終了
先日第4回プチコン大喜利の投稿が締め切られたにょ。
私は1回〜3回まですべて参加で入賞1回、ノミネート2回という感じになっているだけどやはり
狙うのは入賞にょ。
とはいえ、大喜利も回を追うごとにレベルが高くなっているので入賞を狙うには相当の出来の
作品を用意しないといけないにょ。
さて、私が現在プチコン3号用に作っているもので自信があるのはQSPくらいだけどQSPで入賞は
厳しそうにょ。
しかし、今回は都合がいいことに「小道具部門」なんてものがあるにょ。
これならばQSP用に作ったツールをいくつかまとめてセットで投稿すれば入賞できる可能性が
ありそうな気がしたにょ。

◎プチコン3号 QSPコーナー
 http://ochameclub.web.fc2.com/petitcom3/soft/qsp.htm

やはり大喜利に向けて新作を用意したいところにょ。
しかし、完成度の高いQSPは一朝一夕にできるものではないにょ。
私の中では自信作の「SIMPLE PAINT QSP」もコーディングは1週間程度(ほとんどがリスト
短縮に要した時間)とはいえ、実用性や使い勝手を確かめるためのテストプレイ(要するに
このソフトを使ってどの程度の絵が描けるかを様々な絵を描くことで確かめた)に1ヶ月以上
費やしたわけだからね。

というわけで、大喜利に投稿したQSPのツール集(タイトル名「おちゃめ QSP TOOLS」)の
中は基本的にすでにサイトやtwitterやMiiverseなどで公開済みのものばかりで大喜利に
用意した特別なものはほとんどないにょ。
しかし、その中で大喜利に投稿時点で唯一完全に未発表(Web上でも発表してない)の作品が
1つだけあるにょ。
それが「簡易関数電卓QSP ver.2.0」にょ。

◎簡易関数電卓QSP ver.2.0
 http://ochameclub.web.fc2.com/petitcom3/soft/qsp.htm#calc

これは以前作った「簡易関数電卓QSP」のver.2.0となり、部分改良ではなく全体を見直して
1から作り直した作品となっているにょ。
そもそも「簡易関数電卓QSP」というのが何かというと詳しくはリンク先を見てもらえるのが
一番だけどプチコン3号で使用可能な演算子や関数を演算優先順位通りに計算を行うことが
できる電卓にょ。
プチコン3号でも電卓プログラムはいくつか作られているけど演算優先順位通りとなると少なく
とも私が知る限りでは無いにょ。
さらにほとんどの電卓は四則演算のみでそれ以外の演算子や関数まで実装したものはプチコン
3号用プログラムとしてはないにょ。(mkIIでは作っている人はいる)
そんなものがQSPで出来たのは自作のRVAL関数があったためにょ。
RVAL関数は式を評価する関数で文字列に式を入れてRVAL関数を仲介することで簡単にその式の
値を求めることが可能になるにょ。

 超簡易関数電卓プログラム(※RVAL関数が別途必要)
 WHIILE 1:INPUT A$:?RVAL(A$):WEND

簡易関数電卓QSPではRVAL関数を関数として実装するのではなく関数を分解してシステムに
そのまま使用することでリスト短縮しているにょ。
それだけだとDIRCTモードで計算をするのと比べてメリットが小さいため使いやすくするための
工夫や表示を見やすくするための工夫を盛り込んでいるにょ。
簡易関数電卓QSP ver.2.0はメジャーバージョンアップでありプログラムは一新しているにょ。
実はこの簡易関数電卓QSPの旧作(ver.1.0)は作った当時は十分にリスト短縮を行っていた
つもりだけどこの簡易関数電卓QSPのコア部分となるRVAL関数は後からもっと良い方法がある
のに気づいてRVAL関数ver.2.0を作ったにょ。(最新のバージョンはver.2.1)
これによって必然的に簡易関数電卓QSPも大幅なリスト短縮が可能になったにょ。

リスト短縮ができたらプログラムが短くなるというだけではなくそれによって実装したくても
できなかった様々な要素を盛り込むことが可能になるにょ。
このver.2.0はQSPで実現が可能なことを現状の最新のリスト短縮テクニックによって実装を
しているにょ。
とはいえ、「69文字も短縮」といっても69文字でそこまでいろいろ追加するなんてことは
普通に考えれば無理にょ。

では、具体的に何が変わったのかというとまずは1つ目が変数に対応したということにょ。
対応しているのはグローバル変数Xのみだけどこれによって使い勝手が大幅に改善されて
いるにょ。
電卓のメモリー機能代わりに使うというのも1つの方法にょ。
また、この簡易関数電卓QSPでは結果がSTR$によって丸められてしまうということもあり
ファンクションキーに入っている結果を再利用する場合には精度で問題が出てくる場面も
あるにょ。
そういう場合にも変数Xには実数型の値がそのまま入っているのでそれを使った計算は誤差が
極めて小さくなるにょ。
さらにあらかじめファンクションキーにXを使った数式を入れておけば数式記憶機能付きの
関数電卓として活用が可能になるにょ。
つまり、変数Xに対応することで一気に機能が3つ増えたというわけにょ。

それ以外の要素といえば、自作関数で拡張する場合の拡張性の向上にょ。
簡易関数電卓QSPはプチコン3号のすべての関数が使えるというわけで当然ながら自作関数にも
対応しているにょ。
そのため旧作においても便利な自作関数をたくさん作り「拡張関数ライブラリ」として用意
しているにょ。
自分で拡張機能(自作関数)を作る際に最も変わった部分といえばver.2.0は戻り値に擬似的
ながら文字列が使えるようになったということにょ。
旧バージョンでは原則として戻り値は数値のみ対応だったのでこの差は大きいにょ。
とはいえ、旧バージョンもL=0の時は「計算結果を表示しない」という動作をさせることが
可能になっているにょ。
これは旧バージョンにおいて最初からこのような拡張性を考えて入れた処理ではなく何も入力
しないときに改行を行えるようにするため入力した文字列の長さが0の時は計算結果の表示を
しないようにしているだけにょ。
しかし、この「何も入力しない場合は計算結果を非表示」というのを活用して自作関数内で
L=0を実行し表示したい文字列を自作関数内で表示すればあたかも戻り値が文字列のように
みえるような機能を作ることができるにょ。

では、サンプルとしてCOMMA関数をver.1.0用とver.2.0用に作ってみたにょ。(ver.1.0用は
ver.2.0でも動作が可能)

 ver.1.0対応 COMMA()関数
 http://ochameclub.web.fc2.com/petitcom3/soft/image/comma_1.jpg
 ver.2.0対応 COMMA()関数
 http://ochameclub.web.fc2.com/petitcom3/soft/image/comma_2.jpg

COMMA()関数は要するに整数の数値を入れることで3桁ごとにカンマを入れる関数にょ。
アルゴリズムとしては下3桁ずつ取り出し文字列化したあとに「,」を付けていくという極めて
単純なものにょ。
しかし、今回見るべき点はCOMMA関数のアルゴリズムではなく関数から戻る処理の部分にょ。
ver.2.0はグローバル変数R$に文字列が入っている場合はそれを戻り値として処理される
ような仕組みになっているにょ。
これによってL=0を実行した後に関数内で表示処理を行うなんてことをする必要はなく
戻り値をR$に入れるだけで済んでいるにょ。
そして、表示はシステム側で行っているにょ。
つまり、従来は拡張命令に頼ったり関数内でわざわざ表示の記述をしなくてはならなかったのが
しなくて済むようになったということにょ。
これはQSPで実装することができたのは限界までのリスト短縮とわずかな追加だけでそれが
実現できる方法を見つけたためにょ。
それ以外もXボタンを押しながらAボタン(ENTERキー)を押した場合にはグローバル変数Pが
trueになるためXボタンを押して起動した場合というのを拡張機能に簡単に採り入れられる
ようになっているにょ。

また拡張関数ライブラリはver.1.0に付属のものと比べて大幅にパワーアップしているにょ。
これは機能面の拡張だけに止まらず拡張機能を作るための便利な関数や命令を揃えている
ということにょ。
例えば各ボタンが押されたかどうかはA()がtrueならばAボタンが押されたかどうかが分かる
ためIF BUTTON() AND #A THEN 〜のような記述は不要になっているにょ。
これはAボタンだけではなくすべてのボタンが用意されているにょ。
十字ボタンに関してはそれとは異なりスティック動作が可能になっているにょ。
これはどういうことかというとSTB(スティックボタン)命令を実行すると十字ボタンを
押した方向でグローバル変数STに1〜8の値が入るにょ。(十字ボタンを押してない場合は
0が入る)
そして、BX、BYに押した方向に応じて-1、0、1のいずれかの値が入るにょ。
したがって、十字ボタンを押しながら8方向移動というのが超簡単に作れるようになって
いるにょ。
また、下画面を表示する場合にはXSCREEN 2:DISPLAY 1を実行する必要があるけどそれは
GMODE 1とするだけで実行が可能にょ。(GMODE 0で上画面)
GENDで元に戻せるにょ。
またDBUFを実行するだけでダブルバッファリングによる画面表示が可能になりGRP面で
重い処理をしてもちらつきを無くすことができるにょ。
これ以外にも便利な命令や関数は多数用意しているにょ。

拡張された機能に関しては上記のリンク先の説明にリストアップされて使い方も簡単に書いて
いるにょ。
しかし、今回はシステム部分のプログラム(QSP1つ分)のみ公開としたにょ。
これはシステム部分のQSPだけでちゃんと関数電卓として動作していることを理解してもらう
ためにょ。
それとせっかくなので拡張機能の使い方の詳細ページができてから公開を行おうと思って
いるにょ。

簡易関数電卓QSP ver.2.0はシステム部分は比較的すぐに出来たもののその後の部分で
結構躓いたにょ。
特に時間がかかったのはお絵かき機能の搭載にょ。
リンク先のお絵かき機能であるPAINT()関数の部分を見てもらえたら分かるけどそこに書いて
ある機能をQSPで実現しているにょ。
これは普通に作ったら不可能にょ。
詳しくはまた後日書こうと思うけど簡易関数電卓にPETIT PAINT QSPと同等のものを搭載する
というのであれば簡単だけどそれだと私が望んでいる機能にはならないためにょ。
そのため簡易関数電卓QSPに求めているお絵かき機能は何かを考えてどのようなものが必要かを
リストアップしてそれをすべて実装できるように頑張ったにょ。
1ヶ月以上かかりその間に7回も作り直したにょ。

「そもそも電卓にお絵かき機能が必要か?」と思う人もいるかもしれないにょ。
しかし、実際に電卓を活用する場面を考えてみるとメモ用紙とは切っても切れない関係に
あるにょ。
例えば図を描いて計算したい部分を確認して電卓で計算するという場合にもお絵かき機能に
移りシステム部分である電卓で計算して再びお絵かき機能に戻るということがシームレスに
実現できるということにょ。
したがって、「お絵かき機能が付いた」というの正しい意図が伝わりにくいけど要するに
「電卓だけの状態」から「電卓とメモ用紙を手に入れた状態」になると言えば分かりやすい
のではないかと思うにょ。(これによって電卓の使い勝手が飛躍的に高まっていると思う)
メモ用紙にはカラー9色(+背景色)のペンが使えるにょ。

このお絵かき機能があるのと無いのとでは雲泥の差があるためどうしてもこの簡易関数電卓
QSP ver.2.0にはお絵かき機能を付けたかったにょ。
何とか大喜利にはギリギリ間に合ったもののせっかくアンケートをとって搭載して欲しい機能を
聞いたのにそれを実装することができなかったにょ。
これは改めて後日実装しようと考えているにょ。
その前に現状の拡張関数ライブラリを標準添付いた簡易関数電卓QSP ver.2.0のフルセット
バージョンを公開予定にょ。
簡易関数電卓のシステム部分は今後もしばらくはver.2.0から変更がなく変更があるとすれば
拡張関数ライブラリだけになると思うので今後はシステムと拡張関数ライブラリは別バージョン
として管理として行う予定としているにょ。(システムver.2.0+ライブラリver.0.160104
みたいな感じで表記)


それとはまた話は変わるけど先日Miiverseにおいて「第1回プチコン3号書き初め大会」を開催
したにょ。
これは私が作った簡易毛筆QSPを使った書き初め大会にょ。
https://miiverse.nintendo.net/posts/AYMHAAACAAADVHkwrP8Gxg

見事優勝したのはこりんごさんにょ。
この書き初め大会では優勝商品として私がプチコン3号で描いた自作絵を提供することにして
いたのだけどこれは優勝者の好きなキャラ、好きなシチュの絵を描くことにしたにょ。
基本的にMiiverseで投稿するためMiiverseの規約に違反しないものとなるため任天堂のキャラ
もしくはオリジナルキャラでエッチではない絵となるにょ。
こりんごさんのリクエストは「ひらひらのメイド服を着せられて恥ずかしがっているホミカ
(ポケモンBWのジムリーダー)」だったにょ。
というわけで、それを描いたのがこの絵にょ。
http://ochameclub.web.fc2.com/CG/homika.jpg

毎度のようにSIMPLE PAINT QSPで描いているにょ。
SIMPLE PAINT QSPはラクガキ絵(雑に描いた絵)を描くにはプチコン3号のどのお絵かき
ソフトより使い勝手が良いと私は思っているけどある程度丁寧に描こうとするとハードルが
どんどん高まってくるにょ。
この絵もピクセル単位でのドット打ち(特に目の部分)が要求されているけどこれはNew 3DS
LLでないとかなり厳しいにょ。
またセリフ等で重なっている部分の半透明処理っぽい部分や一部に採り入れたアンチ
エイリアスっぽい処理もすべて脳内演算でカバーしているにょ。
描きたい色のRGB値が即答できるレベルの人であればSIMPLE PAINT QSPはQSPで作られた小さな
プログラムでありながらレイヤーが無いくらいの問題しかないにょ。(RGBで即答できない
レベルの人のためにパレットGRPメーカーによってパレット選択を可能にしているためこれも
問題はない)

大喜利に投稿した「おちゃめ QSP TOOLS」にはこの「SIMPLE PAINT QSP」を含めて実に4種類の
お絵かきソフト(当然すべてがQSP)が含まれているにょ。
「PETIT PAINT QSP」「SIMPLE PAINT QSP」「簡易毛筆QSP」「簡易関数電卓QSP ver.2.0の
お絵かき機能」の4つだけどどれもそれぞれ特長がありどれが一番かどうかは決められないにょ。
むしろ、個人的にはどれも1番だと思うにょ。(一歩間違えば簡易関数電卓QSPのお絵かき機能は
他の3作品とは比べるレベルに到達しなかったので妥協せずに作り続けて良かったと思う)
要するに評価の観点を変えればどれもが1番になるくらいどれも自信作であるということにょ。

「PETIT PAINT QSP」は私が最初にQSPで作ったお絵かきソフトだけど単色ながらペンと消し
ゴムの使い勝手に関しては高性能、多機能な他のお絵かきソフトにも負けてない(むしろ
消しゴムの出来に関してはプチコン3号の全お絵かきソフトの中でトップレベル)と思うにょ。

「SIMPLE PAINT QSP」はPETIT PAINT QSPが単色絵のみでカラー絵を描くためには毎回リストを
書き換えてRUNしなおして別の色で塗るという必要性があり現実的ではないと判断したため
作ったけどQSPでありながらカラー絵を描くために必要な条件はすべて満たしているという
のがウリにょ。

 ◎私がカラー対応お絵かきソフトに求めるモノ
  http://6407.teacup.com/ochame/bbs/5015

とはいえ、PETIT PAINT QSPみたいな尖った部分はないためむしろ万人向けではないかと
思うにょ。(上記のように実際に1ヶ月余りの間に10数枚の絵を描いて自分自身でそれを
確認済み)

「簡易毛筆QSP」はQSPでどれだけ毛筆っぽさを際限できるかに重点を置いて作っているため
根本の部分で他のお絵かきソフトとは異なるにょ。

 ◎今、プチコン3号でお絵かきソフトが熱い!
  http://6407.teacup.com/ochame/bbs/5006

その代わりこの毛筆処理は「QSPではこれ以上は無理」というくらいの納得のできになって
いるにょ。
少なくとも現時点ではQSPという制限が無くてもこれ以上毛筆っぽさを再現できているお絵かき
ソフトはプチコン3号上では存在しないにょ。
それだけでも、十分なアドバンテージがあると思うにょ。

「簡易関数電卓QSPのお絵かき機能」については上記の通りにょ。
他のソフトと違い電卓であるシステム部分と連携して使用するのに重点が置かれているという
のと普通に絵を描くのではなく主に図を描くためのお絵かきソフトということで使い勝手や
色の選択も他のQSP作品とは全く異なるものになっているにょ。

要するに4作品それぞれに特長があるということにょ。
仮に4つのソフトを包含する多機能ソフトを作っても同じような使い勝手にはならないにょ。
これは私の「プチコン3号QSP完全マニュアル」でも書いているようにシンプルであることが
1つの武器になっているためにょ。
メニュー画面無しで感覚だけで使用できるのはシンプルなQSPで作られたソフトならではにょ。




掲示板管理者へ連絡 無料レンタル掲示板