読者です 読者をやめる 読者になる 読者になる

プチコンで遊ぼう! (はてなブログ版)

任天堂3DSのプチコンで遊ぼう! [twitter:@eida_s]

はてなダイアリーから移行しました。 はてなダイアリーのURLを開いても自動的にこちらにリダイレクトされますのでご了承ください。

140文字プログラム集(1)

Twitterアカウント(@eida_s)上でつぶやいた、140文字以内でできているプログラムのまとめ(1)です。(なんたる手抜き!)

■140文字プログラムNo.1 140スキー (2011.11.04)

CLS:S=0X=15FOR I=0 TO 1X=X-(BUTTON()+1)%3+1LOCATE RND(31),23:?"XX":I=CHKCHR(X,0)!=0LOCATE X,0?"V"↓ S=S+1VSYNC 3NEXT:?S
(118文字)

【遊び方】
スキーヤー(V)を十字キー左右(ほかのキーでも反応します)で操り、障害物(XX)を避けながらどんどん下に向かって滑り降りていこう!
障害物にあたったり、画面左右からはみ出るとゲームオーバー。得点が表示されます。

【プログラムの解説】
伝統的なスキーゲームですが、1行ではないものの、わずか120文字程度でできています。
24文字目からのボタン判定は、ぱっと見意味不明ですが、左に動く、動かない、右に動くの3パターンの判定としてはこれ以上短くすることは難しいでしょう。

また、地味ですが、68文字目のCHKCHRで当たり判定と画面外へのはみ出し判定を兼ねているのは注目ポイントでしょう。

ちなみに61文字目のコロンは省略可能でした。


■140文字プログラムNo.2 140ゴルフ (2011.11.07)

T=0Z=RND(27)+5LOCATE Z,CSRY?"O↓
@A↓
U=T:T=TCHTIME:ON U>T GOTO@A↓
U=U/4FOR I=0 TO U?"o";:VSYNC 3NEXT↓
IF ABS(Z-U)<1 THEN ?"IN!"
(122文字)

【遊び方】
1パットゴルフです。O(ホール)を狙ってください。
タッチの長さでパットの長さが変わります。1秒タッチでだいたい画面半分です。

【プログラムの解説】
今回はタッチ機能を使ってみました。
今回はあまり難しいところはありませんが、ループを抜ける判定にON〜GOTOを使っています。
条件不成立(==0)時にジャンプならばON〜GOTO、条件成立(>0)時にジャンプならばIF〜THENと使い分けると文字数の効率がよくなります。
システム変数CSRYを使って、RUNした行から表示されるのがなにげにお気に入りです。

なお、初出時は1文字目のTをUとしていましたが、今回修正しました。Uでも通常は動くと思います。
また、24文字目からのCSRYがCSRXとなっていましたので訂正します。



■140文字プログラムNo.3 140スロット (2011.11.13)

CLEAR↓
@S↓
S=0VSYNC 4CLS↓
FOR I=1 TO 4J=BUTTON()==I OR B(I)S=S+J↓
A(I)=(A(I)-I*(J-1))%9B(I)=J?A(I),↓
I=I*2-1NEXT↓
IF S<3THEN@S
(120文字)

【遊び方】
十字ボタン上=左、下=真ん中、左=右でリールを止めて777を出そう!
777が出たかどうかの判定はないので、プレイヤーが自分で判定してください。
あんまり面白くない...(T_T)

【プログラムの解説】
今回のは何が何やら良くわからないところだらけです。
スロットのリールが3個しかないのに、FOR文が1〜4になっているのは、十字キーの判定と合わせるためです。ほかにも良い方法はありそうですが、思いつかなかったのでw
リールは一応、それぞれのドラムで順番が違うようにしてあります。ただし、0の位置だけ合ってしまうのですが。

777の判定は、長さの都合で入れることができませんでした。あと20文字ちょっとあれば入れられたかな?
それと、やはり長さの関係で、操作が変則的になっています。あと数文字あれば、ABYボタンで位置も合わせた操作にできたと思いますが...。ちょっと残念。

それより残念なのは、あまり面白くないことか...。

初出時は82文字目の%9が%8になっていたので、修正しました。