ひろじいべーしっくch 第24回の動画の解説・補足。(0-024)
ここでは、サンプルプログラム「だるまさんが!」の説明のほか、プチコン4の公式SmileBoom様の”Let’s Try Programming”のYoutube動画とそれに関連する「プチコン4ワークショップ資料 前半」のpdfを紹介します。
プログラム
今回のプログラムはこちら。(公開キー443E4X1、LOAD“N24_DARUMA”)
このゲームは画面を左に90度傾けて、タテ画面で遊びます。鬼役の戦士が「だるまさんがころんだ」を一文字ずつしゃべります。その間はプレイヤーである魔女を「↑ボタン」と「↓ボタン」を交互に押すことで前進します。タテ画面なので、「←」と「→」を押すようなイメージになります。「だるまさんがころんだ」と言い切ったところで、鬼が振り向きます。このときボタンを押していたらアウトとなりゲームオーバーです。ゲームオーバーとならずに鬼のそばまで前進するとオールクリアでハッピーエンドです。

このブログにおいてはなるべく専門用語を使用せずに非常に短く簡潔に説明しています。
一部の内容を省略している箇所があります。
詳細を知りたい方は公式リファレンス等も参照してください。
[]については省略可能ですが、一部の命令(例えばDIM命令等)については最低一つの[]は必要です。
THOME
THOME スクリーンID,ホーム座標X,ホーム座標Y
テキストスクリーンのホーム座標(座標基準点)を設定する
ホーム座標はTOFS命令の座標基準点、TROT(回転)やTSCALE(スケーリング)の中心点として使用する
引数
スクリーンID
設定するテキストスクリーンのID:0~4
ホーム座標X,ホーム座標Y
設定するホーム座標の座標(右はマイナス、下はマイナス)
・ハードウェアの仕様により、実数値を設定すると参照フォント画像が1ピクセルずれる事がある。
(解説)THOMEを含めたTOFSのテストプログラム

一度画面を消去後、グラフィックの座標で右上から右に50、下に100ズレたところにLOCATE0,0の場所としてPRINTが実行される。そして100フレームの休憩後、さらに右に20、下に20ズレたところにLOCATE0,0の場所としてPRINTが実行される。ここでの留意点はTHOMEとTOFSは互いにプラスマイナスの符号が逆であるところです。
TOFS
TOFS スクリーンID,X,Y[,Z]
テキストスクリーンの表示座標を設定する
・THOMEとTOFSの関係は、「THOMEで設定したテキストスクリーン上の座標を、TOFSで設定した画面上の座標に持って行く」と考えれば良い。
引数
スクリーンID
設定するテキストスクリーンのID:0~4
X,Y
設定する表示座標(右はプラス、下はプラス)
・ハードウェアの仕様により、実数値を設定すると参照フォント画像が1ピクセルずれる事がある。
Z
表示優先度:-4095~4095
・小さいほど手前に表示される。
TROT
TROT スクリーンID,角度
テキストスクリーンの回転角を設定する
・THOMEで設定したホームポジションを中心に回転する。
引数
スクリーンID
設定するテキストスクリーンのID:0~4
角度
回転角(度) (普通の角度。ラジアンではない。)
・ハードウェアの仕様により、設定角度により参照フォント画像が1ピクセルずれる事がある。
(解説1)テキストスクリーン4(サイズ8)におけるTROTのテストプログラム。

実行画面(LOCATE0,0の基準点となる中心点はTOFSにより右に200、下に100ずらしている。画面の84という数字は、時計の3時を0度としたときに、時計回りに84度傾いていることを表示している)

(解説1)テキストスクリーン1(サイズ16)におけるTROTのテストプログラム。

実行画面(LOCATE0,0の基準点となる中心点はTOFSにより右に200、下に100ずらしている。画面の46という数字は、時計の3時を0度としたときに、時計回りに46度傾いていることを表示している)

(解説2)これはあまり良いテストプログラムではないですが、動画内で表示したので・・・

TROTで扱う角度はラジアンではなく、通常の角度であるため、上記プログラムの4行目でDEGの命令を使うと通常ではない扱いになってしまいます。ここでは、誤った例として理解して下さい。(動画では9分10秒頃)
動作の説明

※ACLS命令の位置が4行目にあり、2行目と3行目の画面設定がリセットされています。ゲーム上では特に影響がありませんが、プログラムとしては無駄な記述となっています。詳細は動画内の9分58秒あたりをご覧ください。
動画の10分2秒

以下は、おおまかな動作の説明です。概略図は以下の通りです。

@ONITIMING内での補足の説明図

変数Tを添え字とした配列Xを作成、変数Tに応じて、フラグとしての数値を0か1かを乱数で決定します。配列Xで添え字をTとしたときの数値が1のときに、文字をTALK文で発声、文字を変更します。
@ONI
鬼の表示などの処理をします。
@ONITIME(@ONIBUTTONを含む)
鬼が振り返った際の処理をします。
@NYURYOKU
プレイヤーを前進の判定に関する処理をします。
(本サンプルプログラム「だるまさんが!」の様に90度傾けた時の)TOFSやTROTなどの命令の効果はテキストスクリーンのみです。グラフィックについては従来通りの指定(SPOFSについては横長の画面での横軸がX軸座標)となるため、それぞれのスプライトを90度傾けて表示することに留意して下さい。詳細は動画内の12分27秒あたりからです
動画内の12分56秒

実行画面

改造版(坊さんが屁をこいた)
今回の改造版は、
・セリフが「ぼんさんがへをこいた」になり、紫色で一文字ずつTROTによる処理で傾く様になりました。
・実は改造前は鬼が振り返るまでの時間は同じだったのですが、それが短くランダムになりました。
・ゲームオーバーとならずに鬼のそばまで前進するとオールクリアでハッピーエンドであるところで、それまでの回数が表示されます。
・ACLS命令の位置の影響など、細かい修正がされました。

実行画面

実行画面(終了画面)

補足(動画内での袋とじコーナー)
今回はプチコン4の公式SmileBoom様の”Let’s Try Programming”のYoutube動画(※日本語タイトルとしては『プチコン4』やってみよう!プログラミング[Nintendo Switch]とも書いてあります。)とそれに関連する「プチコン4ワークショップ資料 前半」のpdfを紹介します。
『プチコン4』やってみよう!プログラミング #1 「コンピューターに命令してみよう!」[Nintendo Switch]
プチコン4ワークショップ資料 前半 (PDFファイル)のダウンロードサイト
袋とじ1(袋とじ前半)
➄タッチで絵を描くプログラム(プチコン4ワークショップ資料 前半pdf 12頁目)
動画の17分17秒

袋とじ2(袋とじ前半)
⑥フルーツ楽器のプログラム(プチコン4ワークショップ資料 前半pdf 14頁目)
動画の18分4秒

袋とじ3(袋とじ前半)
⑦王様ジャンプゲーム(プチコン4ワークショップ資料 前半pdf 16頁目)
↓”Let’s Try Programming#10”の9分33秒にゲームオーバーのメッセージを追加するお題があったので、(Let’s Try Programming でyoutubeで日本語の字幕設定をしてくただくと、お題や説明が確認できます。)その追加をしたプログラム

↓”Let’s Try Programming#10”の10分21秒に「拡大したおばけ」を追加するお題があったので、その追加などいくつか改良したプログラム

動画の22分26秒

以下、SPFUNC命令を補足。
SPFUNC
SPFUNC スプライト番号,”@ラベル”
SPFUNC スプライト番号,”ユーザー定義命令名”
スプライトごとにコールバック処理を割り当てる
・コールバック処理が必要な上級者向けの命令。
・GOSUBでジャンプしてきてほしいラベルか、実行してほしいDEF命令名のどちらかを指定できる。
・CALL SPRITE により全スプライトのコールバック処理を一度に実行する。
・コールバック先ではCALLIDX()関数で番号を取得できる。
引数
スプライト番号
対象のスプライト番号:0~4095
@ラベル
呼び出される処理先のラベル
ユーザー定義命令名
呼び出されるユーザー定義命令の名前
例
SPFUNC 0,”@PROG”
SPFUNC 1,”USERDEF”
袋とじ4(袋とじ後半)
”Let’s Try Programming#11” 『プチコン4』やってみよう!プログラミング #11 「シューティングゲームを作ろう!」[Nintendo Switch]
動画の23分20秒(”Let’s Try Programming#11”の11分56秒より前、つまり改造前の状態。敵は真っ直ぐ降りてくる。)

動画の23分48秒(”Let’s Try Programming#11”の12分9秒で解説されている改造。敵は自機を追いかけてくる。)

”Let’s Try Programming#11”の12分45秒以後で解説されている改造のお題「連射機能」「ライフ制など」を加えたプログラム。(動画内の公式のプログラムからうp主が改造を加えたものです。)

袋とじ5(袋とじ後半)
⑧忍者修行ゲーム(プチコン4ワークショップ資料 前半pdf 18頁目)
動画の25分59秒

動画の26分20秒(ゲーム難易度を下げる改造例。26行目のS=SPSET(1,3,3394)をS=SPSET(1,9,3394)に変更する)

まとめ
1.TOFSで移動させてからTROTで回転!
2.ACLS命令の効果と位置には気をつけよう!
3.(本サンプルプログラム「だるまさんが!」の様に90度傾けた時の)TOFSやTROTなどの命令の効果はテキストスクリーンのみ。グラフィックについては従来通りの指定となるため、それぞれのスプライトを90度傾けて表示することに留意して下さい。
4.プチコン4の公式SmileBoom様の”Let’s Try Programming”のYoutube動画とそれに関連する「プチコン4ワークショップ資料 前半」のpdfを参考にしてみよう!特にLet’s Try Programming#8から#10の⑦王様ジャンプゲームはSPFUNC命令を学ぶのに良いサンプルプログラムです。
コメント