Enjoy programming more!
Kidspod is a post site which supports young programmers.
First step to join us.
Register as a member
For members

ロジックゴルフ

2023/01/07 10:54:32

ロジックゴルフ

ato5fun

ato5fun

■説明
Gに玉を入れるゲームです。
ボールのスタート位置を決め、玉を打ちます。
玉がGに入ると面クリアです。
反射板の斜面に当たると玉の進む方向が変わります。
外壁や進行方向に垂直な面に当たるとダメです。
全部で13面あります。
失敗すると、その面からやり直しです。

■操作
移動:← →
玉を打つ:スペースキー

■変数
A 面作成WORK
B 面作成WORK
D INKEYによる増減
I FOR
J FOR
K INKEY
M 面数-1
P 玉の移動増減X
Q 玉の移動増減Y
W WAIT
X 玉位置X座標
Y 玉位置Y座標

■プログラム
10 初期設定
20 初期設定
30-40 面描写
50-60 左右移動・スタート位置決定
70 玉消し
80-90 跳ね返り処理
100 クリア処理
110 玉表示
120 リトライ処理

■改造
容量が残り8Byteです。
大きく改造したい場合は、面のデータを少なくするのがいいかと思います。

一つの面のデータは5個です。
例えば、1面のデータは[0]~[4]に入っています。

オリジナルの面も作成できます。
面のデータは圧縮されています。
[0]には1面の1行目のデータが含まれています。
作成していた時の資料画像を貼りました。
画像の右のように3bitで一つを表しています。
[0]のような変数は2byte使っていますので[0]だけで16bitあり、一つの変数に入る情報は
3bitで一つになることを考えると5個(15bitを使い1bit余る)入ります。
1行目は数字に直すと4・5・6・0・5となりますが、これを10進数にするには
4+5*8+6*64+0*512+5*4096=20908
として、20908が1行目のデータになります。
同様に5行作成すれば1面分になります。
面の描写時にこの逆の計算をして表示しています。
30行の以下の部分(3bitずつ分解してキャラクターコードに置き換えている)
A=[I+M*5]>>(J*3)&7:B=(A>3)*(A+152)+(A=3)*26+(A=2)*25+(A=1)+!A*32

GOOD

Programmers marked as favorites.3 programmers

ほっちゃん
ほっちゃん
2023/03/03 17:50:26
あべのぶひで
あべのぶひで
2023/02/08 23:14:34
Kidspod運営チーム
Kidspod運営チーム
2023/01/13 17:43:50