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

MESSAGE ブロック崩し(β版) /ムロジェク (02/03/25(Mon) 00:41) [646]
......MESSAGE Re[1]: ブロック崩し(β版) /のえる (02/03/25(Mon) 01:08) [647]
......MESSAGE Re[1]: ブロック崩し(β版) /moka (02/03/25(Mon) 02:46) [650]
......MESSAGE まだβ版です。 /ムロジェク (02/03/25(Mon) 23:25) [655]
............MESSAGE 感想 /クジラ飛行机@作者 (02/03/26(Tue) 02:08) [656]
......MESSAGE 少し修正。 /ムロジェク (02/03/26(Tue) 12:42) [663]
............MESSAGE 得点に変化を /moka (02/03/28(Thu) 10:43) [666]
..................MESSAGE Re[3]: 得点に変化を /q (02/03/28(Thu) 13:59) [671]
......MESSAGE 一応正式版。 /ムロジェク (02/03/28(Thu) 14:38) [672]
......MESSAGE 正式版その2。 /ムロジェク (02/03/28(Thu) 21:39) [675]
......MESSAGE 先にやられてしまった!!! /のぐちゃん (02/03/29(Fri) 12:31) [677]
......MESSAGE 細かな変更。 /ムロジェク (02/03/30(Sat) 09:06) [684]


親記事 / ▼[ 647 ] ▼[ 650 ] ▼[ 655 ] ▼[ 663 ] ▼[ 672 ] ▼[ 675 ] ▼[ 677 ] ▼[ 684 ]
NO.646  ブロック崩し(β版)
□投稿者/ ムロジェク -(2002/03/25(Mon) 00:41:52)
□U R L/
こんにちは、久々のムロジェクです。休みを利用してひまわりでブロック崩しを作成してみました。詳しくは下のコメントにて。

{---プログラム掲示板投稿フォーム---
【ソフト名】ブロック崩し(バージョン 0.90)
【作 成 者】ムロジェク
【種  別】フリーソフトウェア
【ひまわりのバージョン】ver.1.33
【転  載】可
【改変運用】可です。どんどんカスタマイズしてください。
【ひまわり本体への梱包】可
【実行時に利用作成するファイル】無
【コメント】
←→で左右移動、スペースキーでボールの発射です。ボールを跳ね返す時バーの端のほうで打ち返すとボールの軌道や速さがランダムに変化します。
このプログラムは動作速度や当たり判定にまだまだ問題があるβ版です。なにかアドバイスや改善方法等有れば書き込んでいただけると嬉しいです。
---投稿フォームここまで---}

'母艦の設定
母艦の、タイトルは、「ブロック崩し(β版)」
母艦の、幅は、200
母艦の、高さは、300
母艦の、キー押した時を、キーイベントに、設定
母艦の、リサイズは、オフ

*リトライ

'キー設定
右キー=39
左キー=37
発射キー=32

'変数設定
スコア=0
自機X=80
自機Y=260
ボールX=97
ボールY=252
ボール状態=0
ボール発射=オフ
ブロック番号=0
ブロックX=33
ブロックY=50
ベクトルX=2
ベクトルY=2

'スコアラベルの作成
スコアラベルを、ラベルとして、作成
その、テキストは、「SCORE {スコア}」
その、Yは、1

'枠線描画
(0,20)へ、移動
(200,20)へ、線

'バーの作成
自機バーを、ラベルとして、作成
その、テキストは、「〓〓〓〓」
その、フォントサイズは、8
その、Xは、自機X
その、Yは、自機Y

'ボールの作成
ボールを、ラベルとして、作成
その、テキストは、「●」
その、フォントサイズは、8
その、Xは、ボールX
その、Yは、ボールY

'ブロックの作成
7回(
   「ブロック{ブロック番号}を、ラベルとして、作成」を、ひまわりする
   その、テキストは、「■」
   その、Xは、ブロックX
   その、Yは、ブロックY
   判定X#ブロック番号=ブロックX
   判定Y#ブロック番号=ブロックY
   ブロック番号=ブロック番号+1
   ブロックX=ブロックX+20
)
ブロックX=33
ブロックY=ブロックY+20
7回(
   「ブロック{ブロック番号}を、ラベルとして、作成」を、ひまわりする
   その、テキストは、「■」
   その、Xは、ブロックX
   その、Yは、ブロックY
   判定X#ブロック番号=ブロックX
   判定Y#ブロック番号=ブロックY
   ブロック番号=ブロック番号+1
   ブロックX=ブロックX+20
)
ブロックX=33
ブロックY=ブロックY+20
7回(
   「ブロック{ブロック番号}を、ラベルとして、作成」を、ひまわりする
   その、テキストは、「■」
   その、Xは、ブロックX
   その、Yは、ブロックY
   判定X#ブロック番号=ブロックX
   判定Y#ブロック番号=ブロックY
   ブロック番号=ブロック番号+1
   ブロックX=ブロックX+20
)

待機

*キーイベント
'左右移動設定
もし、押されたキーが、右キーならば、(
   自機X=自機X+10
   もし、自機X>160ならば、自機X=160
   自機バーの、Xは、自機X
   ボール状態で、条件分岐。
   右上の時、ボール移動右上
   右下の時、ボール移動右下
   左上の時、ボール移動左上
   左下の時、ボール移動左下
   0の時、(
      ボールX=ボールX+10
      もし、ボールX>178ならば、ボールX=178
      ボールの、Xは、ボールX
   )
   待機
)
もし、押されたキーが、左キーならば、(
   自機X=自機X-10
   もし、自機X<0ならば、自機X=0
   自機バーの、Xは、自機X
   ボール状態で、条件分岐。
   右上の時、ボール移動右上
   右下の時、ボール移動右下
   左上の時、ボール移動左上
   左下の時、ボール移動左下
   0の時、(
      ボールX=ボールX-10
      もし、ボールX<18ならば、ボールX=18
      ボールの、Xは、ボールX
   )
   待機
)

'ボールの発射
もし、押されたキーが、発射キーならば、(
   もし、ボール発射=オフならば、(
      ボール移動右上
      ボール発射=オン
   )
   違えば、待機
)

*ボール移動右上
ボール状態=右上
ボールX=ボールX+ベクトルX
ボールY=ボールY-ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX>195ならば、ボール移動左上
もし、ボールY<20ならば、ボール移動右下
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動右上

*ボール移動右下
ボール状態=右下
ボールX=ボールX+ベクトルX
ボールY=ボールY+ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX>195ならば、ボール移動左下
もし、(自機X-1<ボールX)かつ(自機X+42>ボールX)ならば、(
   もし、(自機Y-4<ボールY)かつ(自機Y>ボールY)ならば、(
      もし、(自機X+11<ボールX)かつ(自機X+30>ボールX)でなければ、(
         ベクトルX=4-乱数(3)
         ベクトルY=4-乱数(3)
      )
      ボール移動右上
   )
)
もし、ボールY>320ならば、ゲームオーバーへ、飛ぶ
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動右下

*ボール移動左上
ボール状態=左上
ボールX=ボールX-ベクトルX
ボールY=ボールY-ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX<0ならば、ボール移動右上
もし、ボールY<20ならば、ボール移動左下
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動左上

*ボール移動左下
ボール状態=左下
ボールX=ボールX-ベクトルX
ボールY=ボールY+ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX<0ならば、ボール移動右下
もし、(自機X-1<ボールX)かつ(自機X+42>ボールX)ならば、(
   もし、(自機Y-4<ボールY)かつ(自機Y>ボールY)ならば、(
      もし、(自機X+11<ボールX)かつ(自機X+30>ボールX)でなければ、(
         ベクトルX=4-乱数(3)
         ベクトルY=4-乱数(3)
      )
      ボール移動左上
   )
)
もし、ボールY>320ならば、ゲームオーバーへ、飛ぶ
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動左下

*接触判定
nを、0から、20まで、繰り返す(
   もし、(判定X#n+1<ボールX)かつ(判定X#n+13>ボールX)ならば、(
      もし、(判定Y#n+3<ボールY)かつ(判定Y#n+11>ボールY)ならば、(
      「ブロック{n}の、可視は、オフ」を、ひまわりする
      判定X#n=300
      スコア=スコア+10
      スコアラベルの、テキストは、「SCORE {スコア}」
      ボール状態で、条件分岐
      右上の時、ボール移動右下
      右下の時、ボール移動右上
      左上の時、ボール移動左下
      左下の時、ボール移動左上
      )
   ) 
   もし、(判定X#n+3<ボールX)かつ(判定X#n+11>ボールX)ならば、(
      もし、(判定Y#n+1<ボールY)かつ(判定Y#n+13>ボールY)ならば、(
      「ブロック{n}の、可視は、オフ」を、ひまわりする
      判定X#n=300
      スコア=スコア+10
      スコアラベルの、テキストは、「SCORE {スコア}」
      ボール状態で、条件分岐
      右上の時、ボール移動左上
      右下の時、ボール移動左下
      左上の時、ボール移動右上
      左下の時、ボール移動右下
      )
   ) 
)
戻る

*ゲームオーバー
「GAME OVER」と、言う
「再チャレンジ?」と、二択
もし、それが、はいならば、(
   スコア=0
   オブジェクト全破壊
   リトライへ、飛ぶ
)
違えば、終わり



▲[ 646 ] / 返信無し
NO.647  Re[1]: ブロック崩し(β版)
□投稿者/ のえる -(2002/03/25(Mon) 01:08:06)
□U R L/ http://members.tripod.co.jp/~my_tears/
いやー、やられた。
定番なので、そのうちやられるかと思ってましたけど...。

忙しいのに、遊んじゃったし...(^−^。
うふふー。



▲[ 646 ] / 返信無し
NO.650  Re[1]: ブロック崩し(β版)
□投稿者/ moka -(2002/03/25(Mon) 02:46:26)
□U R L/ http://www.geocities.jp/moka21/teatime/
いいですねぇ〜。
β版の、ツッコミどころがあるのもいいです。(^_^)

●プレイ中に左右キー以外を押すと、ボールが右上に飛ぶ。
> 'ボールの発射
> もし、押されたキーが、発射キーならば、(
> ・・・
> )
待機。
'↑『待機』or『戻る』が必要ですね。

●ブロックは一気に並べちゃおう。
{▼サンプル}
ブロックX=33
ブロックY=50
21回(
   「ブロック{ブロック番号}を、ラベルとして、作成」を、ひまわりする
   その、テキストは、「■」
   その、Xは、ブロックX
   その、Yは、ブロックY
   判定X#ブロック番号=ブロックX
   判定Y#ブロック番号=ブロックY
   ブロック番号=ブロック番号+1
   ブロックX=ブロックX+20
   
   '7個並べたら次の行に移る。
   もし、ブロック番号%7=0ならば、(
      ブロックX=33
      ブロックY=ブロックY+20
   )
)
{▲ここまで}

●レトロな感じもいいですが、ブロックなどのオブジェクトを
カラフルにするのは簡単そうなので、色付けてみてはどうでしょう。

=====

とりあえず、ソースをパッと見た感じのツッコミです。
バージョンアップ楽しみにしてます。頑張ってください。



▲[ 646 ] / ▼[ 656 ]
NO.655  まだβ版です。
□投稿者/ ムロジェク -(2002/03/25(Mon) 23:25:55)
□U R L/
レス有難うございます。
mokaさんのアドバイスに従って一部変更を加えてみました。あとはブロックを全部壊した後の事を考えていなかったので(^^;)少し修正しました。でもまだβ版です。1番の問題は処理速度ですね…。ボールが移動するごとに接触判定をしているのでどうしても重くなってしまいます。何かいい案が有れば書き込んでいただけると嬉しいです。

{---プログラム掲示板投稿フォーム---
【ソフト名】ブロック崩し(バージョン 0.91)
【作 成 者】ムロジェク
【種  別】フリーソフトウェア
【ひまわりのバージョン】ver.1.33
【転  載】可
【改変運用】可です。どんどんカスタマイズしてください。
【ひまわり本体への梱包】可
【実行時に利用作成するファイル】無
【コメント】
←→で左右移動、スペースキーでボールの発射です。ボールを跳ね返す時バーの端のほうで打ち返すとボールの軌道や速さがランダムに変化します。
このプログラムは動作速度や当たり判定にまだまだ問題があるβ版です。なにかアドバイスや改善方法等有れば書き込んでいただけると嬉しいです。
---投稿フォームここまで---}

'母艦の設定
黒色で、画面クリア
母艦の、タイトルは、「ブロック崩し(β版)」
母艦の、幅は、200
母艦の、高さは、300
母艦の、キー押した時を、キーイベントに、設定
母艦の、リサイズは、オフ

スコア=0
*リトライ

'キー設定
右キー=39
左キー=37
発射キー=32

'変数設定
自機X=80
自機Y=260
ボールX=97
ボールY=252
ボール状態=0
ボール発射=オフ
ブロック番号=0
ブロックX=33
ブロックY=50
ベクトルX=2
ベクトルY=2
ブロック色=赤色
色カウンタ=0

'スコアラベルの作成
スコアラベルを、ラベルとして、作成
その、フォント色は、白色
その、テキストは、「SCORE {スコア}」
その、Yは、1

'枠線描画
ペン色=白色
(0,20)へ、移動
(200,20)へ、線

'バーの作成
自機バーを、ラベルとして、作成
その、テキストは、「〓〓〓〓」
その、フォント色は、緑色
その、フォントサイズは、8
その、Xは、自機X
その、Yは、自機Y

'ボールの作成
ボールを、ラベルとして、作成
その、テキストは、「●」
その、フォント色は、白色
その、フォントサイズは、8
その、Xは、ボールX
その、Yは、ボールY

'ブロックの作成
ブロックX=33
ブロックY=50
21回(
   「ブロック{ブロック番号}を、ラベルとして、作成」を、ひまわりする
   その、テキストは、「■」
    その、フォント色は、ブロック色
   その、Xは、ブロックX
   その、Yは、ブロックY
   判定X#ブロック番号=ブロックX
   判定Y#ブロック番号=ブロックY
   ブロック番号=ブロック番号+1
   ブロックX=ブロックX+20
   
   '7個並べたら次の行に移る。
   もし、ブロック番号%7=0ならば、(
          もし、色カウンタ=0ならば、ブロック色=黄色
         もし、色カウンタ=1ならば、ブロック色=青色
      ブロックX=33
      ブロックY=ブロックY+20
         色カウンタ=1
   )
)


待機

*キーイベント

'左右移動設定
もし、押されたキーが、右キーならば、(
   自機X=自機X+10
   もし、自機X>160ならば、自機X=160
   自機バーの、Xは、自機X
   ボール状態で、条件分岐。
   右上の時、ボール移動右上
   右下の時、ボール移動右下
   左上の時、ボール移動左上
   左下の時、ボール移動左下
   0の時、(
      ボールX=ボールX+10
      もし、ボールX>178ならば、ボールX=178
      ボールの、Xは、ボールX
   )
   待機
)
もし、押されたキーが、左キーならば、(
   自機X=自機X-10
   もし、自機X<0ならば、自機X=0
   自機バーの、Xは、自機X
   ボール状態で、条件分岐。
   右上の時、ボール移動右上
   右下の時、ボール移動右下
   左上の時、ボール移動左上
   左下の時、ボール移動左下
   0の時、(
      ボールX=ボールX-10
      もし、ボールX<18ならば、ボールX=18
      ボールの、Xは、ボールX
   )
   待機
)

'ボールの発射
もし、押されたキーが、発射キーならば、(
   もし、ボール発射=オフならば、(
      ボール移動右上
      ボール発射=オン
      待機
   )
   違えば、待機
)
待機

*ボール移動右上
ボール状態=右上
ボールX=ボールX+ベクトルX
ボールY=ボールY-ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX>195ならば、ボール移動左上
もし、ボールY<20ならば、ボール移動右下
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動右上

*ボール移動右下
ボール状態=右下
ボールX=ボールX+ベクトルX
ボールY=ボールY+ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX>195ならば、ボール移動左下
もし、(自機X-5<ボールX)かつ(自機X+46>ボールX)ならば、(
   もし、(自機Y-4<ボールY)かつ(自機Y>ボールY)ならば、(
      もし、(自機X+11<ボールX)かつ(自機X+30>ボールX)でなければ、(
         ベクトルX=4-乱数(3)
         ベクトルY=4-乱数(3)
      )
      ボール移動右上
   )
)
もし、ボールY>320ならば、ゲームオーバーへ、飛ぶ
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動右下

*ボール移動左上
ボール状態=左上
ボールX=ボールX-ベクトルX
ボールY=ボールY-ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX<0ならば、ボール移動右上
もし、ボールY<20ならば、ボール移動左下
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動左上

*ボール移動左下
ボール状態=左下
ボールX=ボールX-ベクトルX
ボールY=ボールY+ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX<0ならば、ボール移動右下
もし、(自機X-5<ボールX)かつ(自機X+46>ボールX)ならば、(
   もし、(自機Y-4<ボールY)かつ(自機Y>ボールY)ならば、(
      もし、(自機X+11<ボールX)かつ(自機X+30>ボールX)でなければ、(
         ベクトルX=4-乱数(3)
         ベクトルY=4-乱数(3)
      )
      ボール移動左上
   )
)
もし、ボールY>320ならば、ゲームオーバーへ、飛ぶ
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動左下

*接触判定
nを、0から、20まで、繰り返す(
   もし、(判定X#n+1<ボールX)かつ(判定X#n+13>ボールX)ならば、(
      もし、(判定Y#n+3<ボールY)かつ(判定Y#n+11>ボールY)ならば、(
      「ブロック{n}の、可視は、オフ」を、ひまわりする
      判定X#n=300
      スコア=スコア+10
      スコアラベルの、テキストは、「SCORE {スコア}」
      もし、スコア%210=0ならば、クリアへ、飛ぶ
      ボール状態で、条件分岐
      右上の時、ボール移動右下
      右下の時、ボール移動右上
      左上の時、ボール移動左下
      左下の時、ボール移動左上
      )
   ) 
   もし、(判定X#n+3<ボールX)かつ(判定X#n+11>ボールX)ならば、(
      もし、(判定Y#n+1<ボールY)かつ(判定Y#n+13>ボールY)ならば、(
      「ブロック{n}の、可視は、オフ」を、ひまわりする
      判定X#n=300
      スコア=スコア+10
      スコアラベルの、テキストは、「SCORE {スコア}」
      もし、スコア%210=0ならば、クリアへ、飛ぶ
      ボール状態で、条件分岐
      右上の時、ボール移動左上
      右下の時、ボール移動左下
      左上の時、ボール移動右上
      左下の時、ボール移動右下
      )
   ) 
)
戻る

*クリア
「CLEAR!」と、言う
オブジェクト全破壊
リトライへ、飛ぶ

*ゲームオーバー
「GAME OVER」と、言う
「再チャレンジ?」と、二択
もし、それが、はいならば、(
   スコア=0
   オブジェクト全破壊
   リトライへ、飛ぶ
)
違えば、終わり 



▲[ 655 ] / 返信無し
NO.656  感想
□投稿者/ クジラ飛行机@作者 -(2002/03/26(Tue) 02:08:30)
□U R L/ http://www.text2music.com
白黒版も、レトロで良かったですが、
カラー版も、これはこれで、レトロで良いですねぇ!
思わず、しばらく遊んでしまいました!
また、ソースが短いのにもびっくりです!



▲[ 646 ] / ▼[ 666 ]
NO.663  少し修正。
□投稿者/ ムロジェク -(2002/03/26(Tue) 12:42:02)
□U R L/
>プレイ中に左右キー以外を押すと、ボールが右上に飛ぶ。
mokaさんからの指摘を修正しました。

{---プログラム掲示板投稿フォーム---
【ソフト名】ブロック崩し(バージョン 0.92)
【作 成 者】ムロジェク
【種  別】フリーソフトウェア
【ひまわりのバージョン】ver.1.33
【転  載】可
【改変運用】可です。どんどんカスタマイズしてください。
【ひまわり本体への梱包】可
【実行時に利用作成するファイル】無
【コメント】
←→で左右移動、スペースキーでボールの発射です。ボールを跳ね返す時バーの端のほうで打ち返すとボールの軌道や速さがランダムに変化します。
このプログラムは動作速度や当たり判定にまだまだ問題があるβ版です。なにかアドバイスや改善方法等有れば書き込んでいただけると嬉しいです。
---投稿フォームここまで---}


'母艦の設定
黒色で、画面クリア
母艦の、タイトルは、「ブロック崩し(β版)」
母艦の、幅は、200
母艦の、高さは、300
母艦の、キー押した時を、キーイベントに、設定
母艦の、リサイズは、オフ

スコア=0
*リトライ

'キー設定
右キー=39
左キー=37
発射キー=32

'変数設定
自機X=80
自機Y=260
ボールX=97
ボールY=252
ボール状態=0
ボール発射=オフ
ブロック番号=0
ブロックX=33
ブロックY=50
ベクトルX=2
ベクトルY=2
ブロック色=赤色
色カウンタ=0

'スコアラベルの作成
スコアラベルを、ラベルとして、作成
その、フォント色は、白色
その、テキストは、「SCORE {スコア}」
その、Yは、1

'枠線描画
ペン色=白色
(0,20)へ、移動
(200,20)へ、線

'バーの作成
自機バーを、ラベルとして、作成
その、テキストは、「〓〓〓〓」
その、フォント色は、緑色
その、フォントサイズは、8
その、Xは、自機X
その、Yは、自機Y

'ボールの作成
ボールを、ラベルとして、作成
その、テキストは、「●」
その、フォント色は、白色
その、フォントサイズは、8
その、Xは、ボールX
その、Yは、ボールY

'ブロックの作成
ブロックX=33
ブロックY=50
21回(
   「ブロック{ブロック番号}を、ラベルとして、作成」を、ひまわりする
   その、テキストは、「■」
    その、フォント色は、ブロック色
   その、Xは、ブロックX
   その、Yは、ブロックY
   判定X#ブロック番号=ブロックX
   判定Y#ブロック番号=ブロックY
   ブロック番号=ブロック番号+1
   ブロックX=ブロックX+20
   
   '7個並べたら次の行に移る。
   もし、ブロック番号%7=0ならば、(
          もし、色カウンタ=0ならば、ブロック色=黄色
         もし、色カウンタ=1ならば、ブロック色=青色
      ブロックX=33
      ブロックY=ブロックY+20
         色カウンタ=1
   )
)


待機

*キーイベント

'左右移動設定
もし、押されたキーが、右キーならば、(
   自機X=自機X+10
   もし、自機X>160ならば、自機X=160
   自機バーの、Xは、自機X
   ボール状態で、条件分岐。
   右上の時、ボール移動右上
   右下の時、ボール移動右下
   左上の時、ボール移動左上
   左下の時、ボール移動左下
   0の時、(
      ボールX=ボールX+10
      もし、ボールX>178ならば、ボールX=178
      ボールの、Xは、ボールX
   )
   待機
)
もし、押されたキーが、左キーならば、(
   自機X=自機X-10
   もし、自機X<0ならば、自機X=0
   自機バーの、Xは、自機X
   ボール状態で、条件分岐。
   右上の時、ボール移動右上
   右下の時、ボール移動右下
   左上の時、ボール移動左上
   左下の時、ボール移動左下
   0の時、(
      ボールX=ボールX-10
      もし、ボールX<18ならば、ボールX=18
      ボールの、Xは、ボールX
   )
   待機
)

'ボールの発射
もし、押されたキーが、発射キーならば、(
   もし、ボール発射=オフならば、(
      ボール発射=オン
      ボール移動右上
   )
   違えば、戻る
)
戻る

*ボール移動右上
ボール状態=右上
ボールX=ボールX+ベクトルX
ボールY=ボールY-ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX>195ならば、ボール移動左上
もし、ボールY<20ならば、ボール移動右下
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動右上

*ボール移動右下
ボール状態=右下
ボールX=ボールX+ベクトルX
ボールY=ボールY+ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX>195ならば、ボール移動左下
もし、(自機X-5<ボールX)かつ(自機X+46>ボールX)ならば、(
   もし、(自機Y-4<ボールY)かつ(自機Y>ボールY)ならば、(
      もし、(自機X+11<ボールX)かつ(自機X+30>ボールX)でなければ、(
         ベクトルX=4-乱数(3)
         ベクトルY=4-乱数(3)
      )
      ボール移動右上
   )
)
もし、ボールY>320ならば、ゲームオーバーへ、飛ぶ
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動右下

*ボール移動左上
ボール状態=左上
ボールX=ボールX-ベクトルX
ボールY=ボールY-ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX<0ならば、ボール移動右上
もし、ボールY<20ならば、ボール移動左下
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動左上

*ボール移動左下
ボール状態=左下
ボールX=ボールX-ベクトルX
ボールY=ボールY+ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX<0ならば、ボール移動右下
もし、(自機X-5<ボールX)かつ(自機X+46>ボールX)ならば、(
   もし、(自機Y-4<ボールY)かつ(自機Y>ボールY)ならば、(
      もし、(自機X+11<ボールX)かつ(自機X+30>ボールX)でなければ、(
         ベクトルX=4-乱数(3)
         ベクトルY=4-乱数(3)
      )
      ボール移動左上
   )
)
もし、ボールY>320ならば、ゲームオーバーへ、飛ぶ
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動左下

*接触判定
nを、0から、20まで、繰り返す(
   もし、(判定X#n+1<ボールX)かつ(判定X#n+13>ボールX)ならば、(
      もし、(判定Y#n+3<ボールY)かつ(判定Y#n+11>ボールY)ならば、(
      「ブロック{n}の、可視は、オフ」を、ひまわりする
      判定X#n=300
      スコア=スコア+10
      スコアラベルの、テキストは、「SCORE {スコア}」
      もし、スコア%210=0ならば、クリアへ、飛ぶ
      ボール状態で、条件分岐
      右上の時、ボール移動右下
      右下の時、ボール移動右上
      左上の時、ボール移動左下
      左下の時、ボール移動左上
      )
   ) 
   もし、(判定X#n+3<ボールX)かつ(判定X#n+11>ボールX)ならば、(
      もし、(判定Y#n+1<ボールY)かつ(判定Y#n+13>ボールY)ならば、(
      「ブロック{n}の、可視は、オフ」を、ひまわりする
      判定X#n=300
      スコア=スコア+10
      スコアラベルの、テキストは、「SCORE {スコア}」
      もし、スコア%210=0ならば、クリアへ、飛ぶ
      ボール状態で、条件分岐
      右上の時、ボール移動左上
      右下の時、ボール移動左下
      左上の時、ボール移動右上
      左下の時、ボール移動右下
      )
   ) 
)
戻る

*クリア
「CLEAR!」と、言う
オブジェクト全破壊
リトライへ、飛ぶ

*ゲームオーバー
「GAME OVER」と、言う
「再チャレンジ?」と、二択
もし、それが、はいならば、(
   スコア=0
   オブジェクト全破壊
   リトライへ、飛ぶ
)
違えば、終わり 



▲[ 663 ] / ▼[ 671 ]
NO.666  得点に変化を
□投稿者/ moka -(2002/03/28(Thu) 10:43:17)
□U R L/ http://www.geocities.jp/moka21/teatime/
均一な得点に、変化を加えてはどうでしょう。

ボールが落ちてこないで、
上で連続してブロック消すと、
得点の倍率が上がっていくような。

あと余計かもしれないけど、
適当に宇宙っぽい背景はどうでしょう。

{▼サンプル}
*背景描画
50回(
   文字色=RGB(乱数(256),乱数(256),乱数(256))
   位置=「({乱数((母艦の、幅))},{乱数((母艦の、高さ))+20})」
   母艦の、位置へ、「・」と、文字描画。
)



▲[ 666 ] / 返信無し
NO.671  Re[3]: 得点に変化を
□投稿者/ q -(2002/03/28(Thu) 13:59:14)
□U R L/
息抜きゲームには最適です
玉の動きが遅いのでもう少し早くするとやりがいあるかな



▲[ 646 ] / 返信無し
NO.672  一応正式版。
□投稿者/ ムロジェク -(2002/03/28(Thu) 14:38:59)
□U R L/
こんにちは。結構皆さんが遊んでくれているようなので嬉しいです。
いつまでもβ版なままなのもアレなので(謎)一応正式版としてリリースします。mokaさんのアドバイスを盛り込み、ハイスコア記録を付けました。まだまだ動作速度については改良の余地が有るかもしれません。良いアイデアを待っています。
またqさんの言うように大体ブロック崩しって速度上昇がありますね。その辺についても考えてみます。

{---プログラム掲示板投稿フォーム---
【ソフト名】ブロック崩し(バージョン 1.00)
【作 成 者】ムロジェク
【種  別】フリーソフトウェア
【ひまわりのバージョン】ver.1.33
【転  載】可
【改変運用】可です。どんどんカスタマイズしてください。
【ひまわり本体への梱包】可
【実行時に利用作成するファイル】有(scoredata.ini)
【コメント】
←→で左右移動、スペースキーでボールの発射です。ボールを跳ね返す時バーの端のほうで打ち返すとボールの軌道や速さがランダムに変化します。
ブロックを連続で壊すと得点率が倍増します。
---投稿フォームここまで---}

'母艦の設定
終了ラベルに、終了処理設定
白色で、画面クリア
母艦の、タイトルは、「ブロック崩し」
母艦の、幅は、200
母艦の、高さは、300
母艦の、リサイズは、オフ
母艦の、キー押した時を、キーイベントに、設定
文字サイズ=20
母艦の、(20,40)へ、「ブロック崩し」と、文字描画
文字サイズ=9
母艦の、(65,150)へ、「NOW LOADING…」と、文字描画
0.001秒、待つ

スコア=0
黒色で、画面クリア
'背景描画
100回(
   文字色=RGB(乱数(256),乱数(256),乱数(256))
   位置=「({乱数((母艦の、幅))},{乱数((母艦の、高さ))+20})」
   母艦の、位置へ、「・」と、文字描画。
)

*リトライ

'キー設定
右キー=39
左キー=37
発射キー=32

'変数設定
自機X=80
自機Y=260
ボールX=97
ボールY=252
ボール状態=0
ボール発射=オフ
ブロック番号=0
ブロックX=33
ブロックY=50
ベクトルX=2
ベクトルY=2
ブロック色=赤色
色カウンタ=0
残りブロック数=21
COMBO=1

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

'スコアラベルの作成
スコアラベルを、ラベルとして、作成
その、フォント色は、白色
その、テキストは、「SCORE {スコア}」
その、フォントサイズは、10
その、Yは、2

'ハイスコアラベルの作成
ハイスコアラベルを、ラベルとして、作成
その、フォント色は、白色
その、テキストは、「HI-SCORE {ハイスコア}」
その、フォントサイズは、10
その、Xは、100
その、Yは、2

'COMBOラベルの作成
COMBOラベルを、ラベルとして、作成
その、フォント色は、白色
その、テキストは、「{COMBO} COMBO!」
その、フォントサイズは、9
その、Xは、150
その、Yは、30
その、可視は、オフ

'枠線描画
ペン色=白色
(0,20)へ、移動
(200,20)へ、線

'バーの作成
自機バーを、ラベルとして、作成
その、テキストは、「〓〓〓〓」
その、フォント色は、緑色
その、フォントサイズは、8
その、Xは、自機X
その、Yは、自機Y

'ボールの作成
ボールを、ラベルとして、作成
その、テキストは、「●」
その、フォント色は、白色
その、フォントサイズは、8
その、Xは、ボールX
その、Yは、ボールY

'ブロックの作成
ブロックX=33
ブロックY=50
21回(
   「ブロック{ブロック番号}を、ラベルとして、作成」を、ひまわりする
   その、テキストは、「■」
    その、フォントサイズは、12
    その、フォント色は、ブロック色
   その、Xは、ブロックX
   その、Yは、ブロックY
   判定X#ブロック番号=ブロックX
   判定Y#ブロック番号=ブロックY
   ブロック番号=ブロック番号+1
   ブロックX=ブロックX+20
   
   '7個並べたら次の行に移る。
   もし、ブロック番号%7=0ならば、(
          もし、色カウンタ=0ならば、ブロック色=黄色
         もし、色カウンタ=1ならば、ブロック色=青色
      ブロックX=33
      ブロックY=ブロックY+20
         色カウンタ=1
   )
)

待機

*キーイベント

'左右移動設定
もし、押されたキーが、右キーならば、(
   自機X=自機X+10
   もし、自機X>160ならば、自機X=160
   自機バーの、Xは、自機X
   ボール状態で、条件分岐。
   右上の時、ボール移動右上
   右下の時、ボール移動右下
   左上の時、ボール移動左上
   左下の時、ボール移動左下
   0の時、(
      ボールX=ボールX+10
      もし、ボールX>178ならば、ボールX=178
      ボールの、Xは、ボールX
   )
   待機
)
もし、押されたキーが、左キーならば、(
   自機X=自機X-10
   もし、自機X<0ならば、自機X=0
   自機バーの、Xは、自機X
   ボール状態で、条件分岐。
   右上の時、ボール移動右上
   右下の時、ボール移動右下
   左上の時、ボール移動左上
   左下の時、ボール移動左下
   0の時、(
      ボールX=ボールX-10
      もし、ボールX<18ならば、ボールX=18
      ボールの、Xは、ボールX
   )
   待機
)

'ボールの発射
もし、押されたキーが、発射キーならば、(
   もし、ボール発射=オフならば、(
      ボール発射=オン
      ボール移動右上
   )
   違えば、戻る
)
戻る

*ボール移動右上
ボール状態=右上
ボールX=ボールX+ベクトルX
ボールY=ボールY-ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX>195ならば、ボール移動左上
もし、ボールY<20ならば、ボール移動右下
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動右上

*ボール移動右下
ボール状態=右下
ボールX=ボールX+ベクトルX
ボールY=ボールY+ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX>195ならば、ボール移動左下
もし、(自機X-5<ボールX)かつ(自機X+46>ボールX)ならば、(
   もし、(自機Y-4<ボールY)かつ(自機Y>ボールY)ならば、(
      もし、(自機X+11<ボールX)かつ(自機X+30>ボールX)でなければ、(
         ベクトルX=4-乱数(3)
         ベクトルY=4-乱数(3)
      )
      COMBOラベルの、可視は、オフ
      COMBO=1
      ボール移動右上
   )
)
もし、ボールY>320ならば、ゲームオーバーへ、飛ぶ
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動右下

*ボール移動左上
ボール状態=左上
ボールX=ボールX-ベクトルX
ボールY=ボールY-ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX<0ならば、ボール移動右上
もし、ボールY<20ならば、ボール移動左下
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動左上

*ボール移動左下
ボール状態=左下
ボールX=ボールX-ベクトルX
ボールY=ボールY+ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX<0ならば、ボール移動右下
もし、(自機X-5<ボールX)かつ(自機X+46>ボールX)ならば、(
   もし、(自機Y-4<ボールY)かつ(自機Y>ボールY)ならば、(
      もし、(自機X+11<ボールX)かつ(自機X+30>ボールX)でなければ、(
         ベクトルX=4-乱数(3)
         ベクトルY=4-乱数(3)
      )
      COMBOラベルの、可視は、オフ
      COMBO=1
      ボール移動左上
   )
)
もし、ボールY>320ならば、ゲームオーバーへ、飛ぶ
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動左下

*接触判定
nを、0から、20まで、繰り返す(
   もし、(判定X#n<ボールX)かつ(判定X#n+14>ボールX)ならば、(
      もし、(判定Y#n+2<ボールY)かつ(判定Y#n+12>ボールY)ならば、(
      「ブロック{n}の、可視は、オフ」を、ひまわりする
      判定X#n=300
      スコア=スコア+10*COMBO
      スコアラベルの、テキストは、「SCORE {スコア}」
      もし、COMBO>1ならば、(COMBOラベルの、可視は、オン。COMBOラベルの、テキストは、「{COMBO} COMBO!」)
      COMBO=COMBO+1
      残りブロック数=残りブロック数-1
      もし、残りブロック数=0ならば、クリアへ、飛ぶ
      ボール状態で、条件分岐
      右上の時、ボール移動右下
      右下の時、ボール移動右上
      左上の時、ボール移動左下
      左下の時、ボール移動左上
      )
   ) 
   もし、(判定X#n+2<ボールX)かつ(判定X#n+12>ボールX)ならば、(
      もし、(判定Y#n<ボールY)かつ(判定Y#n+14>ボールY)ならば、(
      「ブロック{n}の、可視は、オフ」を、ひまわりする
      判定X#n=300
      スコア=スコア+10*COMBO
      スコアラベルの、テキストは、「SCORE {スコア}」
      もし、COMBO>1ならば、(COMBOラベルの、可視は、オン。COMBOラベルの、テキストは、「{COMBO} COMBO!」)
      COMBO=COMBO+1
      残りブロック数=残りブロック数-1
      もし、残りブロック数=0ならば、クリアへ、飛ぶ
      ボール状態で、条件分岐
      右上の時、ボール移動左上
      右下の時、ボール移動左下
      左上の時、ボール移動右上
      左下の時、ボール移動右下
      )
   ) 
)
戻る

*クリア
文字サイズ=12
文字色=黒色
「CLEAR!」と、言う
オブジェクト全破壊
リトライへ、飛ぶ

*ゲームオーバー
ハイスコア保存
文字サイズ=12
文字色=黒色
「GAME OVER」と、言う
「再チャレンジ?」と、二択
もし、それが、はいならば、(
   スコア=0
   オブジェクト全破壊
   リトライへ、飛ぶ
)
違えば、終わり 

*ハイスコア保存
もし、スコア>ハイスコアならば、
(
『scoredata.ini』の、INIファイル開く
それ=スコア
『スコアデータ』の、『ハイスコア』へ、INIファイル書く
INIファイル閉じる
)
戻る

*終了ラベル
ハイスコア保存
おわり



▲[ 646 ] / 返信無し
NO.675  正式版その2。
□投稿者/ ムロジェク -(2002/03/28(Thu) 21:39:56)
□U R L/
速度上昇を付けてみました。10回反射する毎に速度が多少上がります。またブロックを全部壊す毎に初期速度が多少上がります。これで難易度が結構上昇しました。僕はブロックを全部壊した後のデバッグの為に自分でプレイしましたが5回くらい死にました。(笑)
目指せハイスコア10000点!(無理)

{---プログラム掲示板投稿フォーム---
【ソフト名】ブロック崩し(バージョン 1.01)
【作 成 者】ムロジェク
【種  別】フリーソフトウェア
【ひまわりのバージョン】ver.1.33
【転  載】可
【改変運用】可です。どんどんカスタマイズしてください。
【ひまわり本体への梱包】可
【実行時に利用作成するファイル】有(scoredata.ini)
【コメント】
←→で左右移動、スペースキーでボールの発射です。ボールを跳ね返す時バーの端のほうで打ち返すとボールの軌道がランダムに変化します。またボールが10回反射する毎に速度が多少上昇します。また全部ブロックを壊すと次回の初期速度が多少上昇します。
ブロックを連続で壊すと得点率が倍増します。
---投稿フォームここまで---}

'母艦の設定
終了ラベルに、終了処理設定
白色で、画面クリア
母艦の、タイトルは、「ブロック崩し」
母艦の、幅は、200
母艦の、高さは、300
母艦の、リサイズは、オフ
母艦の、キー押した時を、キーイベントに、設定
文字サイズ=20
母艦の、(20,60)へ、「ブロック崩し」と、文字描画
文字サイズ=9
母艦の、(65,170)へ、「NOW LOADING…」と、文字描画
0.001秒、待つ

クリア回数=0
スコア=0
基本速度=4

黒色で、画面クリア
'背景描画
100回(
   文字色=RGB(乱数(256),乱数(256),乱数(256))
   位置=「({乱数((母艦の、幅))},{乱数((母艦の、高さ))+20})」
   母艦の、位置へ、「・」と、文字描画。
)

*リトライ

'キー設定
右キー=39
左キー=37
発射キー=32

'変数設定
自機X=80
自機Y=260
ボールX=97
ボールY=252
ボール状態=0
ボール発射=オフ
ブロック番号=0
ブロックX=33
ブロックY=50
ブロック色=赤色
色カウンタ=0
残りブロック数=21
COMBO=1
反射回数=0
ベクトルX=基本速度/2
ベクトルY=基本速度/2

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

'スコアラベルの作成
スコアラベルを、ラベルとして、作成
その、フォント色は、白色
その、テキストは、「SCORE {スコア}」
その、フォントサイズは、10
その、Yは、2

'ハイスコアラベルの作成
ハイスコアラベルを、ラベルとして、作成
その、フォント色は、白色
その、テキストは、「HI-SCORE {ハイスコア}」
その、フォントサイズは、10
その、Xは、100
その、Yは、2

'COMBOラベルの作成
COMBOラベルを、ラベルとして、作成
その、フォント色は、白色
その、テキストは、「{COMBO} COMBO!」
その、フォントサイズは、9
その、Xは、150
その、Yは、30
その、可視は、オフ

'枠線描画
ペン色=白色
(0,20)へ、移動
(200,20)へ、線

'バーの作成
自機バーを、ラベルとして、作成
その、テキストは、「〓〓〓〓」
その、フォント色は、緑色
その、フォントサイズは、8
その、Xは、自機X
その、Yは、自機Y

'ボールの作成
ボールを、ラベルとして、作成
その、テキストは、「●」
その、フォント色は、白色
その、フォントサイズは、8
その、Xは、ボールX
その、Yは、ボールY

'ブロックの作成
ブロックX=33
ブロックY=50
21回(
   「ブロック{ブロック番号}を、ラベルとして、作成」を、ひまわりする
   その、テキストは、「■」
    その、フォントサイズは、12
    その、フォント色は、ブロック色
   その、Xは、ブロックX
   その、Yは、ブロックY
   判定X#ブロック番号=ブロックX
   判定Y#ブロック番号=ブロックY
   ブロック番号=ブロック番号+1
   ブロックX=ブロックX+20
   
   '7個並べたら次の行に移る。
   もし、ブロック番号%7=0ならば、(
          もし、色カウンタ=0ならば、ブロック色=黄色
         もし、色カウンタ=1ならば、ブロック色=青色
      ブロックX=33
      ブロックY=ブロックY+20
         色カウンタ=1
   )
)

待機

*キーイベント

'左右移動設定
もし、押されたキーが、右キーならば、(
   自機X=自機X+10
   もし、自機X>160ならば、自機X=160
   自機バーの、Xは、自機X
   ボール状態で、条件分岐。
   右上の時、ボール移動右上
   右下の時、ボール移動右下
   左上の時、ボール移動左上
   左下の時、ボール移動左下
   0の時、(
      ボールX=ボールX+10
      もし、ボールX>178ならば、ボールX=178
      ボールの、Xは、ボールX
   )
   待機
)
もし、押されたキーが、左キーならば、(
   自機X=自機X-10
   もし、自機X<0ならば、自機X=0
   自機バーの、Xは、自機X
   ボール状態で、条件分岐。
   右上の時、ボール移動右上
   右下の時、ボール移動右下
   左上の時、ボール移動左上
   左下の時、ボール移動左下
   0の時、(
      ボールX=ボールX-10
      もし、ボールX<18ならば、ボールX=18
      ボールの、Xは、ボールX
   )
   待機
)

'ボールの発射
もし、押されたキーが、発射キーならば、(
   もし、ボール発射=オフならば、(
      ボール発射=オン
      ボール移動右上
   )
   違えば、戻る
)
戻る

*ボール移動右上
ボール状態=右上
ボールX=ボールX+ベクトルX
ボールY=ボールY-ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX>195ならば、(
   反射回数=反射回数+1
   もし、反射回数%10=0ならば、基本速度=基本速度+1
   ボール移動左上
)
もし、ボールY<20ならば、(
   反射回数=反射回数+1
   もし、反射回数%10=0ならば、基本速度=基本速度+1
   ボール移動右下
)
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動右上

*ボール移動右下
ボール状態=右下
ボールX=ボールX+ベクトルX
ボールY=ボールY+ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX>195ならば、(
   反射回数=反射回数+1
   もし、反射回数%10=0ならば、基本速度=基本速度+1
   ボール移動左下
)
もし、(自機X-5<ボールX)かつ(自機X+46>ボールX)ならば、(
   もし、(自機Y-4<ボールY)かつ(自機Y>ボールY)ならば、(
      もし、(自機X+11<ボールX)かつ(自機X+30>ボールX)でなければ、(
         ベクトルX=基本速度-乱数(基本速度)
         ベクトルY=基本速度-ベクトルX
         もし、ベクトルY<1ならば、ベクトルY=1
      )
      COMBOラベルの、可視は、オフ
      COMBO=1
      反射回数=反射回数+1
      もし、反射回数%10=0ならば、基本速度=基本速度+1
      ボール移動右上
   )
)
もし、ボールY>320ならば、ゲームオーバーへ、飛ぶ
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動右下

*ボール移動左上
ボール状態=左上
ボールX=ボールX-ベクトルX
ボールY=ボールY-ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX<0ならば、(
   反射回数=反射回数+1
   もし、反射回数%10=0ならば、基本速度=基本速度+1
   ボール移動右上
)
もし、ボールY<20ならば、(
   反射回数=反射回数+1
   もし、反射回数%10=0ならば、基本速度=基本速度+1
   ボール移動左下
)
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動左上

*ボール移動左下
ボール状態=左下
ボールX=ボールX-ベクトルX
ボールY=ボールY+ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX<0ならば、(
   反射回数=反射回数+1
   もし、反射回数%10=0ならば、基本速度=基本速度+1
   ボール移動右下
)
もし、(自機X-5<ボールX)かつ(自機X+46>ボールX)ならば、(
   もし、(自機Y-4<ボールY)かつ(自機Y>ボールY)ならば、(
      もし、(自機X+11<ボールX)かつ(自機X+30>ボールX)でなければ、(
         ベクトルX=基本速度-乱数(基本速度)
         ベクトルY=基本速度-ベクトルX
         もし、ベクトルY<1ならば、ベクトルY=1
      )
      COMBOラベルの、可視は、オフ
      COMBO=1
      反射回数=反射回数+1
      もし、反射回数%10=0ならば、基本速度=基本速度+1
      ボール移動左上
   )
)
もし、ボールY>320ならば、ゲームオーバーへ、飛ぶ
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動左下

*接触判定
nを、0から、20まで、繰り返す(
   もし、(判定X#n<ボールX)かつ(判定X#n+14>ボールX)ならば、(
      もし、(判定Y#n+2<ボールY)かつ(判定Y#n+12>ボールY)ならば、(
      「ブロック{n}の、可視は、オフ」を、ひまわりする
      判定X#n=300
      スコア=スコア+10*COMBO
      スコアラベルの、テキストは、「SCORE {スコア}」
      もし、COMBO>1ならば、(COMBOラベルの、可視は、オン。COMBOラベルの、テキストは、「{COMBO} COMBO!」)
      COMBO=COMBO+1
      残りブロック数=残りブロック数-1
      もし、残りブロック数=0ならば、クリアへ、飛ぶ
      反射回数=反射回数+1
      もし、反射回数%10=0ならば、基本速度=基本速度+1
      ボール状態で、条件分岐
      右上の時、ボール移動右下
      右下の時、ボール移動右上
      左上の時、ボール移動左下
      左下の時、ボール移動左上
      )
   ) 
   もし、(判定X#n+2<ボールX)かつ(判定X#n+12>ボールX)ならば、(
      もし、(判定Y#n<ボールY)かつ(判定Y#n+14>ボールY)ならば、(
      「ブロック{n}の、可視は、オフ」を、ひまわりする
      判定X#n=300
      スコア=スコア+10*COMBO
      スコアラベルの、テキストは、「SCORE {スコア}」
      もし、COMBO>1ならば、(COMBOラベルの、可視は、オン。COMBOラベルの、テキストは、「{COMBO} COMBO!」)
      COMBO=COMBO+1
      残りブロック数=残りブロック数-1
      もし、残りブロック数=0ならば、クリアへ、飛ぶ
      反射回数=反射回数+1
      もし、反射回数%10=0ならば、基本速度=基本速度+1
      ボール状態で、条件分岐
      右上の時、ボール移動左上
      右下の時、ボール移動左下
      左上の時、ボール移動右上
      左下の時、ボール移動右下
      )
   ) 
)
戻る

*クリア
文字サイズ=12
文字色=黒色
「CLEAR!」と、言う
オブジェクト全破壊
クリア回数=クリア回数+1
基本速度=4+クリア回数
リトライへ、飛ぶ

*ゲームオーバー
ハイスコア保存
文字サイズ=12
文字色=黒色
「GAME OVER」と、言う
「再チャレンジ?」と、二択
もし、それが、はいならば、(
   スコア=0
   基本速度=4
   オブジェクト全破壊
   リトライへ、飛ぶ
)
違えば、終わり 

*ハイスコア保存
もし、スコア>ハイスコアならば、
(
『scoredata.ini』の、INIファイル開く
それ=スコア
『スコアデータ』の、『ハイスコア』へ、INIファイル書く
INIファイル閉じる
)
戻る

*終了ラベル
ハイスコア保存
おわり



▲[ 646 ] / 返信無し
NO.677  先にやられてしまった!!!
□投稿者/ のぐちゃん -(2002/03/29(Fri) 12:31:18)
□U R L/
先にやられてしまった!!!(+_+)



▲[ 646 ] / 返信無し
NO.684  細かな変更。
□投稿者/ ムロジェク -(2002/03/30(Sat) 09:06:28)
□U R L/
F1を押すとハイスコアの初期化が出来るようにした他、プログラムに一部細かな変更を加えました。本当に細かな変更です(笑)。

{---プログラム掲示板投稿フォーム---
【ソフト名】ブロック崩し(バージョン 1.02)
【作 成 者】ムロジェク
【種  別】フリーソフトウェア
【ひまわりのバージョン】ver.1.35
【転  載】可
【改変運用】可です。どんどんカスタマイズしてください。
【ひまわり本体への梱包】可
【実行時に利用作成するファイル】有(scoredata.ini)
【コメント】
←→で左右移動、スペースキーでボールの発射です。ボールを跳ね返す時バーの端のほうで打ち返すとボールの軌道がランダムに変化します。またボールが10回反射する毎に速度が多少上昇します。また全部ブロックを壊すと次回の初期速度が多少上昇します。
ブロックを連続で壊すと得点率が倍増します。
ボール発射前にF1を押すとハイスコアの初期化が出来ます。
---投稿フォームここまで---}

'母艦の設定
終了ラベルに、終了処理設定
白色で、画面クリア
母艦の、タイトルは、「ブロック崩し」
母艦の、幅は、200
母艦の、高さは、300
母艦の、リサイズは、オフ
母艦の、キー押した時を、キーイベントに、設定
文字サイズ=20
母艦の、(20,60)へ、「ブロック崩し」と、文字描画
文字サイズ=9
母艦の、(65,170)へ、「NOW LOADING…」と、文字描画
0.001秒、待つ

クリア回数=0
スコア=0
基本速度=4

黒色で、画面クリア
'背景描画
100回(
   文字色=RGB(乱数(256),乱数(256),乱数(256))
   位置=「({乱数((母艦の、幅))},{乱数((母艦の、高さ))+20})」
   母艦の、位置へ、「・」と、文字描画。
)

*リトライ

'キー設定
右キー=39
左キー=37
発射キー=32
F1=112

'変数設定
自機X=80
自機Y=260
ボールX=97
ボールY=252
ボール状態=0
ボール発射=オフ
ブロック番号=0
ブロックX=33
ブロックY=50
ブロック色=赤色
色カウンタ=0
残りブロック数=21
COMBO=1
反射回数=0
ベクトルX=基本速度/2
ベクトルY=基本速度/2

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

'スコアラベルの作成
スコアラベルを、ラベルとして、作成
その、フォント色は、白色
その、テキストは、「SCORE {スコア}」
その、フォントサイズは、10
その、Yは、2

'ハイスコアラベルの作成
ハイスコアラベルを、ラベルとして、作成
その、フォント色は、白色
その、テキストは、「HI-SCORE {ハイスコア}」
その、フォントサイズは、10
その、Xは、100
その、Yは、2

'COMBOラベルの作成
COMBOラベルを、ラベルとして、作成
その、フォント色は、白色
その、テキストは、「{COMBO} COMBO!」
その、フォントサイズは、9
その、Xは、150
その、Yは、30
その、可視は、オフ

'枠線描画
ペン色=白色
(0,20)へ、移動
(200,20)へ、線

'バーの作成
自機バーを、ラベルとして、作成
その、テキストは、「〓〓〓〓」
その、フォント色は、緑色
その、フォントサイズは、8
その、Xは、自機X
その、Yは、自機Y

'ボールの作成
ボールを、ラベルとして、作成
その、テキストは、「●」
その、フォント色は、白色
その、フォントサイズは、8
その、Xは、ボールX
その、Yは、ボールY

'ブロックの作成
ブロックX=33
ブロックY=50
21回(
   「ブロック{ブロック番号}を、ラベルとして、作成」を、ひまわりする
   その、テキストは、「■」
    その、フォントサイズは、12
    その、フォント色は、ブロック色
   その、Xは、ブロックX
   その、Yは、ブロックY
   判定X#ブロック番号=ブロックX
   判定Y#ブロック番号=ブロックY
   ブロック番号=ブロック番号+1
   ブロックX=ブロックX+20
   
   '7個並べたら次の行に移る。
   もし、ブロック番号%7=0ならば、(
          もし、色カウンタ=0ならば、ブロック色=黄色
         もし、色カウンタ=1ならば、ブロック色=青色
      ブロックX=33
      ブロックY=ブロックY+20
         色カウンタ=1
   )
)

待機

*キーイベント

'左右移動設定
もし、押されたキーが、右キーならば、(
   自機X=自機X+10
   もし、自機X>160ならば、自機X=160
   自機バーの、Xは、自機X
   ボール状態で、条件分岐。
   右上の時、ボール移動右上
   右下の時、ボール移動右下
   左上の時、ボール移動左上
   左下の時、ボール移動左下
   0の時、(
      ボールX=ボールX+10
      もし、ボールX>178ならば、ボールX=178
      ボールの、Xは、ボールX
   )
   待機
)
もし、押されたキーが、左キーならば、(
   自機X=自機X-10
   もし、自機X<0ならば、自機X=0
   自機バーの、Xは、自機X
   ボール状態で、条件分岐。
   右上の時、ボール移動右上
   右下の時、ボール移動右下
   左上の時、ボール移動左上
   左下の時、ボール移動左下
   0の時、(
      ボールX=ボールX-10
      もし、ボールX<18ならば、ボールX=18
      ボールの、Xは、ボールX
   )
   待機
)

'ボールの発射
もし、押されたキーが、発射キーならば、(
   もし、ボール発射=オフならば、(
      ボール発射=オン
      ボール移動右上
      戻る
   )
   違えば、戻る
)

もし、押されたキーが、F1ならば、(
   もし、ボール発射=オフならば、(ハイスコア初期化。待機)
違えば、ボール状態で、条件分岐
右上の時、ボール移動右上
右下の時、ボール移動右下
左上の時、ボール移動左上
左下の時、ボール移動左下
)

*ボール移動右上
ボール状態=右上
ボールX=ボールX+ベクトルX
ボールY=ボールY-ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX>195ならば、(
   反射回数=反射回数+1
   もし、反射回数%10=0ならば、基本速度=基本速度+1
   ボール移動左上
)
もし、ボールY<20ならば、(
   反射回数=反射回数+1
   もし、反射回数%10=0ならば、基本速度=基本速度+1
   ボール移動右下
)
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動右上

*ボール移動右下
ボール状態=右下
ボールX=ボールX+ベクトルX
ボールY=ボールY+ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX>195ならば、(
   反射回数=反射回数+1
   もし、反射回数%10=0ならば、基本速度=基本速度+1
   ボール移動左下
)
もし、(自機X-5<ボールX)かつ(自機X+46>ボールX)ならば、(
   もし、(自機Y-4<ボールY)かつ(自機Y>ボールY)ならば、(
      もし、(自機X+11<ボールX)かつ(自機X+30>ボールX)でなければ、(
         ベクトルX=乱数(基本速度-1)+1
         ベクトルY=基本速度-ベクトルX
      )
      COMBOラベルの、可視は、オフ
      COMBO=1
      反射回数=反射回数+1
      もし、反射回数%10=0ならば、基本速度=基本速度+1
      ボール移動右上
   )
)
もし、ボールY>320ならば、ゲームオーバーへ、飛ぶ
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動右下

*ボール移動左上
ボール状態=左上
ボールX=ボールX-ベクトルX
ボールY=ボールY-ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX<0ならば、(
   反射回数=反射回数+1
   もし、反射回数%10=0ならば、基本速度=基本速度+1
   ボール移動右上
)
もし、ボールY<20ならば、(
   反射回数=反射回数+1
   もし、反射回数%10=0ならば、基本速度=基本速度+1
   ボール移動左下
)
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動左上

*ボール移動左下
ボール状態=左下
ボールX=ボールX-ベクトルX
ボールY=ボールY+ベクトルY
もし、(ボールY<100)かつ(ボールY>40)ならば、接触判定
もし、ボールX<0ならば、(
   反射回数=反射回数+1
   もし、反射回数%10=0ならば、基本速度=基本速度+1
   ボール移動右下
)
もし、(自機X-5<ボールX)かつ(自機X+46>ボールX)ならば、(
   もし、(自機Y-4<ボールY)かつ(自機Y>ボールY)ならば、(
      もし、(自機X+11<ボールX)かつ(自機X+30>ボールX)でなければ、(
         ベクトルX=乱数(基本速度-1)+1
         ベクトルY=基本速度-ベクトルX
         もし、ベクトルY<1ならば、ベクトルY=1
      )
      COMBOラベルの、可視は、オフ
      COMBO=1
      反射回数=反射回数+1
      もし、反射回数%10=0ならば、基本速度=基本速度+1
      ボール移動左上
   )
)
もし、ボールY>320ならば、ゲームオーバーへ、飛ぶ
ボールの、Xは、ボールX
ボールの、Yは、ボールY
0.001秒、待つ
ボール移動左下

*接触判定
nを、0から、20まで、繰り返す(
   もし、(判定X#n<ボールX)かつ(判定X#n+14>ボールX)ならば、(
      もし、(判定Y#n+2<ボールY)かつ(判定Y#n+12>ボールY)ならば、(
      「ブロック{n}の、可視は、オフ」を、ひまわりする
      判定X#n=300
      スコア=スコア+10*COMBO
      スコアラベルの、テキストは、「SCORE {スコア}」
      もし、COMBO>1ならば、(COMBOラベルの、可視は、オン。COMBOラベルの、テキストは、「{COMBO} COMBO!」)
      COMBO=COMBO+1
      残りブロック数=残りブロック数-1
      もし、残りブロック数=0ならば、クリアへ、飛ぶ
      反射回数=反射回数+1
      もし、反射回数%10=0ならば、基本速度=基本速度+1
      ボール状態で、条件分岐
      右上の時、ボール移動右下
      右下の時、ボール移動右上
      左上の時、ボール移動左下
      左下の時、ボール移動左上
      )
   ) 
   もし、(判定X#n+2<ボールX)かつ(判定X#n+12>ボールX)ならば、(
      もし、(判定Y#n<ボールY)かつ(判定Y#n+14>ボールY)ならば、(
      「ブロック{n}の、可視は、オフ」を、ひまわりする
      判定X#n=300
      スコア=スコア+10*COMBO
      スコアラベルの、テキストは、「SCORE {スコア}」
      もし、COMBO>1ならば、(COMBOラベルの、可視は、オン。COMBOラベルの、テキストは、「{COMBO} COMBO!」)
      COMBO=COMBO+1
      残りブロック数=残りブロック数-1
      もし、残りブロック数=0ならば、クリアへ、飛ぶ
      反射回数=反射回数+1
      もし、反射回数%10=0ならば、基本速度=基本速度+1
      ボール状態で、条件分岐
      右上の時、ボール移動左上
      右下の時、ボール移動左下
      左上の時、ボール移動右上
      左下の時、ボール移動右下
      )
   ) 
)
戻る

*クリア
文字サイズ=12
文字色=黒色
「CLEAR!」と、言う
オブジェクト全破壊
クリア回数=クリア回数+1
基本速度=4+クリア回数
リトライへ、飛ぶ

*ゲームオーバー
ハイスコア保存
文字サイズ=12
文字色=黒色
「GAME OVER」と、言う
「再チャレンジ?」と、二択
もし、それが、はいならば、(
   ハイスコア保存
   スコア=0
   基本速度=4
   オブジェクト全破壊
   リトライへ、飛ぶ
)
違えば、終わり 

*ハイスコア保存
もし、スコア>ハイスコアならば、
(
『scoredata.ini』の、INIファイル開く
それ=スコア
『スコアデータ』の、『ハイスコア』へ、INIファイル書く
INIファイル閉じる
)
戻る

*ハイスコア初期化
「ハイスコアを初期化しますか?」と、二択
もし、それが、はいならば、(
   『scoredata.ini』の、INIファイル開く
   それ=0
   『スコアデータ』の、『ハイスコア』へ、INIファイル書く
   INIファイル閉じる
   ハイスコア=0
   ハイスコアラベルの、テキストは、「HI-SCORE {ハイスコア}」
   戻る
)
違えば、戻る

*終了ラベル
ハイスコア保存
おわり



- Child Tree -