...

テキスト(PDF)

by user

on
Category: Documents
6

views

Report

Comments

Transcript

テキスト(PDF)
ICT ジュニア(上田パソコンクラブ)
プチコンでレースゲームを作る(2)
プチコンで作るレースゲームに、背景(コース)を追加してみましょう。
●背景を表示する
これまではキャラクターだけを画面に表示してい
ましたが、背景(コース)を表示してみましょう。
外側の芝生と、中央のコース(道路)があります。
★BG 画面に芝生をしきつめる
プチコンの画面には、背景用の「BG 画面」が 2 枚あります。
プチコンでレースゲームを作る(2)/1
ICT ジュニア(上田パソコンクラブ)
まず、プログラムのタイトルを「RACE3」に
1 ’***
RACE3
変えましょう。
2
3 ’---
サイショ
***
---
「サイショ」の初期設定の後に、コースを表示するプログラムを追加します。
まず、背景に芝生を表示してみましょう。
10 SPOFS 0,X,Y
11
12 ’--- コース ---
13
上画面の BG 画面を操作する指定
14 BGPAGE 0
15 BGPUT
16
17 ’---
1,10,10,33,8,0,0
画面の座標(10,10)に芝生の BG キャラを表示
イドウ ---
BG 画面を使うには、まず BGPAGE(ビージーページ)命令で、DS の上画面/下画面のどち
らで BG 面を操作するかを設定します。
BGPAGE 0
上画面の BG 面を操作
BGPAGE 1
下画面の BG 面を操作
今回は上画面で使うので、BGPAGE 0 を指定します。
次に、BGPUT(ビージープット)命令で、BG キャラクターを画面に表示します。
BGPUT
1
表示する
BG 画面
0=手前
1=奥
,10
x 座標
,10
,33
,8
y 座標 BG キ ャ カラー
ラ番号
パレット
,0
横反転
0=なし
1=反転
,0
縦反転
0=なし
1=反転
プログラムを実行してみましょう。
芝生の BG キャラが1個表示されます。
BGPUT 命令の x 座標、y 座標をいろいろ変
えて、違う位置に芝生を表示させてみましょ
う。
プチコンでレースゲームを作る(2)/2
ICT ジュニア(上田パソコンクラブ)
BGキャラクターが画面に
表示される範囲は、x=0~
31、y=0~23 です。
今回のレースゲームの場合、背景全体に芝生をしきつめます。
BGPUT 命令で1個1個芝生を表示させると大変なので、広い範囲に BG キャラをしきつめる
BGFILL(ビージーフィル)命令を使います。
BGPUT 命令の行を消して、BGFILL 命令に変えます。
10 SPOFS 0,X,Y
11
12 ’--- コース ---
13
画面全体に芝生の BG キャラをしきつめる
14 BGPAGE 0
15 BGFILL 1,0,0,31,23,33,8,0,0
16
17 ’--- イドウ ---
プログラムを実行してみましょう。
芝生が画面全体にしきつめられます。
プチコンでレースゲームを作る(2)/3
ICT ジュニア(上田パソコンクラブ)
BGFILL 命令の文法は以下のとおりです。
BGFILL
1
表示する
BG 画面
,0
,0
,31
,23
,33
左上
左上
右下
右下
BG
x 座標 y 座標 x 座標 y 座標 キャラ
番号
,8
カラー
パレット
,0
,0
横
縦
反転 反転
左上座標・右下座標を変
えると、芝生をしきつめる
範囲が変わります。
数字をいろいろ変えて試
してみましょう。
★中央の道路の表示
芝生と同じように、BGFILL 命令で、中央の道路を表示します。
道路の BG キャラは 13 番(灰色の四角)を使います。
あとで道路の位置を変えるので、道路の中央の位置を表す変数 COX を使って、BGFILL 命
令で道路を表示します。
10 SPOFS 0,X,Y
11
12 ’--- コース ---
13
14 BGPAGE 0
15
16
17
18
19
BGFILL
COX=16
BGFILL
’---
1,0,0,31,23,33,8,0,0
道路の中央のx座標を 16 に
1,COXー8,0,COX+7,23,13,0,0,0
イドウ
---
道路の BG キャラをしきつめる
プチコンでレースゲームを作る(2)/4
ICT ジュニア(上田パソコンクラブ)
プログラムを実行してみましょう。
中央に真っ直ぐ道路が表示されます。
今は道路の中央のx座標 COX を 16(画面の中心)に、道路の幅を 16 に(中央から左右に 8
ずつ)にしています。
これらの数字を変えると、道路の位置や幅が変わります。試してみてください。
プログラムを「RACE3」のファイル名で、SAVE してください。
プチコンでレースゲームを作る(2)/5
ICT ジュニア(上田パソコンクラブ)
●コースをスクロールさせる
背景のコースを上から下へスクロールさせて、自分が走っているように見せましょう。
プチコンの BG 画面は、実は表示画面よりもかなり広くなっています。
BG 画面全体は、縦・横とも BG キャラクター64 個分の大きさがあります。
実際に画面に表示できるのは、そのうちの横 32 個・縦 24 個分です。
BG 画面全体のどこを画面に表示するかは、表示する原点(左上)を BGOFS(ビージーオフ
セット)命令で指定します。
今回のレースゲームでは、自
分のキャラクターが上へ走って
いきます。
BGの表示領域を上へ変えて
いけば、背景のコースが下へ
流れていくように見えます。
プチコンでレースゲームを作る(2)/6
ICT ジュニア(上田パソコンクラブ)
プログラムの最初で、BG表示領域の左上のy座標を表す変数 BGY を設定します。
1 ’***
RACE4
***
タイトルを「RACE4」に変える
(中略)
10 SPOFS 0,X,Y
11 BGY=0
12
13 ’--- コース ---
最初に BGY を 0 にする
自分のキャラクターを移動する所で、BGの表示領域を変えてみましょう。
コースをスクロールさせる部分をサブルーチンにして、呼び出すようにします。
20
21
22
23
24
25
26
27
’--- イドウ
@MOVE
---
28
29
30
31
32
33
34
35
36
37
38
SPOFS
VSYNC
0,X,Y
1
GOSUB
@CSCROLL
’ジュウジ キー
B=BUTTON()
IF B==4 AND
IF B==8 AND
GOTO
X>0 THEN X=X-2
X<239 THEN X=X+2
サブルーチン CSCROLL を
呼び出す
@MOVE
’--- コース
@CSCROLL
スクロール
BGY を 8 減らす
BGY=BGYー8
39 IF BGY<0 THEN
40 BGOFS 1,0,BGY
41 RETURN
---
BGY がマイナスになったら
512 を足してもどす
BGY=BGY+512
BG の表示領域を変更
移動のプログラムへもどる
プチコンでレースゲームを作る(2)/7
ICT ジュニア(上田パソコンクラブ)
プログラムを実行してみましょう。
背景のコースが上から下へ流れます。
今は画面の大きさ分しかBGキャラを並べ
ていないので、それ以外の背景は真っ黒
です。
BGOFS 命令の文法は以下のとおりです。
BGOFS
1
操作する
BG 画面
,0
左上
x 座標
,BGY
左上
y 座標
このプログラムでは変数 BGY を使って、BG 表示領域を上へ変更しています。
先に書いたように、BG 画面全体は BG キャラで縦横 64 個分あります。
BG キャラはドット数で 8×8 ドットのサイズがあるので、ドット数で数えると BG 画面全体は
512×512 ドットあります。
このプログラムでは、変数 BGY を 8 ずつ減らして、コースを上へ 8 ドットずつ動かしています。
BGY がマイナスの値になると、BGOFS 命令でエラーになってしまいます。なので、IF 命令で
条件判断して、BGY がマイナスになったら 512 を足してもどしています。
プチコンでレースゲームを作る(2)/8
ICT ジュニア(上田パソコンクラブ)
★サブルーチンの呼び出し
今回、コースをスクロールさせるプログラムを、メインのプログラムとは別の「サブルーチン」に
しています。
プログラムの中で何度も同じ処理をする場合、その部分をサブルーチンにして、使いたい時
に呼び出すようにすると、同じプログラムを何度も書かなくてすみます。
サブルーチンを呼び出すのは「GOSUB」(ゴーサブ)命令を使います。
GOSUB 命令の文法は以下のとおりです。
GOSUB
@CSCROLL
ジャンプ先ラベル
GOTO 命令と同じように、ジャンプする先は「ラベル」で指定します。
ラベルは、「@」(アットマーク)に続けてアルファベットや数字で指定します。
サブルーチンからメインプログラムへ戻るには、RETURN(リターン)命令を使います。
プチコンでレースゲームを作る(2)/9
ICT ジュニア(上田パソコンクラブ)
●コースを作る
今は 1 画面分しかコースが無く、他は真っ黒になっています。
スクロールしながらコースの続きを作ってみましょう。
35
36
37
38
39
40
’--- コース
@CSCROLL
スクロール
BGY=BGYー8
IF BGY<0 THEN
BGOFS 1,0,BGY
41 BGFILL
42 BGFILL
3,0,0,0
43 RETURN
---
BGY=BGY+512
全体に草をしきつめる
1,0,BGY/8,31,BGY/8,33,8,0,0
1,COX-8,BGY/8,COX+7,BGY/8,1
中央に道路をしきつめる
プログラムを実行してみましょう。
コースがずっとつながります。
ただ、上から下へスクロールしているはずなの
ですが、真っ直ぐ続いているので見た目はわ
かりません。
プチコンでレースゲームを作る(2)/10
ICT ジュニア(上田パソコンクラブ)
★コースをランダムに曲げる
コースが真っ直ぐなままではおもしろくありません。コースを左右に曲げてみましょう。
コースの位置を決めるのに、乱数(らんすう、毎回違うランダムな数字)を使います。
乱数を使うには、「RND」(ランダム)関数を使います。
コースをスクロールするプログラムで、コースの中央の位置(変数 COX)の値をランダムに変
えてみましょう。
35 ’--- コース
36 @CSCROLL
37
スクロール
---
38 BGY=BGYー8
39 IF BGY<0 THEN BGY=BGY+512
40 BGOFS 1,0,BGY
41 BGFILL 1,0,BGY/8,31,BGY/8,33,8,0,0
42 COX=COX+RND(3)-1
43 BGFILL 1,COX-8,BGY/8,COX+7,BGY/8,1
3,0,0,0
COX の値を乱数で 1 減らすか、変
44 RETURN
えないか、1増やすかする
プログラムを実行してみましょう。
コースが左右に曲がります。
RND 関数の文法は以下のとおりです。
A=
RND(
3
)
値を受け取る
最大値
変数
このプログラム例では、「0,1,2」のどれかの値が変数 A に入ります。
「RND(3)」で「0,1,2」のどれかの値が出て、「RND(3)-1」で「-1,0,1」のどれかの値になります。
「COX=COX+RND(3)+1」で、COX の値が1減るか、変わらないか、1増えるかになります。
これで、コースの位置が左右に変化します。
プチコンでレースゲームを作る(2)/11
ICT ジュニア(上田パソコンクラブ)
今のプログラムだと、COX が減り続けたり増え続けたりすると、コースが画面をはみだしてし
まいます。
IF命令で COX の範囲を制限します。
35
36
37
38
39
40
41
42
’--- コース
@CSCROLL
スクロール
---
BGY=BGYー8
IF BGY<0 THEN BGY=BGY+512
BGOFS 1,0,BGY
BGFILL 1,0,BGY/8,31,BGY/8,33,8,0,0
COX=COX+RND(3)-1
COX が 8 より小さければ8に、
43 IF COX<8 THEN COX=8
24 より大きければ 24 に制限
44 IF COX>24 THEN COX=24
45 BGFILL 1,COX-8,BGY/8,COX+7,BGY/8,1
3,0,0,0
46 RETURN
これで、コースが画面からはみ出さないようになります。
プチコンでレースゲームを作る(2)/12
ICT ジュニア(上田パソコンクラブ)
★スクロール速度の調整
今のプログラムだと、コースのスクロール速度が速すぎるので、速度を落としてみます。
移動のプログラムを改造します。
20
21
22
23
24
25
26
’--- イドウ
@MOVE
FOR
TO
S を 1~2 でくり返し
2
’ジュウジ キー
B=BUTTON()
27 IF
28 IF
29
30
31
32
33
34
35
36
S=1
---
B==4
B==8
SPOFS
VSYNC
NEXT
GOSUB
37 GOTO
AND
AND
X>0 THEN X=X-2
X<239 THEN X=X+2
0,X,Y
1
FOR へ戻ってくり返し
S
@CSCROLL
@MOVE
FOR~NEXT を使って、自分のキャラクターを移動するプログラムを 2 回くり返しています。
その後でスクロールのサブルーチン@CSCROLL を呼び出すので、自分のキャラと比べてス
クロールが半分の速度になります。
プチコンでレースゲームを作る(2)/13
ICT ジュニア(上田パソコンクラブ)
●得点を付ける
背景のスクロールに関連して、得点
を付けてみましょう。
コースが先へ進むと 1 点ずつ得点
が入るようにします。
最初の設定とコース表示に、点数のプログラムを追加します。
1 ’***
2
3
4
5
6
7
8
9
’---
RACE4
サイショ
***
---
ACLS
X=120
Y=175
SPSET 0,76,2,0,0,2
SPANIM 0,4,5
10
11
12
13
14
15
16
17
18
19
20
SPOFS
BGY=0
SC=0
21
22
23
24
25
COLOR 0
LOCATE 0,0
PRINT ”SCORE ”;SC
’---
0,X,Y
点数の変数 SC を0にする
コース
BGPAGE
BGFILL
COX=16
BGFILL
’---
---
0
1,0,0,31,23,33,8,0,0
1,COXー8,0,COX+7,23,13,0,0,0
イドウ
画面左上に点数を表示
---
プチコンでレースゲームを作る(2)/14
ICT ジュニア(上田パソコンクラブ)
新しい命令が2つ出てきました。
COLOR(カラー)命令は、画面に表示する文字の色を変える命令です。
COLOR
0
文字色
(0~15)
,0
背景色(省略可能)
(0~15)
色は 0~15 が使えます。ここでは文字色を「0」(白)にしています。いろいろ数字を変えて試
してみてください。
LOCATE(ローケート)命令は、画面上のカーソルの位置を変える命令です。
LOCATE
0
x 座標
(0~31)
,0
y 座標
(0~23)
この LOCATE 命令の後で、PRINT 命令で文字を表示すると、指定した位置に文字が表示さ
れます。
プチコンでレースゲームを作る(2)/15
ICT ジュニア(上田パソコンクラブ)
そして、コースをスクロールさせるサブルーチンで、1 回スクロールするごとに点数が 1 点ず
つ増えるようにします。
44
45
46
47
48
49
50
51
’--- コース
@CSCROLL
スクロール
---
BGY=BGYー8
IF BGY<0 THEN BGY=BGY+512
BGOFS 1,0,BGY
BGFILL 1,0,BGY/8,31,BGY/8,33,8,0,0
COX=COX+RND(3)-1
52 IF COX<8 THEN COX=8
53 IF COX>24 THEN COX=24
54 BGFILL 1,COX-8,BGY/8,COX+7,BGY/8,1
3,0,0,0
55
点数 SC を 1 増やす
56 SC=SC+1
57 COLOR 0
58 LOCATE 0,0
59 PRINT ”SCORE ”;SC
60
61 RETURN
画面左上に点数を表示
「SC=SC+1」は「SC と SC+1 が等しい」という意味では無く、「SC に 1 を足して、SC に入れる」
という意味です。これで SC の値が 1 増えます。
増やした SC の値を、画面左上に表示することで、点数が 1 増えます。
プログラムを実行して、点数が増え
ていくのを確認しましょう。
「RACE4」のファイル名で、プログラ
ムを SAVE しましょう。
プチコンでレースゲームを作る(2)/16
Fly UP