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

MESSAGE ボタン崩し /のぐちゃん (02/03/29(Fri) 14:38) [679]


親記事 / 返信無し
NO.679  ボタン崩し
□投稿者/ のぐちゃん -(2002/03/29(Fri) 14:38:35)
□U R L/
{---プログラム掲示板投稿フォーム---
【ソフト名】ボタン崩し (バージョン 1.00)
【作 成 者】のぐちゃん (連絡先:kazutosi101@msn.com)
【種  別】フリーソフトウェア
【ひまわりのバージョン】ver.1.34
【転  載】可(転載条件:ご自由に)
【改変運用】可(投稿したプログラムを他人が改造し運用することを許すか)
【ひまわり本体への梱包】可
【実行時に利用作成するファイル】有(scoredata.ini←プログラムが勝手に作成します)
【コメント】←→で左右移動、スペースキーまたはEnterキーでボールの発射です。ボールを跳ね返す時バーの端のほうで打ち返すとボールの軌道や速さがランダムに変化します。
---投稿フォームここまで---}
'母艦の設定
終了ラベルに、終了処理設定
白色で、画面クリア
母艦の、タイトルは、「ボタン崩し」
母艦の、幅は、200
母艦の、高さは、300
母艦の、リサイズは、オフ
母艦の、キー押した時を、キーイベントに、設定
文字サイズ=20
母艦の、(20,60)へ、「ボタン崩し」と、文字描画
文字サイズ=9
文字書体=「MS ゴシック|傾斜」
母艦の、(65,170)へ、「ロード中...」と、文字描画
文字書体=「MS ゴシック」
母艦の、(40,200)へ、「日本語入力システム\nをオフにしましょう」と、文字描画
0.001秒、待つ

クリア回数=0
スコア=0
基本速度=4
文字書体=「MS Pゴシック」
青色で、画面クリア
'背景描画
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ファイル開く
『score』の、『hi-score』を、INIファイル読む
ハイスコア=それ
INIファイル閉じる

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

'ハイスコアラベルの作成
ハイスコアラベルを、ラベルとして、作成
その、フォント色は、白色
その、テキストは、「ハイスコア:{ハイスコア}」
その、フォントサイズは、10
その、Xは、110
その、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
    その、フォント色は、ブロック色
   その、幅は、20。
    その、高さは、20。
    その、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
      スコアラベルの、テキストは、「スコア:{スコア}」
      もし、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
      スコアラベルの、テキストは、「スコア:{スコア}」
      もし、COMBO>1ならば、(COMBOラベルの、可視は、オン。COMBOラベルの、テキストは、「{COMBO} COMBO!」)
      COMBO=COMBO+1
      残りブロック数=残りブロック数-1
      もし、残りブロック数=0ならば、クリアへ、飛ぶ
      反射回数=反射回数+1
      もし、反射回数%10=0ならば、基本速度=基本速度+1
      ボール状態で、条件分岐
      右上の時、ボール移動左上
      右下の時、ボール移動左下
      左上の時、ボール移動右上
      左下の時、ボール移動右下
      )
   ) 
)
戻る

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

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

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

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



- Child Tree -