内容へ移動
ユーザ用ツール
検索
トレース:
•
guide16
サイドバー
ENGLISH
ニュース
更新データ
不具合情報
ダウンロード
USBキーボード・マウス情報
初心者ガイド
豆知識コーナー
リファレンス
Reference(English)
プチコン大喜利ワールドグランプリ
第五回プチコン大喜利 結果発表
guide16
16:弾(たま)を当てるには
いよいよ
敵
てき
をやっつけられるんだな!
じゃあいつものように。
敵
てき
をやっつける
って、なにをすればいいのかな?
そんなのカンタンだぜ!
敵
てき
にタマが
当
あ
たったら
敵
てき
がブッこわれる!
じゃあ、
敵
てき
に
弾
たま
が
当
あ
たったら
って、どうやったらわかるかな?
そんなのカンタンだぜ!
敵
てき
にタマが・・・あれ?スマイルベーシックってそんな
事
こと
もわかんねーのかよ!
前回
ぜんかい
ハカセが
言
い
ってたとおり、プログラミング
言語
げんご
ってのは
命令
めいれい
した
事
こと
しかしない
んだ。そして
敵
てき
に
弾
たま
が
当
あ
たったかどうか
調
しら
べる
命令
めいれい
なんて
存在
そんざい
しないし、そもそも
どれが
敵
てき
でどれが
弾
たま
かなんて
事
こと
も
知
し
らない
。
全部
ぜんぶ
プログラムしてあげなきゃダメなのさ。
ワタシは
違
ちが
いますがネー!
出
で
やがったなダミー!
でやがったななんて
人
ひと
をオバケのように
言
い
っちゃだめでショートサカ
頭
あたま
!アタシは
人
ひと
でないですがネー
HAHAHA
ハハハ
ー
おいインテリ、こいつもプログラムなんだろう?なんでこんなにへらず
口
ぐち
をたたけるんだ!
口
くち
は
減
へ
るもんじゃナイヨ。
減
へ
って
足
た
りないのはオマエサンの
脳味噌
のうみそ
だヨ!
ダミーは
AI
エーアイ
だからねえ。
直接
ちょくせつ
このしゃべり
方
かた
をプログラムしたわけじゃなくて、たくさんのおしゃべりを
学習
がくしゅう
したら
勝手
かって
にこんなしゃべり
方
かた
になっちゃってこまってるんだよ・・・
インテリ、ドンマイ!
悩
なや
みがあるなら
相談
そうだん
にノルヨ!
人生
じんせい
相談
そうだん
もいっぱい
学習
がくしゅう
したカラね!
ああ・・・
・・・
ともかく
話
はなし
を
先
さき
に
進
すす
めよう。あらためて、
敵
てき
に
弾
たま
が
当
あ
たったら
って、どうやったらわかるかな?
そんなのカンタンだぜ!
当
あ
たり
判定
はんてい
デスヨ!
アタリハンテイ?なんだそりゃ?
ああもう、
答
こた
えを
言
い
っちゃったし。そう、
当
あ
たり
判定
はんてい
っていうのを
使
つか
うんだ。
当
あ
たり
判定
はんてい
ってのは、その
名
な
の
通
とお
り、
当
あ
たったかどうかを
判定
はんてい
する
っていう
意味
いみ
だよ。
つまり、
敵
てき
と
弾
たま
が
当
あ
たったか
当
あ
たらないかを、その
当
あ
たり
判定
はんてい
っていうので
判定
はんてい
できるってこと?
そういうこと!
なんだよ、ベンリな
物
もの
があるんじゃねーか!ダミーお
前
まえ
知
し
ってんだろう?そいつを
教
おし
えろよ!
いや
知
し
らネー
なにい?
ワタシのプログラムには
使
つか
われてマセンし。
当
あ
たり
判定
はんてい
大
おお
きすぎだこのクソゲー!
とか
当
あ
たり
判定
はんてい
バグってるこのクソゲー!
言
い
ってる
人
ひと
ならネットにいまシタよ。
そんだけかよ!
ダミーが
拾
ひろ
ってきたのは、ゲームの
当
あ
たり
判定
はんてい
が
気
き
に
入
い
らなくて
文句
もんく
言
い
っている
人達
ひとたち
の
話
はなし
で、プログラミングとは
無関係
むかんけい
だね。
実際
じっさい
ダミーのプログラムでは
当
あ
たり
判定
はんてい
は
必要
ひつよう
ないから
組
く
み
込
こ
まれていないよ。
当
あ
たり
判定
はんてい
っていうのはさきも
言
い
った
通
とお
り
当
あ
たったかどうかを
判定
はんてい
する
っていうだけの
意味
いみ
で、
判定
はんてい
する
方法
ほうほう
にはいろんな
方法
ほうほう
があるんだ。
今回
こんかい
は
一番
いちばん
カンタンな
方法
ほうほう
を
使
つか
おう。
実
じつ
は
SmileBASIC
スマイルベーシック
のスプライトは
カンタンな
当
あ
たり
判定
はんてい
を
行
おこな
う
機能
きのう
が
入
はい
っている
んだ。
まずは
SPCOL
エスピーコル
命令
めいれい
。これは
スプライトに
当
あ
たり
判定
はんてい
用
よう
の
長方形
ちょうほうけい
を
設定
せってい
する
命令
めいれい
さ。
設定
せってい
方法
ほうほう
は
何種類
なんしゅるい
かあるけど、まずは
一番
いちばん
カンタンなのを
使
つか
おう。
スプライトの
絵
え
と
全
まった
く
同
おな
じ
場所
ばしょ
・
大
おお
きさの
長方形
ちょうほうけい
でいいなら、これだけでいいよ!
SPCOL スプライトID
当
あ
たりを
判定
はんてい
したいスプライトには
全部
ぜんぶ
設定
せってい
する
必要
ひつよう
がある
から
注意
ちゅうい
してね。
今回
こんかい
は
敵
てき
と
弾
たま
両方
りょうほう
だね。
あとは、
例
たと
えば
敵
てき
と
弾
たま
の
当
あ
たりをチェックしたい
時
とき
に、
SPHITSP
エスピーヒットエスピー
関数
かんすう
を
使
つか
えばOK!。
当
あ
たったら1、
当
あ
たっていなかったら0を
返
かえ
すんだ。
IF SPHITSP(敵,弾)==1 THEN 当った時の処理
本当
ほんとう
はちゃんと
数学的
すうがくてき
な
基本
きほん
から
覚
おぼ
えといた
方
ほう
がいいんだけど、ちょっと
難
むずか
しいから
説明
せつめい
は
省略
しょうりゃく
するよ。ともかく、これでスプライト
同士
どうし
が
当
あ
たったかどうかはチェックできるよ。
なんだよ、さんざん
脅
おど
かしといていいモノがあるじゃねえか!
あとは
当
あ
たった
時
とき
の
処理
しょり
だね。
当
あ
たったらどうしたい?
そりゃあ
爆発
ばくはつ
だろう!ゲージュツ
的
てき
に
爆発
ばくはつ
させようぜ!
爆発
ばくはつ
させるのはまだちょっと
難
むずか
しいかな。
今回
こんかい
は
音
おと
を
出
だ
して
敵
てき
を
消
け
すだけにしようか。
チェッ、つまらねえが
今日
きょう
のところは
勘弁
かんべん
しといてやるぜ。
スプライトを
消
け
すのは、この
前
まえ
使
つか
った
SPCLR
エスピークリア
命令
めいれい
を
使
つか
うよ。
音
おと
を
出
だ
すには
BEEP
ビープ
命令
めいれい
を
使
つか
うよ。
BEEP
音
おと
番号
ばんごう
で
いろんな
音
おと
を
鳴
な
らせる
んだ。
音
おと
番号
ばんごう
はスマイルツールで
確認
かくにん
できるよ。
よし、それだけわかれば
十分
じゅうぶん
だ!
・テキに
当
あ
たり
判定
はんてい
をつける
・テキがいるときだけテキを
動
うご
かす
・SPHITSPでタマに
当
あ
たってるか
調
しら
べて、
当
あ
たってたらテキとタマを
消
け
す
って
事
こと
だな。
仕様
しよう
もバッチリ。じゃあプログラムを
書
か
くぜ!
'---てき----------------------------
'てきのかず
ECOUNT=10
'てきのざひょう
DIM EX[ECOUNT]
DIM EY[ECOUNT]
'てきのそくど
DIM EVX[ECOUNT]
DIM EVY[ECOUNT]
'てきのいどうじかん
DIM ETIME[ECOUNT]
'てきがいる?
DIM ENEMY[ECOUNT]
'てきのスプライトID
DIM EID[ECOUNT]
'てきざひょうしょきか
FOR I=0 TO ECOUNT-1
EX[I]=200
EY[I]=60
NEXT
'てきのスプライトをつくる
FOR I=0 TO ECOUNT-1
EID[I]=100+I
SPSET EID[I],1203
SPOFS EID[I],EX[I],EY[I]
SPCOL EID[I]:'てきにあたりはんていをつける
ENEMY[I]=1 'てきがいるときは1に
NEXT
'---プレイヤー-------------------------
'プレイヤーのざひょう
PX=200
PY=200
'プレイヤーのスプライトID
PID=10
'プレイヤーのえのばんごう
PPIC=3323
'たまのスプライトID
TID=20
'たまのえのばんごう
TPIC=3386
'たまがある?
TAMA=0
'プレイヤーのスプライトをつくる
SPSET PID,PPIC
SPOFS PID,PX,PY
'---メインループ-----------------------
LOOP
'---プレイヤーしょり----------------------
'さゆうにうごかす
IF BUTTON(1,#B_LLEFT)==1 THEN PX=PX-1
IF BUTTON(1,#B_LRIGHT)==1 THEN PX=PX+1
IF PX<0 THEN PX=0
IF PX>400-16 THEN PX=400-16
SPOFS PID,PX,PY
'まずたまがないことをチェック
IF TAMA==0 THEN
'つぎにボタンをチェック
IF BUTTON(1,#B_RRIGHT)==1 THEN
'たまはっしゃ!
'たまのざひょうはプレイヤーとおなじ!
TX=PX:TY=PY
SPSET TID,TPIC
SPOFS TID,TX,TY
SPCOL TID:'たまもあたるように!
BEEP 111:'はっしゃおんもだすぜ!
TAMA=1
ENDIF
ENDIF
'たまがあるときだけ!
IF TAMA==1 THEN
'たまをうえにうごかす
TY=TY-5
SPOFS TID,TX,TY
'たまががめんからとびでたか?
IF TY<0 THEN
TAMA=0
SPCLR TID
ENDIF
ENDIF
'---てきしょり-------------------------
FOR I=0 TO ECOUNT-1
IF ENEMY[I]==1 THEN
IF ETIME[I]==0 THEN
'うごくほうこうをきめる
EVX[I]=RND(3)-1
EVY[I]=RND(3)-1
ETIME[I]=20
ENDIF
'てきをうごかす
ETIME[I]=ETIME[I]-1
EX[I]=EX[I]+EVX[I]
EY[I]=EY[I]+EVY[I]
SPOFS EID[I],EX[I],EY[I]
IF SPHITSP(TID,EID[I]) THEN
'あたった!
BEEP 11:'ばくはつ!
SPCLR EID[I]:'てきをけす
ENEMY[I]=0:'てきがいなくなったので0にする
SPCLR TID:'たまもけす
TAMA=0
ENDIF
ENDIF
NEXT
VSYNC
ENDLOOP
あんがいカンタンに
書
か
けたな。いきおいで
弾
たま
の
発射音
はっしゃおん
もつけてやったぜ!
ワンパク
君
くん
、カンペキだよ!
敵
てき
に
弾
たま
が
当
あ
たった
時
とき
に、
敵
てき
だけじゃなくちゃんと
弾
たま
も
消
け
してるじゃないか。きっとそのまま
飛
と
んで
行
い
くだろうと
思
おも
ったのに。
ヒヒヒ。ほめても
何
なに
も
出
で
ないぜ!
SmileBASIC
スマイルベーシック
はゲームで
良
よ
く
使
つか
うけど
書
か
くのが
大変
たいへん
な
処理
しょり
をカンタンに
書
か
ける
命令
めいれい
をいろいろ
持
も
っているんだ。
当
あ
たり
判定
はんてい
もそのひとつだね。スプライトの
絵
え
だけじゃなく
音
おと
もゲーム
用
よう
の
効果音
こうかおん
や
BGM
ビージーエム
をいっぱい
持
も
っているよ。
なに?
BGM
ビージーエム
もならせるのか!せっかくだからなんかならそうぜ!
そうだね。じゃあスマイルツールを
使
つか
って、
鳴
な
らしたい
BGM
ビージーエム
を
探
さが
してみてよ
どれどれ・・・よし、40
番
ばん
だ!もっとかっこいい
曲
きょく
もあるけど、それはすげえラスボス
用
よう
にとっておくぜ
OK!
BGM
ビージーエム
を
鳴
な
らす
方法
ほうほう
はカンタンだよ。
BGMPLAY
ビージーエムプレイ
曲
きょく
の
番号
ばんごう
で
鳴
な
らせるんだ。
なるほどな、じゃあプログラムの
一番最初
いちばんさいしょ
に
BGMPLAY 40
と
書
か
いて、
実行
じっこう
!
g16.mp4
おー!
音
おと
がつくと
一気
いっき
に
本物
ほんもの
のゲームっぽくなるね!
そうだね!
音
おと
ってのはゲームを
盛
も
り
上
あ
げるすごく
大事
だいじ
な
要素
ようそ
なんだ。だから
中
なか
には
音
おと
は
一番
いちばん
最後
さいご
につける
人
ひと
もいるんだよ。
盛
も
り
上
あ
げる
大事
だいじ
な
要素
ようそ
なら
一番
いちばん
最初
さいしょ
につけといた
方
ほう
がいいんじゃねえか?
ゲームが
本当
ほんとう
におもしろいかどうかが
音
おと
でごまかされちゃうのを
嫌
きら
うんだ。
音
おと
がなくても
本当
ほんとう
に
面白
おもしろ
いゲームは
面白
おもしろ
いからっていうリクツだね。
ふん、
世
よ
の
中
なか
にはいろんなヤツがいるな。オレはもちろん
最初
さいしょ
から
盛
も
り
上
あ
がる
方
ほう
がいいぜ!
その
考
かんが
え
方
かた
はワンパク
君
くん
らしいのう!ところで、
音
おと
で
盛
も
り
上
あ
がっているが、なんかこう
物足
ものた
りないところはないかのう。
なんだジジイ、
人
ひと
の
成果
せいか
にケチつけにきたのか?
不満点
ふまんてん
なんてないぜ!
並
な
みいる
敵
てき
を
連射
れんしゃ
連射
れんしゃ
・・・あれ、
連射
れんしゃ
がきかねえぞ?
まさに
音
おと
でごまかされるとるのう。
くそっ、インテリ!どうすりゃ
連射
れんしゃ
できるんだ!
連射
れんしゃ
かあ・・・
敵
てき
を
増
ふ
やしたのとおなじような
事
こと
を
弾
たま
でもやればいいんだけど・・・
ムリムリー、
大改造
だいかいぞう
じゃないデスカ。インテリさん、ニワトリみたいな
頭
あたま
にはムリですヨー、3
歩
ぽ
アルいたら
忘
わす
れちゃいマス。
うおー、ダミーてめえ!
IF
文
ぶん
ふたつつなげるだけで
論理
ろんり
演算
えんざん
も
使
つか
えないようなヤツにはムリムリー。じゃあサヨナラー。
うっ
うっ
インテリ!ジジイ!そのロンリーエンジンだかなんだかを
教
おし
えろ!ギザギザ
女
おんな
を
見返
みかえ
してやるぜ!
うう・・・
うう・・・
二人
ふたり
そろって
渋
しぶ
い
顔
かお
してどうしたの?
今回のポイント
当たり判定
ゲーム
内
ない
の
物
もの
同士
どうし
が
当
あ
たったかどうかを
調
しら
べる
事
こと
を
当
あ
たり
判定
はんてい
と
言
い
います。また、ゲーム
内
ない
の
物
もの
に
当
あ
たり
判定
はんてい
用
よう
の
情報
じょうほう
を
設定
せってい
する
事
こと
を
当
あ
たり
判定
はんてい
をつける
と
言
い
ったりします。
当
あ
たり
判定
はんてい
の
調
しら
べ
方
かた
はいろいろな
方法
ほうほう
がありますが、
SmileBASIC
スマイルベーシック
では
AABB
エーエービービー
法
ほう
(
軸
じく
平行
へいこう
境界
きょうかい
ボックス
法
ほう
)というシンプルな
方法
ほうほう
を
使
つか
った
当
あ
たり
判定用
はんていよう
命令
めいれい
が
用意
ようい
されています。
SPCOL
スプライトに
当
あ
たり
判定
はんてい
を
設定
せってい
する
命令
めいれい
です。
SPCOL
エスピーコル
スプライト
番号
ばんごう
で
指定
してい
したスプライトに
絵
え
と
同
おな
じ
場所
ばしょ
・
大
おお
きさの
当
あ
たり
判定
はんてい
を
設定
せってい
する
事
こと
ができます
。
他
ほか
にも
大
おお
きさや
位置
いち
を
自分
じぶん
でセットしたりする
使
つか
い
方
かた
もありますので、ヘルプを
参照
さんしょう
して
下
くだ
さい。
SPHITSP
SPCOL
エスピーコル
で
当
あ
たり
判定
はんてい
を
設定
せってい
したスプライト
同士
どうし
が
当
あ
たっているかどうかを
返
かえ
す
関数
かんすう
です。
SPHITSP
エスピーヒットエスピー
(スプライト
番号
ばんごう
A,スプライト
番号
ばんごう
B)
で、
スプライトAとスプライトBが
当
あ
たっているかどうかを
調
しら
べる
事
こと
ができます
。
他
ほか
にも
何通
なんとお
りかの
使
つか
い
方
かた
があるので、ヘルプを
参照
さんしょう
して
下
くだ
さい。
BEEP
効果音
こうかおん
を
鳴
な
らす
命令
めいれい
です。
効果音
こうかおん
とは、
弾
たま
を
発射
はっしゃ
したり、ジャンプしたり、
物
もの
が
壊
こわ
れたりといった
時
とき
に
鳴
な
らす
音
おと
の
事
こと
です。
BEEP
ビープ
音番号
おとばんごう
で、
指定
してい
した
音
おと
を
鳴
な
らせます
。
音番号
おとばんごう
はスマイルツールで
探
さが
す
事
こと
ができます。
BGMPLAY
BGM
ビージーエム
を
再生
さいせい
する
命令
めいれい
です。
BGM
ビージーエム
はゲーム
中
なか
に
流
なが
れている
音楽
おんがく
の
事
こと
です。
BGMPLAY
ビージーエムプレイ
BGM
ビージーエム
番号
ばんごう
で、
指定
してい
した
BGM
ビージーエム
を
再生
さいせい
できます
。
BGM
ビージーエム
番号
ばんごう
はスマイルツールで
探
さが
す
事
こと
ができます。
BGMSTOP
本編
ほんぺん
には
出
で
てきませんが、
BGM
ビージーエム
を
止
と
める
命令
めいれい
です。
引数
ひきすう
なしの
BGMSTOP
ビージーエムストップ
で
現在
げんざい
流
なが
れている
BGM
ビージーエム
が
止
と
まります
。
引数
ひきすう
を1
個
こ
つけると、
流
なが
れている
BGM
ビージーエム
の
音量
おんりょう
を
徐々
じょじょ
に
小
ちい
さくして
止
と
める
事
こと
ができます(
フェードアウト
と
言
い
います)。ヘルプを
参照
さんしょう
して
下
くだ
さい。
SNDSTOP
この
命令
めいれい
も
本編
ほんぺん
には
出
で
てきませんが、
覚
おぼ
えておくと
便利
べんり
な
命令
めいれい
です。
SNDSTOP
サウンドストップ
命令はその
時再生
ときさいせい
されている
音
おと
をすべて
止
と
めます。
BEEP
ビープ
や
BGMPLAY
ビージーエムプレイ
でいろいろ
試
ため
した
時
とき
に
BGMSTOP
ビージエムストップ
でも
音
おと
が
止
と
まらなくなる
事
こと
がありますが、そのような
時
とき
にも
SNDSTOP
サウンドストップ
はすべての
音
おと
を
止
と
める
事
こと
ができます。
サンプルプログラムの公開キー
4QJS3EE83
やれやれ、
次回
じかい
は
論理
ろんり
演算
えんざん
か。ワンパク
君
くん
も
神崎
かんざき
君
くん
も、もちろん
画面
がめん
の
向
む
こうのキミも
乗
の
り
越
こ
えられるといいんじゃがのう。
それはさておき、
問題
もんだい
を
出
だ
すぞい!
その1:
いろんな
曲
きょく
を
BGM
ビージーエム
にしてプログラムを
動
うご
かしてみるのじゃ!このゲームに
合
あ
わない
曲
きょく
をつけるとびっくりするくらいおもしろくなくなるぞい。
BGM
ビージーエム
は
大事
だいじ
じゃのう。
その2:
インテリ
君
くん
が
「
敵
てき
に
弾
たま
が
当
あ
たった
時
とき
に、
敵
てき
だけじゃなくちゃんと
弾
たま
も
消
け
してるじゃないか。きっとそのまま
飛
と
んで
行
い
くだろうと
思
おも
ったのに。」
と
言
い
っておったのう?
実際
じっさい
、
敵
てき
に
当
あ
たった
時
とき
に
弾
たま
を
消
け
さなかった
場合
ばあい
どうなるかプログラムをいじって
調
しら
べてみてくれい。いじるのは107
行目
ぎょうめ
と108
行目
ぎょうめ
あたりじゃなかろうかの!
今回
こんかい
は
以上
いじょう
じゃ!
guide16.txt
· 最終更新: 2019/08/30 12:25 (外部編集)
ページ用ツール
文書の先頭へ