ICT ジュニア(上田パソコンクラブ) プチコンでダンジョンゲームを作る(3) ●上画面に自分のキャラクターを表示する 前回は、下画面に迷路を作る所まで、プログラムを 作りました。 今度は上画面に、自分のキャラクターと、周辺の迷 路を表示させます。 まずは自分のキャラクターの表示からです。 プチコンでは、画面に文字を表示するほかに、あらかじめ用意されているキャラクターなどを 表示する「スプライト機能」があります。 それを使って、自分のキャラクターを表示 してみましょう。 まず、最初のプログラムタイトルを 「DANJON6」にしましょう。 1 ’*** 2 DANJON6 *** ゲームループに入る前の所で、自分のキャラクターを表示しましょう。 95 @ANAHORIEND 96 97 PX=1 キャラクターの座標を OX,OY に設定 98 PY=1 99 100 101 102 103 104 105 106 OX=128 スプライト 0 番にキャラクターを設定 OY=96 SPSET 0,64,2,0,0,2 SPOFS 0,OX,OY スプライトを(OX,OY)に表示 ’--- ゲーム @GAMELOOP ループ --- 実行すると、上画面のまん中にキャラクターが表示さ れます。 プチコンでダンジョンゲームを作る(3)/1 ICT ジュニア(上田パソコンクラブ) スプライト関連の「SPSET」(エスピーセット)、「SPOFS」(エスピーオフセット)命令が新しく出 てきました。 SPSET 命令は、スプライトで使うキャラクターを設定します。 SPSET 0 管理番号 管理番号 キャラ番号 パレット番号 横反転 縦反転 優先順位 ,64 キャラ番号 ,2 パレット番号 ,0 横反転 ,0 縦反転 ,2 優先順位 スプライトの管理番号。0~99 の範囲で自由に決められます。 スプライトのキャラ番号。0~511(上画面用)、0~117(下画面用)。 色のパレット番号を指定します。0~15。 0=なし、1=横反転(左右逆に表示) 0=なし、1=縦反転(上下逆に表示) スプライトを表示する優先順位 0=コンソール(文字表示)の前 1=手前の BG 面(背景表示面)より前 2=2 枚の BG 面の間 3=奥の BG 面の後ろ SPOFS 命令は、スプライトを画面に表示する座標を設定します。 SPOFS 0 管理番号 管理番号 x 座標 y 座標 補間時間 (省略可能) ,OX x 座標 ,OY y 座標 ,0 補間時間 スプライトの管理番号。0~99。 スプライトのx座標(標準では左上の座標)。-1024~1024。 スプライトの y 座標(標準では左上の座標)。-1024~1024。 前の状態から現在の状態へ移動する間にかかる時間。1=60 分の 1 秒。 プチコンの画面のグラフィック座標は、 右のようになっています。 スプライトの左上の座標の値(OX,OY) は、キャラが画面のまん中に来るように (120,88)にしています。 ※画面の中心座標は(128,96)ですが、 キャラクターの大きさが 16×16 ドットある ため、キャラを中心に配置するためには 縦横 8 ドットずつ減らして指定する必要 があります。 プチコンでダンジョンゲームを作る(3)/2 ICT ジュニア(上田パソコンクラブ) また、SPSET 命令のキャラ番号を変えると、表示されるキャラクターが変わります。 以下のように変えてみましょう。 64:右向き 72:左向き 76:上向き 68:下向き さらに、表示した自分のキャラクターをアニメーションで動かしてみましょう。 100 OX=120 101 OY=88 102 SPSET 0,64,2,0,0,2 103 SPOFS 0,OX,OY 4 コマ分アニメーション 104 SPANIM 0,4,10 105 106 ’--- ゲーム 107 @GAMELOOP ループ --- スプライトをアニメーションで動かすには、「SPANIM」(エスピーアニメ)命令を使います。 SPANIM 命令の文法は以下のとおりです。 SPANIM 0 スプライト 番号 ,4 コマ数 ,10 コマ表示 時間 ,0 くり返し 回数 スプライト番号 アニメーションさせたいスプライトの番号。0~99。 コマ数 アニメのコマ数。SPSET 命令で指定した番号のキャラクター絵から、その コマ数分だけアニメを表示する。 コマ表示時間 1コマを表示する時間。60 分の 1 秒単位で指定。 くり返し回数 アニメをくり返す回数を指定。0=無限にくり返し。省略すると無限くり返 し。 実行してみましょう。男の子のキャラがアニメーションして、歩いているように見えます。 → → → →くり返し プチコンでダンジョンゲームを作る(3)/3 ICT ジュニア(上田パソコンクラブ) ●キー操作でキャラクターの向きを変える 十字キーのキー操作で、自分のキャラクターの向きを上下左右に変えてみましょう。 上下左右の移動処理をするサブルーチンで、それぞれの向きのスプライトを設定します。 120 121 122 123 124 125 126 ’イドウ ウエ @UE IF PY<=1 THEN RETURN IF M(PX,PY-1)==0 THEN RETURN PY=PY-1 上向きのスプライトを設定 SPCHR 0,76 RETURN 127 128 ’イドウ シタ 129 @SHITA 130 131 132 133 134 135 136 137 IF PY>=21 THEN RETURN IF M(PX,PY+1)==0 THEN RETURN PY=PY+1 下向きのスプライトを設定 SPCHR 0,68 RETURN 138 139 140 141 142 143 144 145 146 147 IF PX<=1 THEN RETURN IF M(PX-1,PY)==0 THEN RETURN PX=PX-1 左向きのスプライトを設定 SPCHR 0,72 RETURN ’イドウ ヒダリ @HIDARI ’イドウ ミギ @MIGI IF PX>=29 THEN RETURN IF M(PX+1,PY)==0 THEN 148 PX=PX+1 149 SPCHR 0,64 150 RETURN RETURN 右向きのスプライトを設定 上下左右の 4 カ所のサブルーチンを変更しますが、キャラ番号以外は同じ内容なので、1 カ 所打ったら、あとはコピー&ペーストすればいいでしょう。 プチコンでダンジョンゲームを作る(3)/4 ICT ジュニア(上田パソコンクラブ) 新しく SPCHR(エスピーキャラクター)命令が出てきました。これはスプライトのキャラクターを 変更する命令です。 SPCHR 0 スプライト 番号 スプライト番号 キャラ番号 ,76 キャラ 番号 キャラクターを変えたいスプライトの番号。0~99。 新しいキャラ番号。 プログラムを実行してみましょう。 十字キーの操作によって、自分のキャラクターが上下左右に向きが変わります。 ここで「DANJON6」の名前で、プログラムを保存(SAVE)しましょう。 プチコンでダンジョンゲームを作る(3)/5 ICT ジュニア(上田パソコンクラブ) ●上画面に背景を表示する 自分のキャラクターが表示できたので、次は自分の 周囲の迷路を背景として表示しましょう。 まず、最初のプログラムタイトルを 「DANJON7」にします。 1 ’*** 2 DANJON7 *** プチコンの画面には、背景を表示するための「BG 画面」があります。 これを使って、背景の迷路を表示します。 プチコンでダンジョンゲームを作る(3)/6 ICT ジュニア(上田パソコンクラブ) 背景を表示する部分はサブルーチンにして、メインプログラムから呼び出すようにします。 最初に自分のキャラクターを設定する所で、GOSUB 命令で呼び出します。 100 101 102 103 104 105 106 107 108 OX=120 OY=88 GOSUB @BG SPSET 0,64,2,0,0,2 SPOFS 0,OX,OY SPANIM 0,4,10 ’--- ゲーム @GAMELOOP ループ --- 上下左右の移動サブルーチンからも、背景表示サブルーチンを呼び出すようにします。 121 ’イドウ 122 @UE ウエ 123 124 125 126 127 128 129 130 IF PY<=1 THEN RETURN IF M(PX,PY-1)==0 THEN RETURN PY=PY-1 背景を表示するサブルーチンを呼ぶ GOSUB @BG SPCHR 0,76 RETURN 131 132 133 134 135 136 137 138 139 140 @SHITA IF PY>=21 THEN RETURN IF M(PX,PY+1)==0 THEN RETURN PY=PY+1 背景を表示するサブルーチンを呼ぶ GOSUB @BG SPCHR 0,68 RETURN 141 142 143 144 145 146 IF PX<=1 THEN RETURN IF M(PX-1,PY)==0 THEN RETURN PX=PX-1 背景を表示するサブルーチンを呼ぶ GOSUB @BG SPCHR 0,72 RETURN ’イドウ シタ ’イドウ ヒダリ @HIDARI プチコンでダンジョンゲームを作る(3)/7 ICT ジュニア(上田パソコンクラブ) 147 148 ’イドウ 149 150 151 152 153 154 155 ミギ @MIGI IF PX>=29 THEN RETURN IF M(PX+1,PY)==0 THEN RETURN PX=PX+1 背景を表示するサブルーチンを呼ぶ GOSUB @BG SPCHR 0,64 RETURN そして、プログラムの最後に、背景表示サブルーチンを追加します。 試しに、1 マス分だけ迷路のかべを表示してみます。 156 157 ’--- 158 159 160 161 162 163 164 165 ハイケイ ヒョウジ --- @BG BGCLR 背景面をクリア BX=OX/8-2 キャラの1つ左上の BG 座標(BX,BY)を計算 BY=OY/8-2 BGPUT 1,BX ,BY ,91,2,0,0 BGPUT 1,BX+1,BY ,91,2,0,0 BGPUT 1,BX ,BY+1,91,2,0,0 166 BGPUT 1,BX+1,BY+1,91,2,0,0 167 RETURN BG キャラクターを 4 個表示 プログラムを実行してしましょう。 キャラクターの左上に、迷路のかべが 1 個 表示されます。 かべの背景は、BG キャラクターの91番を 使っています。 他の番号の BG キャラクターに変えて、 試してみましょう。 プチコンでダンジョンゲームを作る(3)/8 ICT ジュニア(上田パソコンクラブ) 背景に関する新しい命令が出てきました。 BGCLR BGPUT BGCLR(ビージークリア)命令 背景画面をクリアします。 1 BG 面 番号 BG 面番号 x 座標 y 座標 BG キャラ番号 パレット番号 横反転 縦反転 ,BX x 座標 ,BY y 座標 ,91 BG キャラ 番号 ,2 パレット 番号 ,0 横反転 ,0 縦反転 BG キャラを表示したい BG 面。0=手前、1=奥。 BG キャラのx座標(0~63)。 BG キャラの y 座標(0~63)。 表示したい BG キャラ番号(0~1023)。 0~15。 0=反転しない、1=横反転。 0=反転しない、1=縦反転。 プチコンの BG 画面の座標は、以下のようになっています。 BG キャラクター1 個は 8×8 ドットの大きさです。 (スプライトは 16×16 ドットなので、その 4 分の 1 の大きさです) BG 画面全体は、BG キャラクターで数えて 64×64 個分の大きさがあります。そのうちの一 部分の横 32×縦 24 個分(256×192 ドット)が画面に表示されます。 プチコンでダンジョンゲームを作る(3)/9 ICT ジュニア(上田パソコンクラブ) BG キャラクターの座標(BX,BY)は、以下のように計算しています。 自分のキャラクター(スプライト)のグラフィック座標 (OX,OY)=(120,88)を 8 で割ると、BG キャラクター 162 BX=OX/8-2 163 BY=OY/8-2 で数えた座標になります。 さらに 2 を引くと、左上のブロックの座標になります。 BG キャラクターは 8×8 ドッ トで、スプライトの 4 分の1の 大きさなので、スプライトと同 じ大きさで表示するには、 (BX,BY) (BX+1,BY) (BX,BY+1) (BX+1,BY+1) の座標で 4 個並べます。 「-2」の部分の数を変えると、 表示位置が変わります。試し てみましょう。 プチコンでダンジョンゲームを作る(3)/10 ICT ジュニア(上田パソコンクラブ) ●迷路と対応して背景を表示する 今は勝手にかべを表示しましたが、実際はマップで周囲の迷路を1マスずつチェックして、 上画面にかべか道を表示しないといけません。 マップを1マスずつチェックして、上画面に「かべ」か「道」を表示する 上画面 マップ マップの状態は、マップ配列変数 M(x,y)に入っていますから、その値をチェックして、上画 面にかべを表示しましょう。 157 158 159 160 161 162 163 164 165 166 ’--- @BG ハイケイ ヒョウジ --- BGCLR 自分の座標-4~+4の範囲で FOR MDX=-4 TO 4 ループ FOR MDY=-4 TO 4 MX=PX+MDX 自分の座標(PX,PY)→マップ座標(MX,MY)を計算 MY=PY+MDY IF MX<0 OR MX>30 THEN @BGNEXT IF MY<0 OR MY>22 THEN @BGNEXT 167 IF M(MX,MY)==1 168 169 BX=OX/8+MDX*2 170 BY=OY/8+MDY*2 THEN @BGNEXT マップが道だ ったら飛ばす 迷路の外に はみ出した 場合は飛ばす BG の座標を計算 プチコンでダンジョンゲームを作る(3)/11 ICT ジュニア(上田パソコンクラブ) 171 BGPUT 1,BX 172 173 174 175 176 177 178 179 1,BX+1,BY ,91,2,0,0 1,BX ,BY+1,91,2,0,0 1,BX+1,BY+1,91,2,0,0 BGPUT BGPUT BGPUT ,BY ,91,2,0,0 かべを 表示 かべを表示しない時はここへジャンプ @BGNEXT NEXT MDY MDY、MDX を変化させてループ NEXT MDX RETURN プログラムを実行してみましょう。 上画面に迷路の背景が表示されます。 このままだと、出口のドアが表示されません。(ただのかべになってしまいます) 出口の位置は(29,22)で決まっているので、その座標の時はドアを表示するようにします。 ドアの表示はサブルーチンにします。 171 172 173 174 BGPUT BGPUT BGPUT BGPUT 1,BX ,BY ,91,2,0,0 1,BX+1,BY ,91,2,0,0 1,BX ,BY+1,91,2,0,0 1,BX+1,BY+1,91,2,0,0 175 IF MX==29 AND MY==22 THEN GOSUB @BGDOOR マップ座標が出口の時は 176 ドア表示のサブルーチンを呼ぶ 177 @BGNEXT 178 NEXT MDY 179 NEXT MDX 180 RETURN 181 182 ’ドア ドアの背景を表示 183 @BGDOOR 184 BGPUT 1,BX ,BY ,719,2,0,0 185 186 187 188 BGPUT 1,BX+1,BY ,720,2,0,0 BGPUT 1,BX ,BY+1,751,2,0,0 BGPUT 1,BX+1,BY+1,752,2,0,0 RETURN プチコンでダンジョンゲームを作る(3)/12 ICT ジュニア(上田パソコンクラブ) プログラムを実行してみましょう。 出口まで行くと、ドアが表示されます。 これで、基本的な画面表示はできました。 「DANJON7」の名前で、プログラムを保存(SAVE)してください。 プチコンでダンジョンゲームを作る(3)/13 ICT ジュニア(上田パソコンクラブ) ●ゴールの設定 ここまでで、基本的な画面表示やキー操作はできました。 あとは、おもしろいゲームになるように、いろいろルール設定や演出をしていきましょう。 今のままだと、出口へたどりついても何も起きないので、「ゴール」と表示してゲームが終了 するようにしましょう。 先頭のプログラムタイトルを 「DANJON8」にします。 1 ’*** 2 DANJON8 *** ゴールの条件は、出口のドアの1つ上、 座標で(29,21)へ来た時にします。 (ドアの場所へは移動できないので) ゲームループの所で、プレイヤーの座標(PX,PY)をチェックして、(29,21)になったら「ゴール」 のプログラムへジャンプします。 107 108 109 110 111 112 113 114 115 116 ’--- ゲーム @GAMELOOP ループ --- B=BUTTON() PNLSTR PX,PY,” ” IF B==1 THEN GOSUB IF B==2 THEN GOSUB IF B==4 THEN GOSUB IF B==8 THEN GOSUB PNLSTR PX,PY,”г” @UE @SHITA @HIDARI @MIGI 117 出口へ着いたら、ゴールのプログラムへジャンプ 118 WAIT 1 119 IF PX==29 AND PY==21 THEN @GOAL 120 GOTO @GAMELOOP プチコンでダンジョンゲームを作る(3)/14 ICT ジュニア(上田パソコンクラブ) プログラムの最後に、「ゴール」を表示するプログラムを追加します。 190 191 192 193 194 195 196 197 ’--- ゴール --- @GOAL 画面をクリア ACLS 画面中央に「ゴール」表示 LOCATE 9,11 PRINT ”★★★ ゴール ★★★” END プログラムを終了 プログラムを実行してみましょう。 ゴールに着くと、「ゴール」と表示されて ゲームが終わります。 プチコンでダンジョンゲームを作る(3)/15 ICT ジュニア(上田パソコンクラブ) ●BGM を鳴らす ゴールした時の演出として、音楽(BGM)を鳴らしてみましょう。 BGM を鳴らすには、BGMPLAY(ビージーエムプレイ)命令を使います。 190 191 192 193 194 195 ’--- ゴール --- @GOAL ACLS LOCATE 9,11 196 PRINT ”★★★ 197 BGMPLAY 5 ゴール ★★★” 5 番の BGM を鳴らす 198 END プログラムを実行してみましょう。 ゴールすると、ファンファーレが鳴ります。 同じように、ゲームプレイ中も BGM が鳴るようにしてみましょう。 迷路を作り終わって、ゲームループに入る前に、プレイ BGM が鳴るようにします。 103 104 105 106 107 108 109 110 SPSET 0,64,2,0,0,2 SPOFS 0,OX,OY SPANIM 0,4,10 BGMPLAY 1 ’--- ゲーム @GAMELOOP 1 番の BGM を鳴らす ループ --- プログラムを実行してみましょう。 ゲーム中も BGM が鳴ります。 プチコンでダンジョンゲームを作る(3)/16 ICT ジュニア(上田パソコンクラブ) BGMPLAY 命令の文法は、以下のとおりです。 BGMPLAY 1 曲番号 番号 説明 0 軽快な曲 曲番号は 0~29。 1 湿った暗い感じの曲 2 緊張感高まる曲 曲は 30 曲あります。一覧リストはこちら→。 曲番号を変えると、違う曲になります。 いろいろ試してみてください。 3 激しくアップテンポな曲 4 スタートジングル 5 クリアジングル 6 ゲームオーバー 「DANJON8」の名前で、プログラムを保存(SAVE)し てください。 7 メニューセレクト 8 結果発表 9 スタッフロール 10 スタッフロール その 2 11 時代劇ゲーム風 12 軽快なマーチバンド風 13 激しいロック調 14 軽快な曲 その 2 15 WOND 16 考え中 17 WOND2 18 未来系 19 BAL 20 BAL_2 21 スパイ系 22 SCI 23 シューティング 24 パッド 25 SEN 26 ピュア 27 ROA 28 CUR 29 FIG プチコンでダンジョンゲームを作る(3)/17
© Copyright 2025 ExpyDoc