ユーザ用ツール


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アウトをつけると、ぎゃくいま設定せっていされているスプライトの座標ざひょう取得しゅとくできるんだよ。
ほほう、じつはスプライトは自分じぶん座標ざひょうをおぼえていて、すこともできるってワケだな、スプライトがおぼえているモノをわざわざ変数へんすうでおぼえとく必要ひつようはないってことだ!
そういうこと!それでてきたま座標ざひょうおぼえておく変数へんすうはいらなくなったからえたんだ。プレイヤーの座標ざひょうおぼえているPXPYは、すとかえってややこしくなっちゃうからのこしているよ。
SPOFSエスピーオフス スプライトID OUTアウト X,Yで、XYにスプライトの座標ざひょうはいるんだ。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スマイルベーシックには、こういうゲームをつくるのに便利べんり命令めいれい関数かんすうがいろいろはいってるんだよ。まだまだこんなものじゃないけど、それはじょじょに説明せつめいしていくね。
さあ最後さいごたったたまがあるなら、あとまえおなじ。てきして、たまして、おとす!じゃあうごかしてみよう!








おおお!オレのもとめていたものはこれだぜ!アットウテキな連射れんしゃてきをなぎたおす!
すごいね!たまだけはってるゲームみたいだ!
どうだい?今回こんかいはプログラムをいてもらわなかったけど、キミたちだけでもできそうかな?
まえはなしいてるとなんてことないようにこえるが、なんだかごまかされてるもするぜ・・・
ボクもインテリくん解説かいせつきながらプログラムをているぶんにはわかったになってるけど、自力じりきでこのプログラムけるかってわれるとむずかしいがするよ。
そりゃいきなりこのプログラムをけたら天才てんさいじゃ!
ハカセ!
いまおまえさんたちにやってもらいたいことは、いきなりこのプログラムをけるようになることではないんじゃよ。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 (外部編集)

ページ用ツール