G[Q1,Q2]を10で割ったものの整数部を10倍すると、1の位が0になります。文字列として設定します。その前に、クリンゴンがいるにもかかわらずシールドの値が低い場合は警告メッセージを出します。(870行から900行)910行から1250行までが宇宙域の情報の設定です。910行から940行でクリンゴンの値を初期化します。910行の命令で配列が0でクリアされていると思われるのですが、920行から940行で、再度エネルギーを0に設定しるのが冗長のような気がします。950行から970行で、宇宙域を表す配列を初期化しています。ここで、最初に空白文字列で初期化したZ$が使われるのですが、240行では70文字しか代入されていないのが謎。72文字の空白にしておくべきでしょう。980行からは以下のことを行っています。適当な書き込める座標(空白の座標)を求めるクリンゴンを書き込むクリンゴンのパラメータを保存する基地がある場合は適当な書き込める座標(空白の座標)を求める基地を書き込む星の数の分だけ適当な書き込める座標(空白の座標)を求める星を書き込む次の図は宇宙域を表す配列の具体的な例を示しています。8x8の座標を表現します。最初に書き込むのはエンタープライズです。(S1,S2)の位置に書き込みます。配列への書き込みは5510行からのサブルーチンが行います。書き込みたい文字列をA$に、書き込みたい座標を(Z1,Z2)に設定してから呼び出すことで書き込みが行われます。全要素を通算した192要素の何番目から書き込めばいいのかを求めます。一行分の要素は3*8=24文字分です。書き込まないといけません。Q$に書き込むときは添字を-72して、S$に書き込むときは添字を-144する必要があります。部分文字列の代入ができるようなのですが、プチコンでは文字列の部分代入はできません。データの持ち方から変える必要があります。次のような方法が考えられます。A$これだと、サブルーチンにする必要もないですね。オリジナルでは、表示の際に部分文字列を取り出して表示しやすいように、文字列配列を状態の保存場所にしてあるのだと思います。表示時に適切に整形できるのであれば、連続した文字列にこだわる必要はありません。元の処理に戻ると、次はクリンゴンの設定です。5380行からのサブルーチンを呼んで、書き込み可能な適当な座標を求めます。RETURNR1とR2に1から8の適当な数字を求めます。5680行からの文字列比較ルーチンを呼び出します。比較して一致しなかった場合は、既に何かが書き込まれているということで、別の座標を求めなおして空白の座標を探しています。整数のはずですので、0.5を足してINT()をとっても、元の数と同じになるはずです。(Z1,Z2)の情報に相当する比較対照位置を求めています。指定位置からの3文字分の部分文字列とA$が一致している場合は、Z3=1となります。プチコンでやるならこんな感じでしょうか。RETURNZ3=1RETURNまた、元の処理にもどります。クリンゴンの次は基地の書き込みです。これもクリンゴンの時と同様の手順で行われます。同じようにして星を書き込みます。4120行からのサブルーチンを呼び出します。このサブルーチンは現在の状況を確認して短距離センサの出力を行います。これは次回に回しましょう。はてなブログPro2018-12-23に「はてなダイアリー」から「はてなブログ」に移行しました。リダイレクトされています。Kindle2020-02-19毎日やらかしてます。twitterHatenaはてなブログをはじめよう!gust_notchさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。