内容へ移動
ユーザ用ツール
検索
トレース:
•
guide18
サイドバー
ENGLISH
ニュース
更新データ
不具合情報
ダウンロード
USBキーボード・マウス情報
初心者ガイド
豆知識コーナー
リファレンス
Reference(English)
プチコン大喜利ワールドグランプリ
第五回プチコン大喜利 結果発表
guide18
めざせ16連射(れんしゃ)
さあ、
弾
たま
の
連射
れんしゃ
だね!
今回
こんかい
は
盛
も
り
沢山
だくさん
だから、がんばってね。
フン、
ロンリーエンジン
のチカラもゲットしたオレサマの
手
て
にかかればちょろいもんだぜ!
論理
ろんり
演算
えんざん
ね。
今回
こんかい
は
改造
かいぞう
結果
けっか
の
仕様
しよう
とプログラムを
解説
かいせつ
する
事
こと
で
進
すす
めるよ!
改造
かいぞう
は、2
段階
だんかい
でやろう。まずは
今
いま
のプログラムをもっとシンプルにするよ。ちょっと
長
なが
くなってきたし、もともとまわりくどい
書
か
き
方
かた
してるからね。
わざわざまわりくどい
書
か
きかたしてたっていうのか。なんでそんなめんどくせえことするんだよ。
SmileBASIC
スマイルベーシック
の
便利
べんり
な
命令
めいれい
を
使
つか
うともっとカンタンに
書
か
けたんだけど、それだと
中
なか
でなにをやっているか
良
よ
くわからないだろう?
最初
さいしょ
に
中
なか
でなにをやっているかを
知
し
ってもらいたかったのさ!
'---てき----------------------------
'てきのかず
ECOUNT=10
'てきのざひょう
EX=200
EY=60
'てきのそくど
DIM EVX[ECOUNT]
DIM EVY[ECOUNT]
'てきのいどうじかん
DIM ETIME[ECOUNT]
'てきスプライトIDのせんとう
ETOP=100
'てきのえのばんごう
EPIC=1203
'てきのスプライトをつくる
FOR I=0 TO ECOUNT-1
EID=ETOP+I
SPSET EID,EPIC
SPOFS EID,EX,EY
SPCOL EID:'てきにあたりはんていをつける
NEXT
'---プレイヤー-------------------------
'プレイヤーのざひょう
PX=200
PY=200
'プレイヤーのスプライトID
PID=10
'プレイヤーのえのばんごう
PPIC=3323
'プレイヤーのスプライトをつくる
SPSET PID,PPIC
SPOFS PID,PX,PY
'---たま--ー-------------------------
'たまのスプライトID
TID=20
'たまのえのばんごう
TPIC=3386
'---メインループ-----------------------
LOOP
'---プレイヤーしょり----------------------
'さゆうにうごかす
IF BUTTON(1, #B_LLEFT) THEN PX=PX-1
IF BUTTON(1, #B_LRIGHT) THEN PX=PX+1
IF PX<0 THEN PX=0
IF PX>400-16 THEN PX=400-16
SPOFS PID,PX,PY
'たまがないときにボタンがおされたらたまはっしゃ!
IF !SPUSED(TID) && BUTTON(1,#B_RRIGHT) THEN
'たまのざひょうはプレイヤーとおなじ!
TX=PX:TY=PY
SPSET TID,TPIC
SPOFS TID,TX,TY
SPCOL TID:'たまもあたるように!
BEEP 111:'はっしゃおんもだすぜ!
ENDIF
'たまをうごかす
IF SPUSED(TID) THEN
'たまのざひょうをとりだす
SPOFS TID OUT TX,TY
'うえにうごかす
TY=TY-5
SPOFS TID,TX,TY
'たまががめんからとびでたらたまをけす
IF TY<0 THEN SPCLR TID
ENDIF
'---てきしょり-------------------------
FOR I=0 TO ECOUNT-1
EID=ETOP+I
IF !SPUSED(EID) THEN CONTINUE:'もうきえてたらスキップ
IF ETIME[I]==0 THEN
'うごくほうこうをきめる
EVX[I]=RND(3)-1
EVY[I]=RND(3)-1
ETIME[I]=20
ENDIF
'てきをうごかす
ETIME[I]=ETIME[I]-1
SPOFS EID OUT EX,EY
EX=EX+EVX[I]
EY=EY+EVY[I]
SPOFS EID,EX,EY
'たまにあたった?
IF SPHITSP(TID,EID) THEN
'あたった!
BEEP 11:'ばくはつ!
SPCLR EID:'てきをけす
SPCLR TID:'たまもけす
ENDIF
NEXT
VSYNC
ENDLOOP
そんなに
変
か
わってねえ
気
き
がするぞ?
ぱっと
見
み
はそうだけど、1
行
ぎょう
ずつ
見
み
ていってごらん。
変数
へんすう
がいくつか
消
き
えてるぞ。
EX
,
EY
,
EID
とか、
TAMA
とか。
見
み
たことのない
書
か
き
方
かた
もあるね。48
行
ぎょう
で
BUTTON
ボタン
関数
かんすう
の
後
うし
ろの
==1
が
消
き
えてたり、65
行
ぎょう
の
SPOFS
エスピーオフス
で
OUT
アウト
がついてたり。
54
行
ぎょう
の
SPUSED
ってのも
初耳
はつみみ
だな。なんか
!
がついてるしよ。ふつう
!
がつくのは
後
うし
ろなのに
前
まえ
についてるぞ!
76
行
ぎょう
の
CONTINUE
コンティニュー
もはじめてだね
違
ちが
いはだいたいそんなもんかな、シンプル
化
か
はもう2
段階
だんかい
できるけど、これが
第
だい
1
弾
だん
になるよ。
今回
こんかい
のメインは、
SPOFS
エスピーオフス
の
新
あたら
しい
使
つか
い
方
かた
だよ。
OUT
アウト
ってのがついてるところだね。
今
いま
までは
SPOFS
エスピーオフス
はスプライトの
座標
ざひょう
を
設定
せってい
する
時
とき
に
使
つか
っていたよね?
OUT
アウト
をつけると、
逆
ぎゃく
に
今
いま
設定
せってい
されているスプライトの
座標
ざひょう
を
取得
しゅとく
できる
んだよ。
ほほう、
実
じつ
はスプライトは
自分
じぶん
の
座標
ざひょう
をおぼえていて、
取
と
り
出
だ
すこともできるってワケだな、スプライトがおぼえているモノをわざわざ
変数
へんすう
でおぼえとく
必要
ひつよう
はないってことだ!
そういうこと!それで
敵
てき
と
弾
たま
の
座標
ざひょう
を
覚
おぼ
えておく
変数
へんすう
はいらなくなったから
消
き
えたんだ。プレイヤーの
座標
ざひょう
を
覚
おぼ
えている
PX
と
PY
は、
消
け
すとかえってややこしくなっちゃうから
残
のこ
しているよ。
SPOFS
エスピーオフス
スプライトID
OUT
アウト
X,Y
で、
X
と
Y
にスプライトの
座標
ざひょう
が
入
はい
るんだ。
OUT
アウト
はこれから
良
よ
く
使
つか
うけど、
この
変数
へんすう
に
値
あたい
を
返
かえ
して
っていう
意味
いみ
で
使
つか
うよ。
値
あたい
を
返
かえ
してっていうと、
関数
かんすう
?
関数
かんすう
に
似
に
ているけど、
OUT
アウト
を
使
つか
うと
2
個
こ
以上
いじょう
の
値
あたい
も
一度
いちど
に
返
かえ
せる
んだ。
座標
ざひょう
はふたつの
値
あたい
がセットで
必要
ひつよう
だろ?
次
つぎ
に
EID
が
配列
はいれつ
じゃなくなった。これは、スプライトのIDは
決
き
まっているから、わざわざ
変数
へんすう
で
覚
おぼ
えておく
必要
ひつよう
はないからね。その
代
か
わりに、
敵
てき
スプライトIDの
先頭
せんとう
だけ
覚
おぼ
えておいて、75
行目
ぎょうめ
、
敵処理
てきしょり
の
FOR
フォー
ループの
最初
さいしょ
で
敵
てき
スプライトIDを
作
つく
っているよ。
EID=EIDTOP+I
ってやつだね。
次
つぎ
に
BUTTON
ボタン
関数
かんすう
の
後
うし
ろの
==1
が
消
き
えた
理由
りゆう
。
前回
ぜんかい
の
論理演算
ろんりえんざん
の
説明
せつめい
を
覚
おぼ
えてるかな?
正解
せいかい
ならランプがつく
ってやつか?
ランプがつくってのは
数字
すうじ
だと
何
なん
になるんだったっけ?
1だよな?
そう!そして、
BUTTON
ボタン
関数
かんすう
は、
今
いま
まで
==1
をつけて
判定
はんてい
してたとおり、
押
お
されたら1、
押
お
されてなかったら0を
返
かえ
す
関数
かんすう
なんだ。
ははあ、1を返すんだから、
==1
をつけてチェックするまでもないってことか!
そういうこと!これが2とか3も
返
かえ
す
関数
かんすう
なら、
==2
とか
==3と
かで
確認
かくにん
しなきゃいけないけど、1か0しか
返
かえ
さないからね。
押
お
されてたら
BUTTON
ボタン
関数
かんすう
自体
じたい
がランプをつける
ってことだな。
54
行目
ぎょうめ
の
SPUSED
エスピーユーズド
、これは
見
み
ての
通
とお
り
関数
かんすう
で、
指定
してい
番号
ばんごう
のスプライトが
存在
そんざい
しているかどうかを
返
かえ
す
関数
かんすう
だよ。スプライトがあれば1を
返
かえ
すんだ。
その
前
まえ
のついてる
!
はなんだよ
前回
ぜんかい
の
論理
ろんり
演算
えんざん
で
NOT
ノット
ってのを
覚
おぼ
えてるかな
正解
せいかい
不正解
ふせいかい
をひっくり
返
かえ
す
ってヤツだな。そうか、
NOT
ノット
は!って書く
といってたな、これがそれか!
そう!
普通
ふつう
の
文章
ぶんしょう
につけて、
驚
おどろ
く
意味
いみ
で
使
つか
う
時
とき
は
文章
ぶんしょう
の
最後
さいご
に!をつけるけど、プログラムで
正解
せいかい
不正解
ふせいかい
をひっくり
返
かえ
す
場合
ばあい
、
!
はひっくり
返
かえ
したい
式
しき
の
最初
さいしょ
につけて、
後
うし
ろの
式
しき
の
正解
せいかい
不正解
ふせいかい
をひっくり
返
かえ
せ
というふうに
使
つか
うんだ。
!
SPUSED
エスピーユーズド
だとどういう
意味
いみ
になると
思
おも
う?
スプライトがある、の
反対
はんたい
だから、スプライトがない、っていう
意味
いみ
か!
そう!
今
いま
までは
TAMA==0
って
書
か
いて、
弾
たま
があるかどうかを
TAMA
変数
へんすう
で
見
み
てたよね?でも
弾
たま
があるかどうかは
弾
たま
のスプライトがあるかどうかで
判断
はんだん
できる。
TAMA==0
っていうのは、
!
SPUSED
エスピーユーズド
(TID)
で
代用
だいよう
できるのさ!
次
つぎ
に76
行目
ぎょうめ
の
CONTINUE
コンティニュー
。これはループの
中
なか
だけで
使
つか
えるんだ。
BREAK
ブレーク
って
覚
おぼ
えてるかな?
ループを
抜
ぬ
ける
命令
めいれい
だったよね?
CONTINUE
コンティニュー
は
BREAK
ブレーク
の
親戚
しんせき
みたいな
命令
めいれい
で、ループを
抜
ぬ
けるんじゃなくて、
CONTINUE
コンティニュー
以降
いこう
の
処理
しょり
をスキップしてループのいちばん
最後
さいご
にジャンプする
命令
めいれい
だよ。
この
CONTINUE
コンティニュー
は
敵
てき
処理
しょり
のループの
先頭
せんとう
に
書
か
いてあるね、
敵
てき
のスプライトがなかったら
次
つぎ
の
敵
てき
までスキップ
という
事
こと
だと
言
い
えばわかるかな?
ここからうしろは
敵
てき
の
処理
しょり
がいろいろ
書
か
いてるけど、スプライトがないならそいつらは
必要
ひつよう
ないから
次
つぎ
に
行
い
くぜってことか。
そういうこと!ここでスキップしておかないと、
存在
そんざい
しないスプライトを
動
うご
かそうとしてエラーになっちゃうからね。
さて、
連射
れんしゃ
改造
かいぞう
の
準備
じゅんび
は
整
ととの
ったけど、
結構
けっこう
な
改造
かいぞう
になるから、プログラムを
書
か
く
前
まえ
に
先
さき
に
連射
れんしゃ
の
仕様
しよう
を
書
か
いておこう。
弾
たま
は
最大
さいだい
10
連射
れんしゃ
できる。つまり
同時
どうじ
に10
発
はつ
まで
画面
がめん
に
出
だ
せる
弾
たま
には20
番
ばん
から29
番
ばん
までの10
個
こ
のスプライトを
使
つか
う
ボタンが
押
お
された
時
とき
に
弾用
たまよう
スプライトを
作成
さくせい
する
事
こと
ができれば、
弾
たま
を
撃
う
つ
撃
う
った
弾
たま
は、
敵
てき
と
同
おな
じようにスプライトが
存在
そんざい
していたら
上
うえ
に
動
うご
かす
敵
てき
との
当
あ
たりは、
弾
たま
スプライト
全部
ぜんぶ
と
当
あ
たったかどうかのチェックを
行
おこな
う
こんな
感
かん
じかな!
言
い
ってることはわかるけどよう、どういう
命令
めいれい
を
使
つか
えばいいのかさっぱりわかんねえぞ!
新
あたら
しい
命令
めいれい
は1
個
こ
も
使
つか
わないんだけど、
今
いま
まで
使
つか
ってきた
命令
めいれい
を
違
ちが
った
方法
ほうほう
で
使
つか
うんだ。
さっきの
SPOFS
エスピーオフス
に
OUT
アウト
をつけたみたいに、
SmileBASIC
スマイルベーシック
の
命令
めいれい
は、
例
たと
えばスプライトを
作
つく
る
命令
めいれい
は
SPSET
エスピーセット
って
決
き
まっているんだけど、
引数
ひきすう
の
数
かず
や
内容
ないよう
を
変
か
えることで、いろんな
作
つく
り
方
かた
ができるようになっている
んだよ。
SPSET
エスピーセット
でヘルプを
出
だ
すと
何
なん
ページも
出
で
てくるだろう?1ページが1つの
使
つか
い
方
かた
の
説明
せつめい
になってて、4ページあったら4
通
とお
りの
使
つか
い
方
かた
があると
思
おも
えばいいよ。
じゃあ、プログラムを
発表
はっぴょう
!
'---てき----------------------------
'てきのかず
ECOUNT=10
'てきのざひょう
EX=200
EY=60
'てきのそくど
DIM EVX[ECOUNT]
DIM EVY[ECOUNT]
'てきのいどうじかん
DIM ETIME[ECOUNT]
'てきスプライトIDのせんとう
ETOP=100
'てきのえのばんごう
EPIC=1203
'てきのスプライトをつくる
FOR I=0 TO ECOUNT-1
EID=ETOP+I
SPSET EID,EPIC
SPOFS EID,EX,EY
SPCOL EID:'てきにあたりはんていをつける
NEXT
'---プレイヤー-------------------------
'プレイヤーのざひょう
PX=200
PY=200
'プレイヤーのスプライトID
PID=10
'プレイヤーのえのばんごう
PPIC=3323
'プレイヤーのスプライトをつくる
SPSET PID,PPIC
SPOFS PID,PX,PY
'---たま--ー-------------------------
'たまのかず
TCOUNT=10
'たまのスプライトIDせんとう
TTOP=20
'たまのえのばんごう
TPIC=3386
'---メインループ-----------------------
LOOP
'---プレイヤーしょり----------------------
'さゆうにうごかす
IF BUTTON(1, #B_LLEFT) THEN PX=PX-1
IF BUTTON(1, #B_LRIGHT) THEN PX=PX+1
IF PX<0 THEN PX=0
IF PX>400-16 THEN PX=400-16
SPOFS PID,PX,PY
'ボタンがおされたらたまはっしゃ!
IF BUTTON(1,#B_RRIGHT,2) THEN
'たまスプライトをつくれたらはっしゃ
TID=SPSET(TTOP,TTOP+TCOUNT-1,TPIC)
IF TID>=0 THEN
'たまスプライトつくれた
'たまのざひょうはプレイヤーとおなじ!
TX=PX:TY=PY
SPOFS TID,TX,TY
SPCOL TID:'たまもあたるように!
BEEP 111:'はっしゃおんもだすぜ!
ENDIF
ENDIF
'すべてのたまをうごかす
FOR I=0 TO TCOUNT-1
TID=TTOP+I
'たまがなかったらスキップ
IF !SPUSED(TID) THEN CONTINUE
'たまのざひょうをとりだす
SPOFS TID OUT TX,TY
'うえにうごかす
TY=TY-5
SPOFS TID,TX,TY
'たまががめんからとびでたらたまをけす
IF TY<0 THEN SPCLR TID
NEXT
'---てきしょり-------------------------
FOR I=0 TO ECOUNT-1
EID=ETOP+I
IF !SPUSED(EID) THEN CONTINUE:'もうきえてたらスキップ
IF ETIME[I]==0 THEN
'うごくほうこうをきめる
EVX[I]=RND(3)-1
EVY[I]=RND(3)-1
ETIME[I]=20
ENDIF
'てきをうごかす
ETIME[I]=ETIME[I]-1
SPOFS EID OUT EX,EY
EX=EX+EVX[I]
EY=EY+EVY[I]
SPOFS EID,EX,EY
'たまにあたった?
TID=SPHITSP(EID,TTOP,TTOP+TCOUNT-1)
IF TID>=0 THEN
'あたった!
BEEP 11:'ばくはつ!
SPCLR EID:'てきをけす
SPCLR TID:'たまもけす
ENDIF
NEXT
VSYNC
ENDLOOP
いちだんと
複雑
ふくざつ
になったねえ・・・これはちょっと
解読
かいどく
が
難
むずか
しいぞ。ねえワンパク
君
くん
?
プスプスプスプス
わ、ワンパク
君
くん
の
頭
あたま
から
湯気
ゆげ
が
出
で
ている!
ぜんぜんわからねえ!
あせらずに
変
か
わった
場所
ばしょ
を1
行
ぎょう
ずつ
見
み
ていこう!
まず39
行目
ぎょうめ
からは
問題
もんだい
ないよね?
敵
てき
の
数
かず
と
同
おな
じように、
弾
だん
の
数
かず
も
TCOUNT
ティーカウント
という
変数
へんすう
におぼえておくよ。
弾
たま
のスプライトは20
番
ばん
からのままで
問題
もんだい
ない。
弾
たま
が10
個
こ
なら、20
番
ばん
から29
番
ばん
まで
弾
たま
で
使
つか
うことになるよ。
つぎは56
行目
ぎょうめ
から。
IF
イフ
文
ぶん
の
条件
じょうけん
がまたシンプルに
戻
もど
ったね。ここで
弾
たま
が
出
だ
せるかどうかをカンタンに
判定
はんてい
できないから、まず
発射
はっしゃ
ボタンが
押
お
された
事
こと
だけ
判定
はんてい
しちゃうようにしたんだ。
おい、
BUTTON
ボタン
の
引数
ひきすう
が1
個
こ
ふえてねえか?2ってなんだよ?
ごめんごめん、
今
いま
までにない
引数
ひきすう
だよね。
実
じつ
は
BUTTON
ボタン
関数
かんすう
は、ボタンがどういう
状態
じょうたい
になったら1を
返
かえ
すかを3
番目
ばんめ
の
引数
ひきすう
で
指定
してい
できるんだ。2は
ボタンが
押
お
された
瞬間
しゅんかん
を
意味
いみ
するよ。
今
いま
までの
使
つか
い
方
かた
では
ボタンが
押
お
されてたらいつでも1
っていう
使
つか
い
方
かた
だったんだけど、それだとボタン
押
お
しっぱなしで
一瞬
いっしゅん
で
弾
たま
を10
発
はつ
打
う
ち
尽
つ
くしちゃうから、
押
お
しっぱなしで
弾
たま
が
出
で
ないようにしてるんだ。
他
ほか
にも
ボタンが
離
はな
された
瞬間
しゅんかん
とかも
取
と
れるよ。
ボタンが
押
お
されていたらいつでも1
と
ボタンが
押
お
されたシュンカンだけ1
のビミョーな
違
ちが
いなんてのが
関係
かんけい
してくるのか!こまかすぎてメマイがするぜ・・・
普段
ふだん
気
き
にもしないような
細
こま
かい
事
こと
まで
気
き
にしないと、プログラムはちゃんと
動
うご
いてくれない
のさ!じゃあ
続
つづ
けよう。
発射
はっしゃ
ボタンが
押
お
された
後
あと
で
SPSET
エスピーセット
を
使
つか
ってるけど、ここでは
関数
かんすう
として
使
つか
っているよ。
引数
ひきすう
3
個
こ
の
関数
かんすう
として
SPSET
エスピーセット
を
使
つか
うと、
第
だい
1
引数
ひきすう
から
第
だい
3
引数
ひきすう
の
間
あいだ
のスプライト
番号
ばんごう
で
空
あ
いてる
番号
ばんごう
があったら、そこに
第
だい
3
引数
ひきすう
の
絵
え
でスプライトを
作
つく
って、
作
つく
ったスプライト
番号
ばんごう
を
返
かえ
す
という
関数
かんすう
になるんだ。
空
あ
いてる
番号
ばんごう
がなければ-1が
返
かえ
ってくるよ。
そして59
行目
ぎょうめ
の
IF
イフ
文
ぶん
で、
SPSET
エスピーセット
関数
かんすう
の
結果
けっか
をチェックしているんだ。
>=0
ってことは、
結果
けっか
が0
以上
いじょう
だったらってこと。-1だとこの
IF
イフ
文
ぶん
はまるまるスキップされる。
ということは
スプライト
作
つく
れた
時
とき
だけ
THEN
ゼン
を
実行
じっこう
、
作
つく
れなかったらスキップ
ってことか。それで60
行目
ぎょうめ
に
たまスプライトつくれた
って
書
か
いてるんだな!
そういうこと!60
行目
ぎょうめ
のコメントがなければ
解読
かいどく
は
大変
たいへん
なんだ。コメントが
大事
だいじ
だって
事
こと
が
良
よ
くわかるよね。
弾
たま
スプライトが
作
つく
れたら、やる
事
こと
はいままでと
同
おな
じだね。
もう
一度
いちど
58
行目
ぎょうめ
の
SPSET
エスピーセット
関数
かんすう
でやってる
事
こと
をおさらいしよう。
20
番
ばん
から29
番
ばん
までの
間
ま
で
弾
たま
スプライトが
作
つく
れるって
事
こと
は、まだ
弾
たま
が
出
だ
せる
事
こと
を
意味
いみ
しているよ。スプライトを
作
つく
れないって
事
こと
は
弾
たま
をもう
出
だ
せないっていう
事
こと
さ。
弾
たま
を
出
だ
せる
出
だ
せない、
出
だ
せるなら
作
つく
った
弾
たま
の
番号
ばんごう
という2つ
意味
いみ
が
TID
変数
へんすう
に
入
はい
っているんだ。この
使
つか
ってたらその
番号
ばんごう
、
使
つか
ってなかったら-1
という
変数
へんすう
の
使
つか
い
方
かた
はとても
便利
べんり
で
良
よ
く
使
つか
うから
覚
おぼ
えておくといいよ!
さあ、68
行目
ぎょうめ
から、
作
つく
った
弾
たま
を
動
うご
かすところ。これは
敵
てき
とほとんど
同
おな
じだね。
FOR
フォー
で0から
TCOUNT
ティーカウント
-1
まで
回
まわ
して、
調
しら
べるスプライトIDを
作
つく
って、そのスプライトが
存在
そんざい
している
時
とき
だけ
処理
しょり
する。83
行目
ぎょうめ
からの
敵
てき
の
処理
しょり
と
比
くら
べてみるといいよ。
ここまでは
大丈夫
だいじょうぶ
かな?
だ、だだだ、ダイジョウブだ!
・・・
よし。それじゃあラストスパートだよ!
最後
さいご
に101
行目
ぎょうめ
からの
弾
たま
に
当
あ
たったかどうかの
判定
はんてい
方法
ほうほう
を
見
み
てみよう。
ここでは
SPHITSP
エスピーヒットエスピー
を
新
あたら
しい
使
つか
い
方
かた
で
使
つか
っているよ。
実
じつ
は
SPHITSP
エスピーヒットエスピー
は
一度
いちど
に
複数
ふくすう
のスプライトと
当
あ
たり
判定
はんてい
を
調
しら
べる
事
こと
ができる
んだ。
ここでは
引数
ひきすう
を3つ
指定
してい
しているね。この
書
か
き
方
かた
だと、
第
だい
1
引数
ひきすう
が
敵
てき
のスプライトID、
第
だい
2
引数
ひきすう
が
弾
たま
スプライトIDの
先頭
せんとう
、
第
だい
3
引数
ひきすう
が
弾
たま
スプライトIDの
最後
さいご
さ。となると、
何
なに
をやっていると
思
おも
う?
今
いま
までは
引数
ひきすう
2つで、
敵
てき
のIDとタマのIDだったよな?それが3つに
増
ふ
えて、
敵
てき
、タマ
最初
さいしょ
、タマ
最後
さいご
になったと。しかもさっきの
SPSET
エスピーセット
の
新
あたら
しい
使
つか
い
方
かた
となんか
似
に
ているぜ。もしかして、タマ
全部
ぜんぶ
まとめて、
敵
てき
と
当
あ
たってるかどうか
調
しら
べてるのか?
正解
せいかい
!ここでは
第
だい
1
引数
ひきすう
のスプライトと、
第
だい
2から
第
だい
3までのスプライトとの
当
あ
たり
判定
はんてい
をまとめて
調
しら
べて、1
個
こ
でも
当
あ
たったスプライトがあればそのIDを
返
かえ
す
んだ。
つまり、
敵
てき
と
弾全部
たまぜんぶ
を
一度
いちど
に
調
しら
べて、
敵
てき
に
当
あ
たった
弾
たま
が1
個
こ
でもあればそれを
返
かえ
す
という
事
こと
をやってくれるよ。ちなみに1
個
こ
も
当
あ
たってなければ-1を
返
かえ
すんだ。また-1が
出
で
てきたね。
102
行目
ぎょうめ
の
IF
イフ
も
見
み
おぼえあるぜ。ここでは
-1なら
弾
たま
に
当
あ
たってない。それ
以外
いがい
なら、
当
あ
たった
弾
たま
のスプライトIDが
入
はい
っている
ってことだな!
そういうこと!ちなみにこの
SPHITSP
エスピーヒットエスピー
では、
スプライトがなかった
場合
ばあい
は
勝手
かって
にスキップしてくれる
んだ。だから
弾
たま
がなかったらとか
調
しら
べる
必要
ひつよう
もないのさ。
便利
べんり
だろう?
すげえな
SPHITSP
エスピーヒットエスピー
!これ1
個
こ
でほとんどの
仕事
しごと
が
済
す
んじまうじゃねえか!
SmileBASIC
スマイルベーシック
には、こういうゲームを
作
つく
るのに
便利
べんり
な
命令
めいれい
や
関数
かんすう
がいろいろ
入
はい
ってるんだよ。まだまだこんなものじゃないけど、それはじょじょに
説明
せつめい
していくね。
さあ
最後
さいご
。
当
あ
たった
弾
たま
があるなら、
後
あと
は
前
まえ
と
同
おな
じ。
敵
てき
を
消
け
して、
弾
たま
を
消
け
して、
音
おと
を
出
だ
す!じゃあ
動
うご
かしてみよう!
g18.mp4
おおお!オレの
求
もと
めていた
物
もの
はこれだぜ!アットウテキな
連射
れんしゃ
で
敵
てき
をなぎ
倒
たお
す!
すごいね!
弾
たま
だけは
売
う
ってるゲームみたいだ!
どうだい?
今回
こんかい
はプログラムを
書
か
いてもらわなかったけど、キミたちだけでもできそうかな?
お
前
まえ
の
話
はなし
を
聞
き
いてるとなんてことないように
聞
き
こえるが、なんだかごまかされてる
気
き
もするぜ・・・
ボクもインテリ
君
くん
の
解説
かいせつ
聞
き
きながらプログラムを
見
み
ている
分
ぶん
にはわかった
気
き
になってるけど、
自力
じりき
でこのプログラム
書
か
けるかって
言
い
われるとむずかしい
気
き
がするよ。
そりゃいきなりこのプログラムを
書
か
けたら
天才
てんさい
じゃ!
ハカセ!
今
いま
おまえさんたちにやってもらいたい
事
こと
は、いきなりこのプログラムを
書
か
けるようになる
事
こと
ではないんじゃよ。1
行
ぎょう
ずつ
何
なに
をしているか
理解
りかい
して、あとで
自分
じぶん
でプログラムを
書
か
く
時
とき
に「あ、これのやり
方
かた
は
見
み
た
事
こと
があるぞ!」と
思
おも
い
出
だ
してくれればええんじゃ。そうやって
何
なに
かをするプログラムのかけらを
覚
おぼ
えて
行
い
く
事
こと
を、
引
ひ
き
出
だ
しを
増
ふ
やす
とも
言
い
うのう。
引
ひ
き
出
だ
しの
多
おお
さイコール、プログラマーのレベルだと
思
おも
ってええ!
キミたちはもうプログラムの
基本
きほん
は
学
まな
び
終
お
えてるから、ハカセの
言
い
うとおり、ここから
先
さき
は
頭
あたま
の
中
なか
にたくさん
引
ひ
き
出
だ
しを
作
つく
っていく
事
こと
で
初心者
しょしんしゃ
から
中級者
ちゅうきゅうしゃ
にレベルアップするんだよ。そのためにも、いろんなプログラムを
読
よ
むことが
大切
たいせつ
さ!
一流
いちりゅう
のミュージシャンになるには
音楽
おんがく
をいっぱい
聞
き
かなきゃないのと
同
おな
じか・・・
そういうことじゃ!
それにしても、
最初
さいしょ
のプログラムと2
番目
ばんめ
のプログラムって、
改
あらた
めて
見
み
るとあまり
変
か
わっていないんだね。すごく
変
か
わったように
思
おも
ったのに。
それはインテリ
君
くん
のプログラムが
良
よ
くできてるからじゃよ。
良
よ
いプログラムは
変更
へんこう
に
強
つよ
いんじゃ!
お
前
まえ
さんたち、
良
よ
いプログラムの
条件
じょうけん
はなんじゃと
思
おも
う?
そりゃあ、すごいことができるとか、メチャクチャ
速
はや
いとか、すげーでかいとか、そんなんだろう!
それは
すごいプログラム
じゃのう。じゃが、
すごいプログラムが
良
よ
いプログラムとは
言
い
えん
のじゃよ。
良
よ
いプログラムの
条件
じょうけん
、それは、
シンプルにわかりやすく
書
か
いていること
、
変更
へんこう
がカンタンにできるようになっていること
。それだけじゃ!
まずシンプルでわかりやすいこと。ものすごい
超絶
ちょうぜつ
テクニックを
使
つか
ってものすごい
事
こと
ができたとしても、
誰
だれ
にも
理解
りかい
できずデバッグすらままならないようでは
何
なん
の
意味
いみ
もない!それにこういうプログラミングことわざもあるぞい。
3
ヶ月後
かげつご
の
自分
じぶん
は
他人
たにん
。
今日
きょう
自分
じぶん
で
書
か
いたプログラムも、3
ヶ月後
かげつご
に
見
み
たらまるで
他人
たにん
が
書
か
いたように
何
なに
を
書
か
いているのかさっぱりわからん、という
意味
いみ
じゃ。わかりやすく
書
か
いておく
事
こと
は、
他人
たにん
にとっても
将来
しょうらい
の
自分
じぶん
にとっても
役
やく
に
立
た
つという
事
こと
じゃな。
そして
変更
へんこう
がカンタン。
今回
こんかい
も
弾
たま
を
単発
たんぱつ
から10
連射
れんしゃ
にしただけであまり
変
か
わっていないじゃろ?これはインテリ
君
くん
が
最初
さいしょ
からいじりやすいようなプログラムにしといたからじゃな。ヘタクソなプログラムだと、
変更
へんこう
する
事
こと
なんぞこれっぽっちも
考
かんが
えておらんから、わかりづらくなるわ、バグはいっぱい
出
で
るわ、
大騒
おおさわ
ぎになるんじゃよ。
例
たと
えば「
弾
たま
なんてTIDとかいう
変数
へんすう
じゃなくて20って
書
か
いとけばいいや!」なんて
書
か
いてて、そこから
連射
れんしゃ
させようと
思
おも
ったらどうなるか
考
かんが
えてみるとええぞい。
とはいえ、
変更
へんこう
がカンタンにできるようなプログラムを
書
か
くというのは、
実
じつ
は
最高
さいこう
に
難易度
なんいど
が
高
たか
い!いろんな
引
ひ
き
出
だ
しを
増
ふ
やして、いろんな
経験
けいけん
を
積
つ
んだ
末
まつ
にたどりつく
達人
たつじん
プログラマーの
境地
きょうち
が
必要
ひつよう
じゃ。
まあ、どっちもいきなりはムリじゃから、プログラムを
書
か
いている
時
とき
に
これはわかりやすい
書
か
き
方
かた
だろうか?
、
ここの
仕様
しよう
が
変
か
わったらどうなるだろう?
と
時々見直
ときどきみなお
してみるクセをつけてみるとええぞい。そして
人
ひと
のプログラムを
見
み
て、わかりやすいなあとか、
改造
かいぞう
しやすいなあとかいうのがあれば、そのやり
方
かた
をマネしたりして
引
ひ
き
出
だ
しに
追加
ついか
しておくんじゃ。
良
よ
いな?
なんてジミでめんどくせえんだ!プログラムはもっとバババッと
派手
はで
に
作
つく
るもんだと
思
おも
ってたぜ!
ミュージシャンだって
派手
はで
なパフォーマンスの
陰
かげ
ではジミな
練習
れんしゅう
をコツコツしとるんじゃないかのう。
チッ、
反論
はんろん
できねえ・・・
ダイタイミュージシャン
志望
しぼう
なのに、ちゃんと
楽器
がっき
や
歌
うた
の
練習
れんしゅう
してるんですかネートサカ
頭
あたま
!
なんだと!オレサマの
神
かみ
のリフを
聞
き
いたことねえだろう!
失神
しっしん
するぜ!
ヒー、ひどすぎて
失神
しっしん
しそうデスヨ。
ムキー、やいダミー、ちょっと
待
ま
ってろ!ギター
取
と
ってくるぜ!
(ボクもワンパク
君
くん
がギター
弾
ひ
いてるところ
見
み
たことないんだけど)
{{今回:こんかい}:こんかい}のポイント
命令・関数のバリエーション
同
おな
じ
命令
めいれい
・
関数
かんすう
でも、
引数
ひきすう
の
数
かず
や
呼
よ
び
出
だ
し
方
かた
の
違
ちが
いによって、いろいろな
使
つか
い
方
かた
ができる
場合
ばあい
があります。
例
たと
えば
SPSET
エスピーセット
は「スプライトを
作
つく
る」
命令
めいれい
ですが、
作
つく
り
方
かた
が
何種類
なんしゅるい
もある、という
意味
いみ
です。
また
SPOFS
エスピーオフス
のように「
座標
ざひょう
を
設定
せってい
する」
以外
いがい
に「
座標
ざひょう
を
取得
しゅとく
する」
機能
きのう
を
持
も
っているというように、
何
なに
かを
設定
せってい
する
命令
めいれい
はたいていの
場合
ばあい
設定
せってい
した
値
あたい
を
取得
しゅとく
する
事
こと
ができます。
ヘルプでは
使
つか
い
方
かた
別
べつ
にページが
分
わ
かれていますので、
自分
じぶん
の
望
のぞ
むような
使
つか
い
方
かた
がないかどうか
探
さが
してみると
良
よ
いでしょう。
OUTキーワードについて
値
あたい
を
設定
せってい
する
命令
めいれい
の
多
おお
くは、
OUT
アウト
キーワードをつけることで
逆
ぎゃく
に
設定
せってい
した
値
あたい
を
取得
しゅとく
する
事
こと
ができます
。じょうずに
使
つか
うと
変数
へんすう
に
値
あたい
を
覚
おぼ
えておく
必要
ひつよう
がなくなります。
BUTTON関数のバリエーション
BUTTON
ボタン
関数
かんすう
は
第
だい
3
引数
ひきすう
を
追加
ついか
することで「ボタンが
押
お
されていたらいつでも」、「ボタンが
押
お
された
瞬間
しゅんかん
」、「ボタンが
離
はな
された
瞬間
しゅんかん
」をチェックする
事
こと
ができます。ボタンが
押
お
された
瞬間
しゅんかん
はさらに2
種類
しゅるい
に
分
わ
かれていて、
BREPEAT
ビーリピート
という
\0命令
めいれい
で
設定
せってい
する
速度
そくど
で
自動
じどう
でボタンを
連打
れんだ
する
機能
きのう
を
使
つか
う・
使
つか
わないが
選
えら
べます。
BUTTON
ボタン
と
BREPEAT
ビーリピート
のヘルプを
見
み
てみましょう。ちなみに
今回使
こんかいつか
った2
番
ばん
は
ボタンが
押
お
された
瞬間
しゅんかん
、
BREPEAT
ビーリピート
の
自動連打設定
じどうれんだせってい
は
無視
むし
という
番号
ばんごう
になります。
SPSETのバリエーション
SPSET
エスピーセット
命令
めいれい
は
関数
かんすう
として
使
つか
うと、
空
あ
いているスプライトIDを
探
さが
してそこにスプライトを
作
つく
り、
作
つく
ったスプライトのIDを
返
かえ
す
という
使
つか
い
方
かた
ができます。この
使
つか
い
方
かた
だと、
別
べつ
の
変数
へんすう
や
配列
はいれつ
でスプライトが
作
つく
られているかどうかを
管理
かんり
する
必要
ひつよう
がなくなります。
関数
かんすう
として
使
つか
う
場合
ばあい
にも
引数
ひきすう
によってさらにこまかく
機能
きのう
が
変
か
わるので、ヘルプを
見
み
てみて
下
くだ
さい。
なお
SPSET
エスピーセット
命令
めいれい
を
関数
かんすう
として
使
つか
う
場合
ばあい
、
使
つか
い
終
お
わったスプライトは
必
かなら
ず
SPCLR
エスピークリア
で
消
け
す
必要
ひつよう
があります。
SPCLR
エスピークリア
を
使用
しよう
しないとそのスプライトは
ゴミとしてどんどんたまっていき、
最終的
さいしゅうてき
には
新
あたら
しいスプライトを
作
つく
れなくなります
ので
注意
ちゅうい
して
下
くだ
さい。
SPHITSPのバリエーション
SPHITSP
エスピーヒットエスピー
関数
かんすう
は、スプライト2
個
こ
の
間
あいだ
で
当
あ
たり
判定
はんてい
をチェックする
以外
いがい
に、
あるスプライトと、
指定
してい
した
範囲
はんい
の
複数
ふくすう
スプライトとの
間
あいだ
でまとめて
当
あ
たり
判定
はんてい
をチェックし、
当
あ
たったスプライトのIDを
返
かえ
す
という
使
つか
い
方
かた
もできます。この
場合
ばあい
、
SPCLR
エスピークリア
で
消
け
したスプライトは
自動的
じどうてき
にスキップされ、
1
個
こ
も
当
あ
たっていない
場合
ばあい
は-1が
返
かえ
るので、
全
まった
く
当
あ
たっていない
事
こと
も
同時
どうじ
にチェックできます。
SPUSED関数
SPUSED
エスピーユーズド
関数
かんすう
を
使
つか
うと、
指定
してい
したスプライトIDのスプライトが
作
つく
られているかどうかを
確認
かくにん
する
事
こと
ができます。
CONTINUE
ループの
中
なか
で
CONTINUE
コンティニュー
命令
めいれい
を
使
つか
うと、
以降
いこう
のループ
内
ない
の
処理
しょり
をすべてスキップ
して、
LOOP
ループ
なら
ENDLOOP
エンドループ
、
FOR
フォー
なら
NEXT
ネクスト
までジャンプします。
サンプルプログラムの公開キー
4Q4AD3EY3
まだ
帰
かえ
ってきませんネー。しょうがないから
問題
もんだい
出
だ
しちゃいマショウ。あとの
方
ほう
のプログラムを
使
つか
いマスよ。
その1:
ムカシのゲームの
名人
めいじん
は
弾
たま
を1
秒間
びょうあいだ
に16
連射
れんしゃ
できたソウですよ!
今
いま
は10
個
こ
までしか
弾
たま
を
出
だ
せマセンが16
個出
こだ
せるようにしてムカシの
名人
めいじん
にチャレンジしてみまショウ!
その2:
56
行目
ぎょうめ
の
BUTTON
ボタン
関数
かんすう
のサイゴの
引数
ひきすう
は
今
いま
2ですネ!これとっぱらったらおかしくなるヨってインテリさん
言
い
ってたけど、
実際
じっさい
にやってミマショウ!なにごとも
実際
じっさい
に
試
ため
してミルのが
大事
だいじ
デスヨ。とっぱらう
以外
いがい
に3とかにしてみてもオモシロイよ。
ワシにも
問題
もんだい
出
だ
させろー!
チッ、しょうがないデスネ。1
問
もん
だけデスヨ。
あー
良
よ
かった。では・・・
その3:
上級
じょうきゅう
問題
もんだい
じゃ!72
行目
ぎょうめ
で
弾
たま
がなかったら
CONTINUE
コンティニュー
でスキップしとるのう。これは
CONTINUE
コンティニュー
を
使
つか
わない
書
か
き
方
かた
にできるかの?ヒントは
弾
たま
がなかったらスキップ
ではなく
弾
たま
があったらこれこれをする
というふうに
書
か
き
換
か
えるんじゃ。そんなのお
茶
ちゃ
の
子
こ
さいさいだぜというキミは85
行目
ぎょうめ
の
CONTINUE
コンティニュー
も
使
つか
わない
書
か
き
方
かた
にチャレンジしてみてくれい。85
行目
ぎょうめ
のほうはさらに
難
むずか
しいぞい!そして、どちらか
一方
いっぽう
でもうまく
書
か
き
換
か
えられたら、
CONTINUE
コンティニュー
を
使
つか
った
場合
ばあい
と
使
つか
わない
場合
ばあい
どっちがわかりやすいか
考
かんが
えてみるとええぞい。
一般的
いっぱんてき
に、
IF
イフ
文
ぶん
の
THEN
ゼン
の
中味
なかみ
はあまり
長
なが
すぎると
IF
イフ
文
ぶん
の
中
なか
なのか
外
そと
なのかこんがらかってくるので、
短
みじか
くしとく
方
ほう
がいいんじゃ。それでインテリ
君
くん
は
CONTINUE
コンティニュー
を
使
つか
ったんじゃのう。
ハァ、ハァ、
戻
もど
ってきたぞ!オレの
魂
たましい
の
叫
さけ
びを
聞
き
けー!ギャギャーン
ギャー
うッ
・・・
うゲゲ。Divide by zero in 0:1999。
guide18.txt
· 最終更新: 2019/08/30 12:23 (外部編集)
ページ用ツール
文書の先頭へ