ひまわりユーザー プログラム掲示板 バックアップ
注意
ひまわりのススメ  □ ひまわり本家Home  □ 新着記事  □ 新規投稿  □ SEARCH  □ 参考プログラム集
ツリー表示

MESSAGE ひまわり初?シューティングゲーム /ムロジェク (02/01/12(Sat) 17:10) [169]
......MESSAGE Re[1]: ひまわり初?シューティングゲーム /ターコイズ (02/01/12(Sat) 19:08) [170]
............MESSAGE Re[2]: ひまわり初?シューティングゲーム /lino (02/01/12(Sat) 19:38) [171]
......MESSAGE 難易度調整版 /ムロジェク (02/01/12(Sat) 21:36) [172]
............MESSAGE Re[2]: 難易度調整版 /moka (02/01/12(Sat) 22:24) [173]
......MESSAGE エラーについて /ムロジェク (02/01/13(Sun) 11:54) [184]
............MESSAGE Re[2]: エラーについて /クジラ飛行机 (02/01/13(Sun) 13:16) [186]
......MESSAGE バグ修正&改良版 /ムロジェク (02/01/13(Sun) 20:45) [196]
............MESSAGE さらに提案 /moka (02/01/13(Sun) 21:31) [198]
............MESSAGE Re[2]: バグ修正&改良版 /lino (02/01/13(Sun) 22:18) [200]
......MESSAGE バグ修正追加 /ムロジェク (02/01/14(Mon) 00:06) [204]


親記事 / ▼[ 170 ] ▼[ 172 ] ▼[ 184 ] ▼[ 196 ] ▼[ 204 ]
NO.169  ひまわり初?シューティングゲーム
□投稿者/ ムロジェク -(2002/01/12(Sat) 17:10:49)
□U R L/
魚雷で潜水艦を破壊するシューティングです。恐らくシューティングはひまわり初ではないでしょうか、最もコレはゲームとしてはあまり面白くないかもしれませんが。(笑)
沈み行く夕日をバックに(笑)左右キーで自機戦艦を移動し、スペースキーで水中に出現する潜水艦に魚雷投下です。魚雷がゆらゆら動きなおかつ座標ピンポイントで命中させなければならないので当てにくい事この上ないです。時々出現する赤潜水艦を破壊すると高得点!

ホントは魚雷と潜水艦の動きを独立させたかったのですが難しいです…。まだまだ改良しなければいけない個所がいくつもあります。

それでは以下プログラム本文です。
'-----------------------------------
'チープな潜水艦シューティングゲーム
'-----------------------------------
'母艦の設定
母艦の、タイトルは、「潜水艦」
母艦の、幅は、250
母艦の、高さは、150
母艦の、リサイズは、オフ
母艦の、キー押した時を、キーイベントに、設定
終了に、終了処理設定'終了に時間かかります
空=RGB(255,80,10)
空で、画面クリア

*リセット
'変数の設定
スコア=0
A=1
cx=110
弾判定=オフ
左キー = 37
右キー = 39
シフトキー=32
海赤緑=200
海青=255
海深上=28
海深下=38

'画面の設定
塗り色=白色
ペン色=白色
(55,5)から、(105,45)へ、円形
16回(
   塗り色=RGB(海赤緑,海赤緑,255)
   ペン色=RGB(海赤緑,海赤緑,255)
   (0,海深上)から、(260,海深下)へ、四角形
   海赤緑=海赤緑-10
   海深上=海深上+10
   海深下=海深下+10
)

'スコア表示の設定
スコア表示を、ラベルとして、作成
その、テキストは、「SCORE {スコア}」
その、フォントサイズは、9
その、Xは、170
その、Yは、0

'自機の設定
自機を、ラベルとして、作成
その、テキストは、「┻」
その、Xは、cx
その、Yは、20

'敵潜水艦の設定
*敵再出現
潜水艦Y=80+乱数(6)*10
潜水艦1を、ラベルとして、作成
その、テキストは、「┻」
赤判定=乱数(10)
もし、赤判定=0ならば、(
   潜水艦1の、フォント色は、赤色
   赤スイッチ=オン
)
違えば、潜水艦1の、フォント色は、青色
その、Xは、潜水艦X
その、Yは、潜水艦Y
敵移動
待機

'自機の移動
*キーイベント
もし、弾判定=オフなら、
(
   もし、押されたキーが、右キーなら、
   (
   cx=cx+5
   もし、cx>235ならば、cx=235
   自機の、Xは、cx
   敵移動を、呼ぶ
   )
   もし、押されたキーが、左キーなら、
   (
   cx=cx-5
      もし、cx<0ならば、cx=0
   自機の、Xは、cx
   敵移動を、呼ぶ
   )
   もし、押されたキーが、シフトキーなら、
   (   
      弾判定=オン
      弾を、ラベルとして、作成
      その、テキストは、「━」
      その、フォントサイズは、8
      sx=cx
      sy=20
      その、Xは、sx
      その、Yは、sy
         25回(
            ファジイ=乱数(2)-1
            sx=sx+ファジイ
            sy=sy+5
            弾の、Xは、sx
            弾の、Yは、sy
            0.01秒、待つ
            もし、潜水艦X=sxならば、(
               もし、潜水艦Y=syならば、(
                  弾の、オブジェクト破壊
                  潜水艦1の、フォント色は、赤色
                  潜水艦1の、テキストは、「ド」
                  0.2秒、待つ
                  潜水艦1の、テキストは、「カ」
                  0.2秒、待つ
                  潜水艦1の、テキストは、「ン」
                  0.2秒、待つ
                  潜水艦1の、オブジェクト破壊
                  弾判定=オフ
                  敵破壊へ、飛ぶ
               )
            )
         )
   弾の、オブジェクト破壊
   弾判定=オフ
   敵移動を、呼ぶ
   )
)
戻る

*敵移動
Zを、Aから、255まで、繰り返す(
   A=Z
   潜水艦X=Z
   潜水艦1の、Xは、潜水艦X
   0.01秒、待つ
)
A=0
潜水艦1の、オブジェクト破壊
敵再出現へ、飛ぶ

*敵破壊
もし、赤スイッチ=オンならば、スコア=スコア+50
違えば、スコア=スコア+10
スコア表示の、テキストは、「SCORE {スコア}」
A=0
赤スイッチ=オフ
敵再出現へ、飛ぶ

*終了
おわり



▲[ 169 ] / ▼[ 171 ]
NO.170  Re[1]: ひまわり初?シューティングゲーム
□投稿者/ ターコイズ -(2002/01/12(Sat) 19:08:00)
□U R L/
おおっ!無理かと思われたシューティングゲームですね!
なんか、昔の某フリーソフトを思いだします。
海の敵を倒したら空の敵が出てきて、それも倒したら宇宙にすっ飛んでゆく…(わかる人激募集)

えーと、システムの方なんですが、ちょっとした誤差も弾いてしまうのは痛いです。
もっと曖昧さをつけないと、超難しいゲームになっちゃいます。てかなってます?



▲[ 170 ] / 返信無し
NO.171  Re[2]: ひまわり初?シューティングゲーム
□投稿者/ lino -(2002/01/12(Sat) 19:38:27)
□U R L/
おもしろかったです。
シンプルだけどはまりそうです。でも、難しい。
命中しているようで命中しなくて……。

遊んでる途中で「Stack Overflow」と言うエラーがでて、フリーズしました。
私のPCだけで起きた現象かもしれませんが、一応ご報告します。(Win98SEです)








▲[ 169 ] / ▼[ 173 ]
NO.172  難易度調整版
□投稿者/ ムロジェク -(2002/01/12(Sat) 21:36:57)
□U R L/
皆さんレス有難うございます。
当たり判定が厳しいというのは僕も思っていたことです。潜水艦Xというのが潜水艦のX座標でsxというのが魚雷のX座標で 潜水艦X-4<sx<潜水艦X+4ならば、 という風に出来ればもっと当たり判定を大きく出来るのですが、なぜかこう書くと上手く動作しないので(バグでしょうか)やむなく座標ピンポイントにしたのですが、下のように
もし、潜水艦X-4<sxならば、(
  もし、sx<潜水艦X+4ならば、(
と2行に分けると上手く行く事が分かりました。しかしこれだと今度は魚雷が命中しすぎて逆に面白くないので(笑)魚雷のユラユラ加減をすこし高め自機の移動速度を少し遅くしました。これでは簡単すぎる、または難しすぎるという場合はここら変の数字をいじってみてください、当たり判定を3にしてみたり、自機の移動速度を2にしてみてもまた面白いです。今後は敵の動作パターンの複雑化や敵の数の増加などが出来たらいいと思っています。

>エラーがでて、フリーズしました。
えっ本当ですか。僕のところではエラーは出た事が無いのですが…、すみませんが原因はちょっと分かりません…。このプログラムは終了するのに少し時間がかかるのですが、もしかしたら何か関係が有るのかもしれません。処理が重過ぎるのでしょうか?

それでは以下、難易度調整版です、コメントを少し増やしました。
'-------------------------------------
'チープな潜水艦シューティングゲーム改
'-------------------------------------
'母艦の設定
母艦の、タイトルは、「潜水艦」
母艦の、幅は、250
母艦の、高さは、150
母艦の、リサイズは、オフ
母艦の、キー押した時を、キーイベントに、設定
終了に、終了処理設定'終了に時間かかります
空=RGB(255,80,10)
空で、画面クリア

*リセット
'変数の設定
スコア=0
A=1
cx=110
弾判定=オフ
左キー = 37
右キー = 39
シフトキー=32
海赤緑=200
海青=255
海深上=28
海深下=38

'画面の設定
塗り色=白色
ペン色=白色
(55,5)から、(105,45)へ、円形
16回(
   塗り色=RGB(海赤緑,海赤緑,255)
   ペン色=RGB(海赤緑,海赤緑,255)
   (0,海深上)から、(260,海深下)へ、四角形
   海赤緑=海赤緑-10
   海深上=海深上+10
   海深下=海深下+10
)

'スコア表示の設定
スコア表示を、ラベルとして、作成
その、テキストは、「SCORE {スコア}」
その、フォントサイズは、9
その、Xは、170
その、Yは、0

'自機の設定
自機を、ラベルとして、作成
その、テキストは、「┻」
その、Xは、cx
その、Yは、20

'敵潜水艦の設定
*敵再出現
潜水艦Y=110+(乱数(5)-2)*10
潜水艦1を、ラベルとして、作成
その、テキストは、「┻」
赤判定=乱数(10)'赤潜水艦の出現率
もし、赤判定=0ならば、(
   潜水艦1の、フォント色は、赤色
   赤スイッチ=オン
)
違えば、潜水艦1の、フォント色は、青色
その、Xは、潜水艦X
その、Yは、潜水艦Y
敵移動
待機

'自機の移動
*キーイベント
もし、弾判定=オフなら、
(
   もし、押されたキーが、右キーなら、
   (
   cx=cx+3'自機の右への移動速度
   もし、cx>235ならば、cx=235
   自機の、Xは、cx
   敵移動を、呼ぶ
   )
   もし、押されたキーが、左キーなら、
   (
   cx=cx-3'自機の左への移動速度
      もし、cx<0ならば、cx=0
   自機の、Xは、cx
   敵移動を、呼ぶ
   )
   もし、押されたキーが、シフトキーなら、
   (   
      弾判定=オン
      弾を、ラベルとして、作成
      その、テキストは、「━」
      その、フォントサイズは、8
      sx=cx
      sy=20
      その、Xは、sx
      その、Yは、sy
         25回(
            ファジイ=乱数(7)-3'魚雷のユラユラ加減の調整
            sx=sx+ファジイ
            sy=sy+5
            弾の、Xは、sx
            弾の、Yは、sy
            0.03秒、待つ
            もし、潜水艦X-4<sxならば、('敵潜水艦の当たり判定
               もし、sx<潜水艦X+4ならば、('敵潜水艦の当たり判定
                  もし、潜水艦Y=syならば、(
                     弾の、オブジェクト破壊
                     潜水艦1の、フォント色は、赤色
                     潜水艦1の、テキストは、「ド」
                     0.1秒、待つ
                     潜水艦1の、テキストは、「カ」
                     0.1秒、待つ
                     潜水艦1の、テキストは、「ン」
                     0.1秒、待つ
                     潜水艦1の、オブジェクト破壊
                     弾判定=オフ
                     敵破壊へ、飛ぶ
                  )
               )
            )
         )
   弾の、オブジェクト破壊
   弾判定=オフ
   敵移動を、呼ぶ
   )
)
戻る

*敵移動
Zを、Aから、255まで、繰り返す(
   A=Z
   潜水艦X=Z
   潜水艦1の、Xは、潜水艦X
   0.001秒、待つ
)
A=0
潜水艦1の、オブジェクト破壊
敵再出現へ、飛ぶ

*敵破壊
もし、赤スイッチ=オンならば、スコア=スコア+50
違えば、スコア=スコア+10
スコア表示の、テキストは、「SCORE {スコア}」
A=0
赤スイッチ=オフ
敵再出現へ、飛ぶ

*終了
おわり





▲[ 172 ] / 返信無し
NO.173  Re[2]: 難易度調整版
□投稿者/ moka -(2002/01/12(Sat) 22:24:41)
□U R L/ http://www.geocities.jp/moka21/teatime/
当たり判定が広がって、弾が揺れて、いい具合ですね。

判定部分の書き方は、
   もし、(潜水艦X-4<sx)かつ(sx<潜水艦X+4)ならば、〜
でいけます。
もし文は、左右の式を比べるので、
『潜水艦X-4<sx<潜水艦X+4』とはできないんだと思います。

あと、弾数制限があって、赤艦を倒すと弾が増える、とかどうです?



▲[ 169 ] / ▼[ 186 ]
NO.184  エラーについて
□投稿者/ ムロジェク -(2002/01/13(Sun) 11:54:28)
□U R L/
linoさんの書き込みにある「Stack Overflow」というエラーが僕の所でも出ました。その後に「不正な処理を行ったので強制終了されます」と出てしまいました。原因が分からないです…。誰か分かる人がいたら教えて下さい…。長時間やっていると出るのでしょうか?

>mokaさん
うぐっ、そのような書き方が有ったのですね。まだまだ初心者だ僕…。
弾数制限というのも面白いですね。もっと様々な要素を盛り込んでグ○ディウスみたいなシューティングがひまわりで作れたら…と密かな野望を抱いています。(^ ^ ;



▲[ 184 ] / 返信無し
NO.186  Re[2]: エラーについて
□投稿者/ クジラ飛行机 -(2002/01/13(Sun) 13:16:58)
□U R L/ http://www.text2music.com
> linoさんの書き込みにある「Stack Overflow」というエラーが僕の所でも出ました。その後に「不正な処理を行ったので強制終了されます」と出てしまいました。原因が分からないです…。誰か分かる人がいたら教えて下さい…。長時間やっていると出るのでしょうか?

またまた、作者の余計なおせっかい講座です。

問題1:’===============================

これは、ラベルから、サブルーチンを、呼んだあと、
『戻る』命令で、戻らず、『飛ぶ』で、別の個所にジャンプしているのが原因です。

具体的には、
『敵移動』(=敵移動を、呼ぶ)で、敵移動を読んだ後、『戻る』で、
戻らずに、『敵再出現へ、飛ん』でいるのが、原因です。


問題2:’=============================

それと、難しい問題で、
敵移動処理の、繰り返しの途中で、キーが押されたとき、
キーイベントが呼ばれ、キーイベントの中でも、敵移動を、呼び出しているので、
これが、スタック(繰り返しや呼びだしを記録しておく領域)の中で、
スタックを呼び・・・

それで、オーバーフローのエラーが出た訳です。
これを、回避するには、

敵移動で、『繰り返し』を使うのではなく、

*敵移動繰り返し処理
  ’移動処理
  もし、右端までいったならば、敵再出現へ、飛ぶ
  違えば、敵移動繰り返し処理

の、ように、繰り返しや、もしの( )の中を、出たり入ったりしないようにすると、
うまく動作すると思います。

追記:’==========================

あと、これは、ひまわりの構造に関することなのですが・・・
敵出現と共に、ラベル部品を、作ったり、壊したりしてますよね。

プログラムの中で、部品を「破壊」する命令ですが、
あれは実は、完全に破壊しているわけではなくて、消したように見せている
だけなので、出来たら、使いまわしする方が、効率がよくなります。



▲[ 169 ] / ▼[ 198 ] ▼[ 200 ]
NO.196  バグ修正&改良版
□投稿者/ ムロジェク -(2002/01/13(Sun) 20:45:57)
□U R L/
クジラさん有難うございます。勉強になりました。潜水艦はオブジェクト破壊せずにすべて使いまわすことにし、敵移動を書き換えました。おかげでエラーは出なくなり、処理がかなり軽くなり、終了もすんなり出来るようになりました。
あとタイトルを変更しmokaさんのアドバイスを受け30発の弾数制限をつけてみました。タイトル通りにイエローサブマリン(笑)を破壊すると弾数が5増えます。ついでにハイスコア記録もつけてみました。INIファイルが自動作成されます。

それでは以下プログラム本文です。
'-------------------------------------
'チープな潜水艦シューティングゲーム改
'-------------------------------------
'母艦の設定
母艦の、タイトルは、「Yellow Submarine」
母艦の、幅は、250
母艦の、高さは、150
母艦の、リサイズは、オフ
母艦の、キー押した時を、キーイベントに、設定
終了へ、終了処理設定

*リセット
空=RGB(255,80,10)
空で、画面クリア
'変数の設定
A=0
cx=110
弾数=30
スコア=0
弾判定=オフ
黄スイッチ=オフ
左キー = 37
右キー = 39
シフトキー=32
海赤緑=200
海青=255
海深上=28
海深下=38

'INIファイルを読む
『hiscore.ini』の、INIファイル開く
『スコアデータ』の『ハイスコア』を、INIファイル読む
ハイスコア=それ
INIファイル閉じる

'画面の設定
塗り色=白色
ペン色=白色
(48,5)から、(98,45)へ、円形
16回(
   塗り色=RGB(海赤緑,海赤緑,255)
  ペン色=RGB(海赤緑,海赤緑,255)
  (0,海深上)から、(260,海深下)へ、四角形
  海赤緑=海赤緑-10
  海深上=海深上+10
   海深下=海深下+10
)

'スコア表示の設定
スコア表示を、ラベルとして、作成
その、テキストは、「SCORE {スコア}」
その、フォントサイズは、9
その、Xは、190
その、Yは、0

'ハイスコア表示の設定
ハイスコア表示を、ラベルとして、作成
その、テキストは、「HI-SCORE {ハイスコア}」
その、フォントサイズは、9
その、Xは、90
その、Yは、0

'弾数表示の設定
弾数ラベルを、ラベルとして、作成
その、テキストは、「弾数 {弾数}」
その、フォントサイズは、9
その、Xは、5
その、Yは、0

'自機の設定
自機を、ラベルとして、作成
その、テキストは、「┻」
その、Xは、cx
その、Yは、20

'敵潜水艦の設定
潜水艦1を、ラベルとして、作成
その、テキストは、「┻」
*敵再出現
潜水艦Y=110+(乱数(5)-2)*10
黄判定=乱数(3)'黄潜水艦の出現率
もし、黄判定=0ならば、(
   潜水艦1の、フォント色は、黄色
   黄スイッチ=オン
)
違えば、潜水艦1の、フォント色は、青色
潜水艦1の、Yは、潜水艦Y
敵移動
待機

'自機の移動
*キーイベント
もし、弾判定=オフなら、(
   もし、押されたキーが、右キーなら、(
     cx=cx+3'自機の右への移動速度
      もし、cx>235ならば、cx=235
      自機の、Xは、cx
      敵移動を、呼ぶ
  )
  もし、押されたキーが、左キーなら、(
      cx=cx-3'自機の左への移動速度
      もし、cx<0ならば、cx=0
      自機の、Xは、cx
      敵移動を、呼ぶ
  )
  もし、押されたキーが、シフトキーなら、(   
      弾数=弾数-1
      弾数ラベルの、テキストは、「弾数 {弾数}」
    弾判定=オン
    弾を、ラベルとして、作成
    その、テキストは、「━」
    その、フォントサイズは、8
    sx=cx
    sy=20
    その、Xは、sx
    その、Yは、sy
    25回(
       ファジイ=乱数(7)-3'魚雷のユラユラ加減の調整
      sx=sx+ファジイ
      sy=sy+5
      弾の、Xは、sx
      弾の、Yは、sy
      0.03秒、待つ
      もし、(潜水艦X-5<sx)かつ(sx<潜水艦X+5)ならば、('敵潜水艦の当たり判定
         もし、潜水艦Y=syならば、(
        弾の、オブジェクト破壊
        潜水艦1の、フォント色は、赤色
        潜水艦1の、テキストは、「ド」
        0.13秒、待つ
        潜水艦1の、テキストは、「カ」
        0.13秒、待つ
        潜水艦1の、テキストは、「ン」
        0.13秒、待つ
        弾判定=オフ
        敵破壊へ、飛ぶ
        )
      )
    )
  弾の、オブジェクト破壊
  弾判定=オフ
   もし、弾数=0ならば、弾切れへ、飛ぶ
  敵移動を、呼ぶ
   )
)
戻る

*敵移動
潜水艦X=A
潜水艦1の、Xは、潜水艦X
A=A+1
0.001秒、待つ   
もし、A=255ならば、(
   A=0
   敵再出現へ、飛ぶ
)
違えば、敵移動

*敵破壊
潜水艦1の、テキストは、「┻」
もし、黄スイッチ=オンならば、(
   弾数=弾数+5
   弾数ラベルの、テキストは、「弾数 {弾数}」
)
違えば、(
   スコア=スコア+10
   スコア表示の、テキストは、「SCORE {スコア}」
)
A=0
黄スイッチ=オフ
もし、弾数=0ならば、弾切れへ、飛ぶ
敵再出現へ、飛ぶ

*弾切れ
「魚雷が尽きてしまいました、GAMEOVER」と、言う
「再挑戦しますか?」と、二択
もし、それが、はいならば、(
   INI書き込む
   オブジェクト全破壊
   リセットへ、飛ぶ
)
違えば、(INI書き込む。おわり)

*終了
INI書き込む
おわり

*INI書き込む
もし、ハイスコア<スコアならば、(
   『hiscore.ini』の、INIファイル開く
   それ=スコア
   『スコアデータ』の『ハイスコア』へ、INIファイル書く
   INIファイル閉じる
   戻る
)
違えば、戻る



▲[ 196 ] / 返信無し
NO.198  さらに提案
□投稿者/ moka -(2002/01/13(Sun) 21:31:55)
□U R L/ http://www.geocities.jp/moka21/teatime/
いい感じですねぇ。

黄艦はスピードが速いとか、一定数倒したら夜になって星空が綺麗とか、
敵も魚雷を発射するとか、どうでしょう?



▲[ 196 ] / 返信無し
NO.200  Re[2]: バグ修正&改良版
□投稿者/ lino -(2002/01/13(Sun) 22:18:42)
□U R L/
バグ修正&改良版、待ってました!
スコア記録もできて、やりがいが増しますね。

mokaさんのご提案のように、夜になったり、敵艦が攻撃するのもいいですね。

質問なんですが、弾の残りがあるのに、敵艦が出現しなくなるのは何故ですか?



▲[ 169 ] / 返信無し
NO.204  バグ修正追加
□投稿者/ ムロジェク -(2002/01/14(Mon) 00:06:33)
□U R L/
>弾の残りがあるのに、敵艦が出現しなくなるのは何故ですか?
報告有難うございます。どうやら*敵移動で敵再出現へ飛ぶ条件がA=255となっていたのがまずかったようです。これだとキーを押した時にA=A+1以下が実行されずに次の処理へ移ってしまった時にAが255を超えてしまい起こった現象のようです。A>255と書いたらうまく行きました。多分これで問題ないと思います。まだこれ以外にバグが有ったら報告していただければ幸いです。(バグがホントに多いなぁ…)
これから少し忙しくなるのでここへ来る回数が減るかもしれませんが、また改良版をつくったら書き込みたいと思っています。背景変化とか、敵の攻撃とか、いくらでも改良のし甲斐は有ると思うのでこれからどう改良しようかと考えると楽しいです。

それでは、修正個所は少ないのですが一応修正版です。上のバグ修正&改良版を書き換えてもかまいません。
'-------------------------------------
'チープな潜水艦シューティングゲーム改
'-------------------------------------
'母艦の設定
母艦の、タイトルは、「Yellow Submarine」
母艦の、幅は、250
母艦の、高さは、150
母艦の、リサイズは、オフ
母艦の、キー押した時を、キーイベントに、設定
終了へ、終了処理設定

*リセット
空=RGB(255,80,10)
空で、画面クリア
'変数の設定
A=0
cx=110
弾数=30
スコア=0
弾判定=オフ
黄スイッチ=オフ
左キー = 37
右キー = 39
シフトキー=32
海赤緑=200
海青=255
海深上=28
海深下=38

'INIファイルを読む
『hiscore.ini』の、INIファイル開く
『スコアデータ』の『ハイスコア』を、INIファイル読む
ハイスコア=それ
INIファイル閉じる

'画面の設定
塗り色=白色
ペン色=白色
(48,5)から、(98,45)へ、円形
16回(
   塗り色=RGB(海赤緑,海赤緑,255)
  ペン色=RGB(海赤緑,海赤緑,255)
  (0,海深上)から、(260,海深下)へ、四角形
  海赤緑=海赤緑-10
  海深上=海深上+10
   海深下=海深下+10
)

'スコア表示の設定
スコア表示を、ラベルとして、作成
その、テキストは、「SCORE {スコア}」
その、フォントサイズは、9
その、Xは、190
その、Yは、0

'ハイスコア表示の設定
ハイスコア表示を、ラベルとして、作成
その、テキストは、「HI-SCORE {ハイスコア}」
その、フォントサイズは、9
その、Xは、90
その、Yは、0

'弾数表示の設定
弾数ラベルを、ラベルとして、作成
その、テキストは、「弾数 {弾数}」
その、フォントサイズは、9
その、Xは、5
その、Yは、0

'自機の設定
自機を、ラベルとして、作成
その、テキストは、「┻」
その、Xは、cx
その、Yは、20

'敵潜水艦の設定
潜水艦1を、ラベルとして、作成
その、テキストは、「┻」
*敵再出現
潜水艦Y=110+(乱数(5)-2)*10
黄判定=乱数(3)'黄潜水艦の出現率
もし、黄判定=0ならば、(
   潜水艦1の、フォント色は、黄色
   黄スイッチ=オン
)
違えば、潜水艦1の、フォント色は、青色
潜水艦1の、Xは、0
潜水艦1の、Yは、潜水艦Y
敵移動
待機

'自機の移動
*キーイベント
もし、弾判定=オフなら、(
   もし、押されたキーが、右キーなら、(
     cx=cx+3'自機の右への移動速度
      もし、cx>235ならば、cx=235
      自機の、Xは、cx
      敵移動を、呼ぶ
  )
  もし、押されたキーが、左キーなら、(
      cx=cx-3'自機の左への移動速度
      もし、cx<0ならば、cx=0
      自機の、Xは、cx
      敵移動を、呼ぶ
  )
  もし、押されたキーが、シフトキーなら、(   
      弾数=弾数-1
      弾数ラベルの、テキストは、「弾数 {弾数}」
    弾判定=オン
    弾を、ラベルとして、作成
    その、テキストは、「━」
    その、フォントサイズは、8
    sx=cx
    sy=20
    その、Xは、sx
    その、Yは、sy
    25回(
       ファジイ=乱数(7)-3'魚雷のユラユラ加減の調整
      sx=sx+ファジイ
      sy=sy+5
      弾の、Xは、sx
      弾の、Yは、sy
      0.03秒、待つ
      もし、(潜水艦X-5<sx)かつ(sx<潜水艦X+5)ならば、('敵潜水艦の当たり判定
         もし、潜水艦Y=syならば、(
        弾の、オブジェクト破壊
        潜水艦1の、フォント色は、赤色
        潜水艦1の、テキストは、「ド」
        0.13秒、待つ
        潜水艦1の、テキストは、「カ」
        0.13秒、待つ
        潜水艦1の、テキストは、「ン」
        0.13秒、待つ
        弾判定=オフ
        敵破壊へ、飛ぶ
        )
      )
    )
  弾の、オブジェクト破壊
  弾判定=オフ
   もし、弾数=0ならば、弾切れへ、飛ぶ
  敵移動を、呼ぶ
   )
)
戻る

*敵移動
潜水艦X=A
潜水艦1の、Xは、潜水艦X
A=A+1
0.001秒、待つ   
もし、A>260ならば、(
   A=0
   敵再出現へ、飛ぶ
)
違えば、敵移動

*敵破壊
潜水艦1の、テキストは、「┻」
もし、黄スイッチ=オンならば、(
   弾数=弾数+5
   弾数ラベルの、テキストは、「弾数 {弾数}」
)
違えば、(
   スコア=スコア+10
   スコア表示の、テキストは、「SCORE {スコア}」
)
A=0
黄スイッチ=オフ
もし、弾数=0ならば、弾切れへ、飛ぶ
敵再出現へ、飛ぶ

*弾切れ
「魚雷が尽きてしまいました、GAMEOVER」と、言う
「再挑戦しますか?」と、二択
もし、それが、はいならば、(
   INI書き込む
   オブジェクト全破壊
   リセットへ、飛ぶ
)
違えば、(INI書き込む。おわり)

*終了
INI書き込む
おわり

*INI書き込む
もし、ハイスコア<スコアならば、(
   『hiscore.ini』の、INIファイル開く
   それ=スコア
   『スコアデータ』の『ハイスコア』へ、INIファイル書く
   INIファイル閉じる
   戻る
)
違えば、戻る






- Child Tree -