2013年12月6日金曜日

V2.9ようやく公開!

実に3ヶ月の長きにわたって審査で拒絶され続けたX-BASIC for iOSがようやく公開されました。

審査で問題になったのはファイルのインポート機能。
Appleは.basがインポート出来ている=外部実行ファイルがインポート出来ていると言うのですが、プログラムではzip内の.basはすべて無視して展開されないようにしていたし、最終的には.basを含むzipはエラーを出してインポートできないようにしていました。

それでも「.basがインポート出来る」 の一点張りで、「うちの実験では再現できないから使っているファイルを送ってくれ」と言ったら、実験方法も教えてくれないし、ファイルも送ってくれずに「外部の実行ファイルがインポートできる」という最初に戻って堂々巡り。手法を教えると抜け道を作ると思っているのかもしれないけど、まじめに対応しようとしている者にとっては、これはいちゃもんにしか見えない対応。

直接電話をしてきてくれもしたんだけど、技術者直ではないので要領を得ない。
一応日本語で書けてきてくれるのだけど、どうにも肝心な部分の通訳がうまくいってないので訳がわからない。というか、理解したつもりで対応しても拒絶される始末。

「わけがわからないよ」と言うんでしたっけ?、こういうときは。

結局、インポート機能を全削除しての審査通過です。
zipのインポート機能は、事実上審査を通らないと思った方が良さそうです。

インポート機能を削除するため、今までここで公開していたほぼすべてのサンプルを内蔵させました。著作権的には「あれ」ですが、致し方ないと言うことで、お許しいただきたいと。もし公開を望まない原作者の方がいらっしゃれば、ご連絡ください。

それと、ファイルインポート機能は削除しましたが、何とかならんかとお考えの方は、新しい取説をよく読むと幸せになれるかもしれません。そのうちここでも何らかの報告ができればいいなぁと。

酷暑中、審査をクリアするためにいろいろやったのも、もう遠い思い出。
3ヶ月は長いよ 。あまりにいろいろありすぎて(後略)。もう冬じゃないか・・・。
その間にiOS7対応まで出来てしまったことは幸いかも。

これでようやく他のアプリもiOS7対応を開始できます。
もっとも、最近は全然時間が取れないので、いつになるかわからないのですが。

2013年11月18日月曜日

V2.5発売中止の件

現在、X-BASIC for iOSはAppStoreから削除されています。
これは、根本的には「アップルの審査が遅すぎる」せいです。

V2.6〜2.8の審査が、理不尽な要求により実に2ヶ月もかかっており、
その間指摘された事項が旧バージョンにも存在するとのことで、
旧バージョンまで削除されてしまいました。

審査のテストが非常に曖昧で、その方法も解決も示さないまま「だめ」というだけで、
しかも1回の審査に最低2週間もかかるという遅さの上にこの対応なので、
非常に困っています。
削除されたということは当然収入が絶たれるわけで、これは経済的被害にもなってます。

報告・発見されているバグも修正できない(修正版を公開できない)のもこのせいです。
修正版を出せないのは非常に心苦しいのですが、全てはアップルに責任があるので、あしからず、ご了承ください。

現在V2.8がIn Review状態にありますが、これとてどうなるかわかりません。
アップルは拒絶するなら、それに至ったテスト手順を明確に公開すべきです。
非公開のままどこそこに問題があるから「ダメ」というのは嫌がらせにしか思えません。

他のアプリケーションのiOS7対応もしたいのですが、これが通らない限りやる気にならなくて。

iOSからAndroidへのプログラムコンバーターでもあればいいのに・・・。

2013/11/19追記:
また拒絶されました。存在しない機能が「ある」と指摘されるので、もはや全くお手上げです。
アップルは無理矢理いちゃもん付けて公開をあきらめさせるつもりかもしれません。
アップルの横柄な態度にはもううんざりです。

2013/11/20追記:
仕方ないので、ファイルのインポート機能を全部削除した版を作ろうかと思っています。
今あるサンプルをすべて入れて。サンプルは著作権的に「あれ」な部分がありますが、アップルがファイルインポートを認めないので「仕方ない」ということでお許し頂きたい。
作者の方、もしくはお知り合いの方はご連絡いただければありがたいかと。

2013/11/21追記:
インポート機能を削除した版v2.9を審査に出します。

2013/11/24追記:
アップルから電話があったのですが、「インポート機能を全削除したバージョンを作る」ということで了解してもらった。再審査が早く進むよう配慮してくれると。
ほんとうに早くしてくれると有難いのですが。
なおプログラムを組む方は、V2.9の取説はサポートHPにあるものを見たほうが「幸せ」になれます。時間や「配慮」により内蔵できませんでしたが、サポートツールを公開「できれ」ば、「みんなでより幸せ」になれるかと。

「山を超える時、そこを登り切る、トンネルを掘るなどの真正面から行く方法だけでなく、全く別の方向から眺めて別のルートを探すなど大胆な発想の変換もしてみるべき」と思った次第。

「インポート機能は、他のアプリとの連動が本質的に必要でないなら、使わないほうが吉」。審査が厳しくなるだけ。


2013/11/27追記:
V2.9が審査開始。確かに審査開始が「非常に」早い。このまますんなり通ってくれれば良いのに。

2013/12/06追記:
ようやく公開!!実に3ヶ月。長かったねぇ。

2013年9月17日火曜日

V2.6、もといV2.7の予告と今後の予定(終了)

「X-BASIC for iOS」v2.6を現在審査に出していますが、
どうやらアップルはiOS7対応アプリの審査を優先しているようで、
対応してないアプリの審査は大幅に遅れているようです。
今しばらくお待ちください。

→2013/09/25追記
散々待たされた挙句に拒絶されたので現在調整中ですが、PCが不具合からの復旧中で作業ができません。です。でも拒絶理由がわからない・・・。

→2013/09/27追記
この際ですので、V2.7まで上げてiOS7対応を考えています。
アイコンはすでに作り終えましたが、表示系の違いがあまりに多くて対応に手間取っています。

アップルは毎回仕様変えすぎ(T_T)

→2013/10/02追記
アップルからの電話にしたがって、拒絶された部分の機能を削除して再審査に出しました。
同時に、iOS7上で取りあえず動くようにしました。

→2013/10/03追記
V2.7を審査に出しました


→2013/10/15追記
とにかく審査が進みません。アップルさん、人員増やしてください。


→2013/10/17追記
さんざん待たされたあげく、また拒絶されました。

最初のバージョンから存在している部分で、何で今更という感じです。
根本的な部分であり、回避策が思いつきません。
iOSの審査厳しすぎます(ほとんどいちゃもんにも聞こえる)。

そこが引っかかっているため、当然バグ取り版も出せません。

このままいけば、公開を終了しなければならない可能性もあります。
(古いバージョンを公開し続けることすら許されない。)

→2013/10/22追記
また電話があって拒絶。
とりあえずコード上抜けがあったのは確かなので強化。
でもこれでまただめなら・・・どうしよう?

→2013/10/31追記
また拒絶。「ソース送るから、どこが悪いのか詳しく教えてくれ」と言ってみた。
もう本当にどこがダメなのかわからん。
すべての拡張子を調べろというのか?


・・・V2.6/2.7での変更点・・・

・1配列の総要素数が65535を超えられなかったのを修正
・error on/offの動作が逆だったのを修正
・error on2を追加
・再帰呼び出し段数に制約をかけて落ちないようにした(エラー追加)
・アニメーションが実行された状態でプログラムを中断した時、次のプログラムを実行してもアニメーションが残ってしまうのを修正
・x68256Color2iOSColor()追加
・versionXBfunc2$()が使えなくなっていたのを修正
・全角半角変換関数を追加
・取説内で検索できなくなっていたのを修正(iPad)
・iOS7対応(とりあえず動作するようにした)
・個別ファイルでのインポート機能を削除(アップルからの指示による)
・iPadでRUNボタンが見えなくなることがあるのを修正
・サンプル追加
・細かいバグの修正

・・・

現在V2.8をiOS7完全対応版として準備中ですが、V2.7が審査を通らないかぎり、v2.8は出せません。そのiOS7対応版ですが、ソース表示&編集に使っているUITextViewというモジュールに多数のバグがいるので正常動作しません。そのため、現在保留中です。


また、iOS7対応は32ビットのみで、64ビットネイティブ動作は、労多くして益「なし」なので行いません。X-BASIC for iOSはぺけ-BASICの構造を模している部分があり、intが64ビットになると、変更が多すぎるからです。

 次はV3.xでデバッグ機能を強化しようと思っていますが、再就職も決まって、おそらくこれからしばらくは開発時間がほとんどとれないでしょう。
住む場所、仕事などすべてに関して不定の状況に陥っており、先行きが全く見えません。正直、世捨て人になる可能性も出てきました(極めてマジ)。
世を捨てたほうが開発には集中できるんですけど(T_T)/~

就職が決まったと言ってもかなり安い給料(前職の半分以下)なので、(秘密)しないとやって行けなさそうなので余計です(雇ってくれただけましなので、文句を言うつもりは全くない)。
最低数ヶ月、下手すると1年位かかるかもしれません。
その間は、サンプルは何とか1月1つは出してしのげればと思うのですが。
あしからずご了承ください。


上記の通り基本的部分で審査が通りませんので、V3.xの開発は全く白紙になりました。
Androidに移行しようかとも思いましたが、全く開発経験が無い上に、結構iOSに依存しているので、それはそれで、不可能に近いです。

市場として広いからと言って、アップルは思い上がっているのではないでしょうか?
iOS7のようなユーザーや開発者を無視したアップデートするし。

2013年9月16日月曜日

サンプル:ゲーム「digman」

 X1用のゲーム「DIGMAN」を移植しました。
 どことなくpitmanに似てますが、気のせいです(^_^;)。
「Oh!X 1990/5」よりの移植です。
もとネタがあるので、転載禁止です。


 Zipファイルはこちら:XBdigman.zip

2013年9月6日金曜日

サンプル:トランプゲーム 一人占い「TEN」






iPad縦画面専用です(横画面は未検証)。



Zipファイル :XBten.zip

cTen.basがiOS用です。ten.basは、X-BASIC/68またはぺけ-BASIC用です。
どのように移植したかを示すための参照用として入れてあります。

2013年8月29日木曜日

サンプル:トランプゲーム7並べ


 


iPad縦画面専用です(横画面は未検証)。


Zipファイル :XB7.zip
c7.basがiOS用です。7.basは、X-BASIC/68またはぺけ-BASIC用です。
どのように移植したかを示すための参照用として入れてあります。

2013年8月23日金曜日

サンプル:トランプゲーム99


 

iPad縦画面専用です(横画面は未検証)。


Zipファイル :XB99.zip

c99.basがiOS用です。99.basと99patch.basは、X-BASIC/68またはぺけ-BASIC用です。
どのように移植したかを示すための参照用として入れてあります。

2013年8月11日日曜日

X-BASICのプログラム末尾にEOF(&h1a)を付けるプログラム

X-BASICのプログラム末尾にEOF(&h1a)を付けるプログラムです。

X-BASIC/68はEOFコードでファイルの終端を認識するため、それが必須です
(ないと読み込み異常を起こします)。

現在のWindows上の各種テキストエディタやXcodeはEOFを付加しないので、
それを付けるのがこのプログラムです。

一応ここでもソースコードを公開しますが、 X-BASIC/68用なので、X-BASIC/68またはぺけ-BASIC上で動かさないと無意味です(保存時はSHIFT-JISで)。

それと、高速化を何も考慮してないので、かなり遅いです。 必要なら、BC.Xでコンパイルしてくださいまし。


/* X-BASICのプログラム末尾にEOF(&h1a)を付けるプログラム
/* X-BASIC/68はEOFコードでファイルの終端を認識するため、それが必須である。
/* (ないと異常動作を起こす。)
/* ぺけ-BASICはサイズでも認識するのでなくても問題ない。X-BASIC for iOSも同様。
/* 現在のWindows上のエディタやXcodeはEOFを付加しないので、それを付けるのがこのプログラム。
/* これはX-BASIC/68またはぺけ-BASIC上で動かさないと無意味。
/*
print "X-BASIC/68でサンプルプログラムを正常読み込みさせるため、"
print "BASICプログラムファイルの終端に&h1aのコードを付加します。"
int fp,ofp
int c,cc
str fname,ofname
input "ファイル名(拡張子.bas不要)";fname
ofname=fname+"_1a.bas"
 fname= fname+".bas"
print "出力ファイル名:";ofname
print "開始するには何かキーを押してください"
while inkey$(0)="":endwhile
print "しばらくお待ちください"
/*
fp=fopen(fname,"r")
if fp<0 then {
 print "ファイルが見つかりません:";fname
 end
}
ofp=fopen(ofname,"c")
if ofp<0 then {
 fclose(fp)
 print "ファイルが作成できません:";ofname
 end
}
cc=-1
while 1
 c=fgetc(fp)
 if c<0 then break
 fputc(c,ofp)
 cc=c:/*1つ前の出力文字
endwhile
if cc<>&h1a then fputc(&h1a,ofp)
fclose(ofp)
fclose(fp)
print "終了しました"
end

X68用なので、LZHで圧縮しています。
LZHファイル : add1a.lzh

ちなみに、ぺけ-BASICはサイズでも認識するのでなくても問題ありません。
X-BASIC for iOSも同様です。

2013年8月9日金曜日

サンプルの完成度が低いとお嘆きの貴兄に

X-BASIC for iOS用の各種サンプルをあげていますが、
各サンプルの完成度がそれほど高くありません。
移植物の場合、元のできが悪いのではなく、移植の出来がよくない、という意味です。


特にほとんどのものがiPad画面専用なのは、手抜き以外の何者でもありません。
というか、X68やMZ由来のゲームはiPadぐらいの画面サイズがないと移植できません。

iPhone/iPod touchに対応するには、よほどそれに特化して作らないとだめで、その手間は今はかけられません。

操作性にも難はあるでしょうし、グラフィックがちゃちというのもあるでしょう。

カードゲームで札が画面に対して小さいとか縦長だとかいうのは、X68版のものをそのまま移植しているからです。サイズを変えると座標が変わってしまい、その合わせ込みは非常に大変なのです。

しかしすべては「サンプル」ということでお許しいただきたいです。
サンプルの主目的は、各種機能をたたいてデバッグすることにもありますので。

ソースもすべて公開しているので、不満があれば、各人で修正していただくのが正しい道です。
いいのができれば送っていただければ幸いかと<m(__)m>

なお、基本的に、サンプルはよほどのバグが見つからない限りバージョンアップしません。

2013年8月8日木曜日

サンプル:Z80アセンブラー「SuperBASE」


Z80アセンブラー「SuperBASE」を移植しました。

 「I/O別冊 WICS・BASEプログラム集」のMZ-2000用をX1に移植したのが元で、
さらにそれをX68000のCに移植し、今回X-BASIC for iOSに移植しました。
このくらいのサイズのプログラムでも動くという証明用です。

BASICで記述しているのでそれなりに遅いですが、ちゃんとアセンブルできます。
遅いと言っても、実はX68000のC版よりか速かったりします。

SuperBASEはキャリーラボという会社が作った独自ニーモニックのZ80アセンブラーです。


それがどう言うものかは説明書を読んでください。

・・・こんな感じ・・・
;
; DSK-CZ V4.2
;
DRIVE EQU $FF87
ERRJP EQU $FF8A
DSKLD EQU $021A
PRET  EQU $01FB
RDDSK EQU $FF00
IBUFF EQU $0FE3
;
 OFFSET $A000
 START $0EF2 ;HTAB
;
REW
 CALL CDIR
 GOTO $0DEC
;
APSS1
 A=(DIR)
 A+ IF A<8 GOTO APS1
 A=(RDIR)
 A+ IF A>=32 GOTO APS2
 (RDIR)=A
APS2 A=0
APS1
 (DIR)=A
 RET
;
DLOAD
 [BC [HL [DE
 CALL TRNS
 DE=(REC)
 A=B IF A=0 GOTO DLAST
 CALL RDDSK IF CY GOTO DL3
 A=B A=A+H H=A
 DO !() DE+ UNTIL DEC(B)=0
 GOTO DLAST
;
FILE
 A=(7) IF A=40 GOTO $6200
 CALL $143C
 GOTO $61D3
;
; 0FE3-10E2 IBUFF
 START $10E8 ;Screen Edit
;
RDS
 DINT
 [BC [HL [DE
 [HL [AF
DN A=00 (DRIVE)=A
 HL=DSKER-RDS+RDDSK (ERRJP)=HL
 A=$1D PORT(0)=A
 ]AF ]HL
 CALL DSKLD
 CY=0
RD1
 A=$1E PORT(0)=A
 EINT
 GOTO PRET
DSKER
 CY=1
 GOTO RD1
RDE

・・・


X68版を作ったとき、関係者の人にお見せしたら喜んでらしたし、もう今更なので許していただきたいかと。

なお、V2.3以前のX-BASIC for iOSではバグのため正常に走りません。
必ず、V2.4以降にバージョンアップしてください。


Zipファイル :XBsbase.zip


転載禁止です。

2013年8月1日木曜日

サンプル:レーダースネーキー


MZ-80Kの傑作ゲーム、「レーダースネーキー」を移植しました。
しかも、ベタ移植です(本当は少しだけアレンジしてあるんだけど)。

昔はこんなゲームを楽しんでいたんだということを、
ある人はなつかしく、ある人とは新鮮な気持ちで知ってください。

「I/O別冊 WICS・BASEプログラム集」よりの移植です。
もとネタがあるので、転載禁止です。

iPad縦画面のみ対応+日英対応です。



Zipファイル :XBrs.zip

2013年7月23日火曜日

サンプル:人間対戦チェスプログラム


人間対戦のチェスプログラムです。

間違ってもコンピューターとの対戦など出来ません。
見た目も非常にシンプルです。

結局、中途半端なプログラムに終わっています。
適当に改良してください(^_^;)。

iPadの縦横画面および日英に対応しています。



Zipファイル :XBches.zip

これは珍しく完全自作なので、転載ほか、いかように使っていただいても結構です。

駒のパターンは、実はUnicodeにある文字フォントです。
Unicodeではこんなものまであるのです。
(チェスがあるのですから、トランプなんて当然あります。)

2013年7月18日木曜日

「グラフィックが表示できん」とお嘆きの貴兄に

外人で、「グラフィックが表示されんから金返せ」などと言う奴が居たのですよ。

取説にはグラフィックの表示手順についてちゃんとく書いたし、サンプルも多数出している。
その上ここでも何も聞かずにこんな馬鹿なこという奴は、きっと何を触っても何も出来ないのだろうと、あきれかえってしまうわけです。

ってなわけで、そんな奴は無視して、日本語だけで、グラフィック表示の仕方を簡単に説明します。

・・・まずは、取説からの抜粋・・・

グラフィック画面は4画面あります。それをページと呼びます。
どのページに描画するかはapage()、どのページを表示するかはvpage()、
テキスト画面、グラフィック画面およびスプライト&BG画面の表示順位はvpriority()で
設定します。

従って、グラフィックの描画プログラムは基本的に、
vpage() 表示ページ指定 vpriority() 表示優先順位指定 apage() 描画対象ページ指定 wipe() クリア gColor() 描画色指定 描画命令群
という順で記述することになります。
 ・・・
ということです。この手順を守れば、確実にグラフィックは表示できます。
これはX-BASIC/68でもほとんど同じです(優先順位指定と色指定が違うけど)。 
 
・・・例・・・
vpage(B_TPAGE+B_GPAGE0,YES) vpriority(GPAGE0,TPAGE,GPAGE1,GPAGE2,GPAGE3) apage(GPAGE0) wipe() // gColor(255,255,255,255) line(0,0,100,100) // end
これで、(0,0)~(100,100)の間に白の直線を引きます。
描画しているのは、4ページあるグラフィック画面の内、GPAGE0のページです。

・・・

グラフィックを描画するプログラムを書く場合、グラフィックを1画面しか使わないのであれば、変更すべきはgColor()とline()の部分だけであって、他は定型として使い回せば良いのです。
何も難しいことはありません。

ある程度の手順を覚えなければならないことは、どの言語を使っても同じです。
いや、言語じゃなくてもアプリでも、それどころか世の中にある物全て、全く何も覚えずに使える物なんてないのです。

くれぐれも、何も努力をしないで「出来ないのは相手が悪い」などという愚かな発想に至らないように。


2013年7月13日土曜日

サンプル:ルナ・レスキュー

MZ-80Kの傑作ゲーム、「ルナ・レスキュー」を移植しました。
しかも、ベタ移植です(本当は少しだけアレンジしてあるんだけど)。

昔はこんなゲームを楽しんでいたんだということを、
ある人はなつかしく、ある人とは新鮮な気持ちで知ってください。

基本的には「I/O別冊 MZ活用研究」よりの移植です。
もとネタがあるので、転載禁止です。


iPad縦画面のみ対応、日英対応です。





Zipファイル :XBlunar.zip

2013年7月5日金曜日

サンプル:新説?!桃太郎ゲーム

MZ-80K用の古いゲームの移植です。
 iPad縦画面のみ対応、日英対応です。




「I/O別冊 MZ活用研究」からの移植で、転載禁止です。


Zipファイル :XBmomo.zip

2013年7月2日火曜日

サンプル:地底最大の作戦


MZ-80K用の古いゲームの移植です。
iPad縦画面のみ対応、日英対応です。



Oh!X1988/9からの移植で、転載禁止です。


Zipファイル :XBsnake.zip

V2.2のバグとその回避法

X-BASIC for iOS v2.2に以下のバグが発見されました。

1. print/printsで先頭文字が全角の時、それ以下に半角文字があっても全て全角幅で表示されてしまう

これはV2.2でのみ発生します。
当面の回避法は、print/prints()の表示文字列中、全角と半角を分離してください。

print "ABCあいう"
 ↓
print "ABC";"あいう"


2. 単項演算子と2項演算子を含む式で「システムエラー」もしくは「式の型が異なる」が発生する
「例1」
   if a>=-128 and a<=-1 then {
   }

 「例2」
  a=(a>=-1 or a<=128)

回避するには、負数を()でくくります。
「例1」
   if a>=(-128) and a<=(-1) then {
   }
「例2」
  a=(a>=(-1) or a<=128)

 もしくはifを個別に分割します。
   if a>=-128 then {
       if a<=-1 then {
       }
   }

・・・ではありますが、いずれもV2.3で修正済みですので、バージョンアップするのが一番手っ取り早いです(^_^)。

この他の、V2.2までに発生していてるバグは以下の通りです。
  1. dim floatに{}で初期値を指定するとエラーになる
  2. 配列を引数に持つ関数の中で、子関数にその配列を渡すときエラーが発生する
  3. 配列の2次元目以降の要素番号チェックが正しくない
  4. 外部関数内で発生したエラーのメッセージが表示されない
  5. 配列要素番号が(通しで)32767を超えると動作が異常になるかエラーが発生する 
  6. グローバルもしくはローカルの変数領域が64KB以上必要なとき、うまく確保できない
  7. emailSend()で添付ファイルをzipで圧縮するとき、正しいzipファイルが生成されない 
  8. randomize()がrandomise()になってる(綴りミス)
  9. 実行時エラーの指す行がずれている
4番まではV2.3で修正されました。5~8はV2.4で修正されました。
実行時エラーは小規模プログラムでは直りましたが、大規模プログラムでは 大幅にずれる問題が解決できていません。


2013年6月23日日曜日

サンプル:バネの物理的挙動をシミュレートするプログラム?

バネの物理的挙動をシミュレートするプログラム・・・だそうです。
// http://d.hatena.ne.jp/x68000forever/20101123/1290520018 より
// 画面初期化 / screen initialize
apage(0)
wipe()
vpriority(TPAGE,SPAGE,GPAGE0,GPAGE1,GPAGE2,GPAGE3)
vpage(B_TPAGE+B_SPAGE+B_GPAGE0)
gborder(1,CTHYELLOW)
int by=0
switch deviceType()
 case DEVICE_IPODTOUCH: // iPod touch
 case DEVICE_IPHONE: // iPhone
 case DEVIDE_IPHONE_SIMURATOR
  width(40)
  by=32
endswitch
//
int c1,c2,t
float l1,l2,l3,k,m
float a,b,c,w1,w2,w3,xx1,xx2,xx3,x1,x2,x3,r2=1.4142135623731#
//
print localizedString("変位1=","Displacement1=");:input l1
print localizedString("変位2=","Displacement2=");:input l2
print localizedString("変位3=","Displacement2=");:input l3
print localizedString("バネ定数=","Rate of spring=");:input k
repeat
 print localizedString("質量(>0)=","Mass(>0)=");:input m
until m>0
//
w1=pow((2-r2)*k/m,0.5#)
w2=pow(2*k/m,0.5#)
w3=pow((2+r2)*k/m,0.5#)
a=(l1+r2*l2+l3)/4
b=(l1-l3)/2
c=(l1-r2*l2+l3)/4
//
c1=x68Color2iOSColor(61376):// hsv(30,31,31))
c2=x68Color2iOSColor(55358):// hsv(100,31,31))
gColor(c2)
line(  0,288+by,511,288+by)
gColor(c1)
line(130,285+by,130,291+by)
line(255,285+by,255,291+by)
line(380,285+by,380,291+by)
sp_clr()
sp_disp(0)
sprite_pattern():sprite_pallet()
sp_disp(1)
//
repeat
 x1=a*cos(w1*t)+b*cos(w2*t)+c*cos(w3*t)
 x2=r2*a*cos(w1*t)-r2*c*cos(w3*t)
 x3=a*cos(w1*t)-b*cos(w2*t)+c*cos(w3*t)
 locate(0,5):print "t=";t
 locate(0,6):print "x1=";x1,"x2=";x2,"x3=";x3
 xx1=130+x1:xx2=255+x2:xx3=380+x3
 locate(0,7):print "xx1=";xx1,"xx2=";xx2,"xx3=";xx3
 sp_halt(YES)
 sp_move( 0,xx1-16,256+by, 0)
 sp_move( 1,xx1   ,256+by, 1)
 sp_move( 2,xx1   ,272+by, 2)
 sp_move( 3,xx1-16,272+by, 3)
 sp_move( 4,xx2-16,256+by, 4)
 sp_move( 5,xx2   ,256+by, 5)
 sp_move( 6,xx2   ,272+by, 6)
 sp_move( 7,xx2-16,272+by, 7)
 sp_move( 8,xx3-16,256+by, 8)
 sp_move( 9,xx3   ,256+by, 9)
 sp_move(10,xx3   ,272+by,10)
 sp_move(11,xx3-16,272+by,11)
 sp_halt(NO)
 if t=0 then wait(1)
 t=t+1
 wait(0.1)
until t>1000
end
//
func sprite_pattern()
 int i,j
 dim char sp1(255),sp2(255),sp3(255),sp4(255)
 sp1={
  0,0,0,0,0,0,0,0,0,0,4,4,4,4,5,5,
  0,0,0,0,0,0,0,0,4,5,5,5,5,5,6,6,
  0,0,0,0,0,0,0,4,5,6,6,6,6,6,6,6,
  0,0,0,0,0,4,5,6,6,6,6,7,7,7,7,7,
  0,0,0,0,4,5,6,6,7,7,7,7,8,8,8,8,
  0,0,0,4,5,6,7,7,7,8,8,8,8,8,9,9,
  0,0,4,4,6,6,7,8,8,8,8,9,9,9,9,10,
  0,0,4,5,6,7,8,8,9,9,9,9,10,10,10,10,
  0,4,4,6,6,7,8,9,9,10,10,10,10,11,11,11,
  0,4,5,6,7,8,8,9,10,10,11,11,11,11,12,12,
  4,5,6,6,7,8,9,9,10,11,11,12,12,12,12,13,
  4,5,6,7,7,8,9,10,10,11,12,12,13,13,13,13,
  4,5,6,7,8,8,9,10,10,11,12,13,13,14,14,14,
  4,5,6,7,8,8,9,10,11,11,12,13,14,14,15,15,
  4,6,6,7,8,9,9,10,11,12,12,13,14,15,15,15,
  5,6,6,7,8,9,10,10,11,12,13,13,14,15,15,15
 }
 sp4={
  5,6,6,7,8,9,10,10,11,12,13,13,14,15,15,15,
  4,6,6,7,8,9,9,10,11,12,12,13,14,15,15,15,
  4,5,6,7,8,8,9,10,11,11,12,13,14,14,15,15,
  4,5,6,7,8,8,9,10,10,11,12,13,13,14,14,14,
  4,5,6,7,7,8,9,10,10,11,12,12,13,13,13,13,
  4,5,6,6,7,8,9,9,10,11,11,12,12,12,12,13,
  0,4,5,6,7,8,8,9,10,10,11,11,11,11,12,12,
  0,4,4,6,6,7,8,9,9,10,10,10,10,11,11,11,
  0,0,4,5,6,7,8,8,9,9,9,9,10,10,10,10,
  0,0,4,4,6,6,7,8,8,8,8,9,9,9,9,10,
  0,0,0,4,5,6,7,7,7,8,8,8,8,8,9,9,
  0,0,0,0,4,5,6,6,7,7,7,7,8,8,8,8,
  0,0,0,0,0,4,5,6,6,6,6,7,7,7,7,7,
  0,0,0,0,0,0,0,4,5,6,6,6,6,6,6,6,
  0,0,0,0,0,0,0,0,4,5,5,5,5,5,6,6,
  0,0,0,0,0,0,0,0,0,0,4,4,4,4,5,5
 }
 for i=0 to 255
  sp3(i)=sp1(255-i)
  sp2(i)=sp4(255-i)
 next
 sp_def(0 ,sp1)
 sp_def(1 ,sp2)
 sp_def(2 ,sp3)
 sp_def(3 ,sp4)
 sp_def(4 ,sp1)
 sp_def(5 ,sp2)
 sp_def(6 ,sp3)
 sp_def(7 ,sp4)
 sp_def(8 ,sp1)
 sp_def(9 ,sp2)
 sp_def(10,sp3)
 sp_def(11,sp4)
endfunc
//
func sp_color2(pal;int,colX68;int,pb;int)
// X68の色コードでスプライトの色を設定する / set sprite color by X68 color
 sp_color(pal,x68Color2iOSColor(colX68),pb)
endfunc
//
func sprite_pallet()
 sp_color(  0,    0,1)://sp_color2( 0,    1,1)
 sp_color2( 1, 4229,1)
 sp_color2( 2, 8457,1)
 sp_color2( 3,12685,1)
 sp_color2( 4,19027,1)
 sp_color2( 5,23255,1)
 sp_color2( 6,27483,1)
 sp_color2( 7,31711,1)
 sp_color2( 8,35939,1)
 sp_color2( 9,40167,1)
 sp_color2(10,44395,1)
 sp_color2(11,48623,1)
 sp_color2(12,52851,1)
 sp_color2(13,57079,1)
 sp_color2(14,61307,1)
 sp_color2(15,65535,1)
endfunc

func str localizedString(js;str,es;str)
 if isLocalizeJapan() then return(js)
 return (es)
endfunc

Zip archive file: XBetc.zip

2013年6月18日火曜日

サンプル:信州


 
どこかで見たことがあるようなゲームです。

説明書は書いてませんが、.要するに同じ柄の牌を取っていくだけです。

iPad専用縦横、英語対応。

タッチ座標から牌位置を算出処理に手抜きがあるので、牌の真中付近でないと間違えることがあります(checkPoint())。

やり直しや得点もないので、改良してやってください。

現在のX-BASIC for iOSのスプライトは、ここで使われている程度がちょうど良い、という例でもあります。

Oh!X1988/6からの移植で、転載禁止です。

Zipファイル :XBsinshu.zip

2013/07/16追記
V2.3では配列周りのエラーチェックが正しくなった関係で、信州がエラーで落ちるようになってしまいました。V2.3でも動くサンプルに更新しました。

2013年6月16日日曜日

サンプル:PITMAN




PITMAN ; X-BASIC for iOS版


最初に


このゲームは、画面の関係上iPadの縦画面専用です。

遊び方


PITMANを操作して、画面内の全ての金塊を取るのがゲームの目的です。
以下が、登場物とその特徴です。

  はしご PITMANは上下左右に移動できます。
金塊 左右からしか取れません。
下が空白になると、金塊は落下します。
  左右から掘って進めます。
一度掘ると空白になって元には戻りません。
左右から押すことが出来ます。
金塊と同じように落下します。
  進めません。
押すことも出来ませんし、落下もしません。
PITMAN 本編の主人公。
下が空白のときは落下します。上が空白の時はジャンプできます。
(このジャンプを使った面があります。)

Play modeでの操作法



操作は下図の通り、タッチキーとファンクションキーで行います。

PITMAN移動

[やり直し] 一人減らして同じ面をやり直します。
身動きが取れなくなったときなどに押してください。
[編集] 編集モードに入ります(後述)。
[次面] 一人減らして次の面へ移動します。残り一人の時は移動できません。
[前面] 前の面に移動します(人は減りません)。
[終了] ゲームを終了します。

Edit modeでの操作法



Edit modeは、面データを編集するためのモードです。
操作は下図の通り、タッチキーとファンクションキーで行います。

カーソル移動

[フラグ] クリアフラグを消します。
[入替] 現在の面と選択した面を入れ替えます。
[消去] 現在の面内容をクリアします。
[保存] 全ての面データ+クリアフラグをファイルに保存します。0~3の4本が保存可能です。
[読込] ファイルから面データ+クリアフラグを読み込みます。
[面選択] 面を選択します。
[次面] 次の面へ移動
[前面] 前の面へ移動
[復元] 編集内容を破棄し、元の状態に戻します。
[プレイ] この面からプレイします。
以下は、面内に配置するデータを選択します。
[空間]
[はしご]
[金塊]
[土]
[岩]
[壁]
[PITMAN]
1つの面の中にPITMANを2人以上配置しないでください。
また、面データが問題ないかどうかのチェックはしていません。絶対に解けない面も作れてしまいますので、気をつけてください。

選択中の操作法


Edit modeの[面選択]や[入替]を押すと、面の一覧表示から選択できます。

操作は下図の通り、タッチキーとファンクションキーで行います。
また、各面部分を直接タッチして選択することも出来ます。

カーソル移動

[決定] 面を決定します。
[+10面] 次の10面を表示します。
[-10面] 前の10面を表示します。
[中断] 選択を中断します。

お約束など


  1. 転載は禁止です。
  2. 完成度はあえて高くしてありません。ぜひ皆さんで改良してください。出来れば送っていただけるとありがたいかと。 完全タッチ化とか。
  3. このプログラムを使って発生したのいかなる問題にも、当方は関知しません。
  4. 感想などありましたらお寄せください。
Oh!MZ 1985/11(PIT-MAN2000)より移植・・・らしい(すでに原本を紛失しているため確認できず)。
Oh!MZ 1985/8 MZ-700/1500用が一番最初。


Zipファイル :XBpit.zip

バグ取り情報:
2013/06/22
編集したマップおよびクリア情報がファイルに正しく書き込まれていませんでした。
修正版をアップしていますが、fopen(~,"w")を"c"に書き換えるだけです。