[
板情報
|
カテゴリランキング
]
したらばTOP
■掲示板に戻る■
全部
1-100
最新50
|
1-
101-
201-
301-
401-
501-
601-
701-
801-
901-
1001-
1101-
1201-
1301-
1401-
1501-
1601-
1701-
1801-
1901-
2001-
2101-
2201-
2301-
2401-
2501-
この機能を使うにはJavaScriptを有効にしてください
|
レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。
おちゃめくらぶ掲示板
456
:
御茶目菜子
:2010/12/06(月) 13:39:04 A(1))*((A(B)=K)*(C=0)+(A(1XORB)=K)*(C=1))-((A(0)=A(1))*<br>(K=0)):S=S+1:BEEP:NEXT<br>(※ゲーム内容は下記のPC-E500版を参照)<br><br>ふと思って、mixiの「ポケコンジャーナル」コミュでJUN氏がカシオのポケコン(PB-1000<br>シリーズ)用に作った上記の1LINEゲームをシャープのポケコン(PC-E500シリーズ)用に<br>作り直してみたにょ。<br>MOD(剰余)や\(整数化した商)はPC-E500では使えないためその部分は冗長にるものの<br>「RND」に関してはPB-1000ではN88BASICなどと同じく0から1の乱数しか発生できないため<br>「RND 8」で1〜8の整数化した乱数が発生できるPC-E500はリストが短縮でき何とか1行に<br>収まるかと思ったらそんなに甘くなかったにょ。<br><br>実は、PC-E500シリーズでは1行に入るのは下記の2つの条件を両方満たした場合だけにょ。<br><br>(1)最大255バイト<br>(2)行番号を除き最大で251文字<br><br>行番号(2バイトで記録)、その行に入っているバイト数(1バイトで記録)、改行コード<br>(1バイトで記録)が合計4バイトであるため(1)と(2)は同じもの(251+4=255)と考える<br>ことができそうだけどそうではないにょ。<br>それは「リスト表記上の1文字=1バイト」ではないからにょ。<br><br>BASICの命令は内部では中間コード(2バイト)で記録されるにょ。<br>そのため「INPUT A」というのは「INPUT」(2バイト)、「A」(1バイト)の合計3バイト<br>となるにょ。(1行には上記のように4バイト別途に必要だから「10 INPUT A」だと7バイトに<br>なる)<br>しかし、表記上は「I」「N」「P」「U」「T」「 」「A」の6文字分となるにょ。(シャープの<br>ポケコンの場合は命令の後に強制的にスペースが挿入されてしまう)<br><br>あともう1つ厄介なのがPC-E500シリーズでは単精度の定数は一律8バイトで記録されるにょ。<br>つまり、「9」でも「9999999999」でも内部では同じ8バイトということにょ。<br>1LINEゲームを作るときにはこれは非常に痛いにょ。<br>各命令の後に自動的にスペースが挿入されるためカシオ系のポケコンよりも不利なのに<br>加えてこの定数が一律8バイトであることが原因で同じ内容のものを作っても多くの文字数、<br>メモリ使用量となることが多いにょ。<br><br>ただし、この定数が一律8バイトというのは16進数を使うことでカバー可能にょ。<br>「9」ならば8バイトだけど「&H9」ならば3バイトだからね。<br>シャープのポケコンは16進数表記における「H」は省略可能なので「&9」とすれば2バイトで<br>済むにょ。(ゼロの場合は「&0」としなくても「&」だけで良い)<br>1つに付き1バイト余分にかかるというのは痛いけど一律8バイトよりは圧倒的にメモリを<br>節約可能であるため1LINEゲームでは必須の知識だといえるにょ。<br><br>その1バイトが重要という人で同じ定数を多用している場合はあらかじめ固定変数に代入<br>しておくという手があるにょ。(「1」が5回以上出てくるのならばあらかじめ「Z=1」と<br>いうように固定変数に代入しておいてリスト内では「1」ではなく「Z」を使用する)<br>それに、「&」を付けると1つにつき3.5m秒のロスになるため処理速度がかなり遅くなって<br>しまう場合もあるにょ。<br>その点、固定変数であれば0.8m秒のロスで済むために速度面でも16進数表記よりは有利に<br>なるにょ。<br><br>あとE500で1LINE(2LINE)ゲームを作る場合のポイントとなるのはFOR文に置けるSTEP0での<br>無限ループの活用と論理式とIF文の有効活用にょ。<br>論理式よりもIF文で書いた方が短くなる場合は積極的に使用すべき・・・とはいえ、IF文が<br>使えるのは1行につき1回(複数回使うと分岐処理の問題を考えなくてはならないため本当に<br>省メモリになっているか良く考える必要がある)ということで使いどころが重要にょ。<br><br>つまり、PC-E500で1LINEや2LINEのゲームを作るには独自の知識が必要になってくるという<br>ことにょ。<br>それで完成したのがこれにょ。<br><br>《1LINE ハイローゲーム》PC-E500用<br>http://ww5.tiki.ne.jp/~ochame/E500/SOFT/SHORTP.HTM#HILOW<br><br>1 CLEAR :WAIT Z:RANDOMIZE :FOR I=&TO 1:A=RND 8,B=RND 8,D=RND 2:CLS :PRINT A;B:<br>PRINT CHR$ (47-D*2):PRINT "スコア";S:FOR J=&TO 99-S:K=VAL INKEY$,J=J+K*99:NEXT :<br>I=-(K
ゲーム作りがゲーム
《1LINE ハイローゲーム》PB-1000用 by JUN
1 CLEAR:DIMA(2):FORI=0TO1:FORJ=0TO2:A(J)=INT(RND(-1)*8+1):NEXT:B=-(A(1)>A(0)):
C=A(2)MOD2:CLS:PRINTA(0)A(1),CHR$(43+C*2),S:FORJ=0TO30-S\5:K=VAL(INKEY$):
J=J+K*31:NEXT:I=1+(A(0)
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板