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

MESSAGE マップエディタに挑戦。 /よしくん (02/01/05(Sat) 23:05) [57]
......MESSAGE 提案 /矢沢夢ん(マリカビ) (02/01/05(Sat) 23:46) [58]
............MESSAGE Re[2]: 提案その2 /クジラ飛行机 (02/01/06(Sun) 05:22) [60]
..................MESSAGE Re[3]: 提案 /よしくん。 (02/01/06(Sun) 18:23) [68]
......MESSAGE 作ってください:色々なゲームに使えそう.. /tosimiti (02/01/06(Sun) 18:55) [70]
......MESSAGE さらに提案 /moka (02/01/07(Mon) 05:26) [73]
............MESSAGE Re[2]: さらに提案 /よしくん。 (02/01/08(Tue) 12:55) [89]
......MESSAGE トランプに挑戦。してましたが限界です。 /tosimiti (02/01/11(Fri) 20:19) [146]


親記事 / ▼[ 58 ] ▼[ 70 ] ▼[ 73 ] ▼[ 146 ]
NO.57  マップエディタに挑戦。
□投稿者/ よしくん -(2002/01/05(Sat) 23:05:56)
□U R L/
初めまして。簡単なマップエディタを作ってみました。
かなり不親切で、低機能ですが、分からないなりに頑張ってみました。
一応新バージョンに対応させましたが、直してるうちに
わけが分からなくなってます。

―――――――――――――――――――――――――――――――
{マップエディタに挑戦}

{初期化}
枠の幅=24。
枠の高さ=24。
パレット幅=24。
パレット高さ=24。
ペン色=黒色。ペン太さ=2。

{メニューの作成}
メニューを、メニュー作成。
メニューに、マップをセーブを、メニュー追加。
メニューに、終了を、メニュー追加。
{メニューのイベント}
マップをセーブの、イベントを、セーブイベントに、設定。
終了の、イベントを、終了イベントに、設定。

白色で、画面クリア。
「横に何マス作りますか?」と、尋ねる。
横マス=それ。
「縦に何マス作りますか?」と、尋ねる。
縦マス=それ。

{母艦の設定}
もし、パレット幅×5+30<枠の幅×横マス+10ならば、
   母艦の、幅は、枠の幅×横マス+10。
違えば、
   母艦の、幅は、パレット幅×5+30。
母艦の、高さは、枠の高さ×縦マス+パレット高さ+25

{パレットを作る}
塗り色=白色。
(5,5)から、(パレット幅+5,パレット高さ+5)へ、四角形。
塗り色=青色。
(10+パレット幅,5)から、(パレット幅×2+10,パレット高さ+5)へ、四角形。
塗り色=緑色。
(15+パレット幅×2,5)から、(パレット幅×3+15,パレット高さ+5)へ、四角形。
塗り色=黄色。
(20+パレット幅×3,5)から、(パレット幅×4+20,パレット高さ+5)へ、四角形。
塗り色=赤色。
(25+パレット幅×4,5)から、(パレット幅×5+25,パレット高さ+5)へ、四角形。

{エディタのフォームを作る。}
フォームの高さ=5+パレット高さ+10
{横線を引く}
カウンタ=0
(縦マス+1)回(
  (5,フォームの高さ+カウンタ×枠の高さ)へ、移動。
   (5+横マス×枠の幅、フォームの高さ+カウンタ×枠の高さ)へ、線。
   カウンタ=カウンタ+1
)。
{縦線を引く}
カウンタ=0
(横マス+1)回(
   (5+カウンタ×枠の幅,フォームの高さ)へ、移動。
   (5+カウンタ×枠の幅、フォームの高さ+縦マス×枠の高さ)へ、線。
   カウンタ=カウンタ+1
)。
{最初の色は赤}
ペン色=赤色。

{配列の初期化。全て0にする}
カウンタ=0
(横マス×縦マス)回(
   マップ#カウンタ=0
   カウンタ=カウンタ+1
)。

{メイン}
*メインラベル
   母艦の、マウス押した時を、マウスイベントに、設定。
   待機。
   
*マウスイベント
   {パレットの選択}
   もし、(マウスX>=5)かつ(マウスX<=パレット幅+5)かつ(マウスY>=5)かつ(マウスY<=パレット高さ+5)
      ならば、(
         塗り色=白色。
         ペン色=白色。
   )。
   もし、(マウスX>=10+パレット幅)かつ(マウスX<=パレット幅×2+10)かつ(マウスY>=5)かつ(マウスY<=パレット高さ+5)
      ならば、(
         塗り色=青色。
         ペン色=青色。
   )。
   もし、(マウスX>=15+パレット幅×2)かつ(マウスX<=パレット幅×3+15)かつ(マウスY>=5)かつ(マウスY<=パレット高さ+5)
      ならば、(
         塗り色=緑色。
         ペン色=緑色。
   )。
   もし、(マウスX>=20+パレット幅×3)かつ(マウスX<=パレット幅×4+20)かつ(マウスY>=5)かつ(マウスY<=パレット高さ+5)
      ならば、(
         塗り色=黄色。
         ペン色=黄色。
   )。
   もし、(マウスX>=25+パレット幅×4)かつ(マウスX<=パレット幅×5+25)かつ(マウスY>=5)かつ(マウスY<=パレット高さ+5)
      ならば、(
         塗り色=赤色。
         ペン色=赤色。
   )。
   
   {フォームの選択}
   もし、(マウスX>=5)かつ(マウスY>=フォームの高さ)かつ(マウスX<=5+枠の幅×横マス)かつ(マウスY<=フォームの高さ+枠の高さ×縦マス)
      ならば、(
         X座標=整数((マウスX-5)÷枠の幅)
         Y座標=整数((マウスY-フォームの高さ)÷枠の高さ)
         (5+X座標×枠の幅+ペン太さ,フォームの高さ+Y座標×枠の高さ+ペン太さ)から、(5+X座標×枠の幅+枠の幅-ペン太さ+1,フォームの高さ+Y座標×枠の高さ+枠の高さ-ペン太さ+1)へ、四角形。
         
         場所=X座標+Y座標×横マス。
         もし、塗り色=白色ならば、
            マップ#場所=0
         もし、塗り色=青色ならば、
            マップ#場所=1
         もし、塗り色=緑色ならば、
            マップ#場所=2
         もし、塗り色=黄色ならば、
            マップ#場所=3
         もし、塗り色=赤色ならば、
            マップ#場所=4
   )。
   戻る。

*セーブイベント
   カウンタ=0。
   出力マップ=「」。
   縦マス回(
      横マス回(
         出力マップ=出力マップ&マップ#カウンタ。
         もし、(カウンタ+1)%横マス=0ならば、
            出力マップ=出力マップ&「\n」。{改行文字の追加。}
         カウンタ=カウンタ+1
      )。
   )。
   出力マップを、『map.txt』へ、保存。
   待機。

*終了イベント
   「終了していいですか?」と、二択。
   もし、それが、はいならば、
      終わり。
   もし、それが、いいえならば、
      メインラベルへ、飛ぶ。



▲[ 57 ] / ▼[ 60 ]
NO.58  提案
□投稿者/ 矢沢夢ん(マリカビ) -(2002/01/05(Sat) 23:46:25)
□U R L/ http://www.parkcity.ne.jp/~ymsp/s645/
提案・・・要望?かもしれないです
あのサンプルの迷路(himawari\sample\ゲーム\maze.hmw)に対応したら
いいなあ・・・と思います
このマップエディタではセーブでできたファイル(map.hmw)に
01030
01010
01010
01010
03012
こうなってます・・・しかし
数字と数字の間に「,」がはいっていないんですよ
このままでは手間がかかってしまう・・・と思います
できれば対応して欲しいです



▲[ 58 ] / ▼[ 68 ]
NO.60  Re[2]: 提案その2
□投稿者/ クジラ飛行机 -(2002/01/06(Sun) 05:22:50)
□U R L/ http://www.text2music.com
これは、実用的!
矢沢夢ん(マリカビ) さんの要望に、追加して、
何色が、何番か表示されると、より、分かりやすくていいと思います!!



▲[ 60 ] / 返信無し
NO.68  Re[3]: 提案
□投稿者/ よしくん。 -(2002/01/06(Sun) 18:23:10)
□U R L/
>矢沢夢ん(マリカビ) さん
  ホントですね。いちいちコンマ入れるの面倒臭いです。今回のはコンマが入るので、  サンプルのゲームのマップの方で試してみてください(←いいのかな?)。

>クジラさん
  番号いれなかったのは手抜きです・・・。ところで新バージョンのファイルの読み込  み、前より自然な気がします。バージョンアップ頑張ってください。

大きいマップを作りやすいように、枠のサイズを設定出来るようにしました。あと、不具合があったので直してみました。


――――――――――――――――――――――――――――――――――――――――
{マップエディタに挑戦2}

{初期化}
枠の幅=24。
枠の高さ=24。
パレット幅=24。
パレット高さ=24。
パレットスペースX=3。
パレットスペースY=3。
ペン色=黒色。ペン太さ=2。

{メニューの作成}
メニューを、メニュー作成。
メニューに、マップをセーブを、メニュー追加。
メニューに、終了を、メニュー追加。
{メニューのイベント}
マップをセーブの、イベントを、セーブイベントに、設定。
終了の、イベントを、終了イベントに、設定。

白色で、画面クリア。
「横に何マス作りますか?」と、尋ねる。
横マス=それ。
「縦に何マス作りますか?」と、尋ねる。
縦マス=それ。
「枠の大きさを指定してください。」と、尋ねる。
枠の幅=それ。
枠の高さ=それ。

{母艦の設定}
もし、パレット幅×5+30<枠の幅×横マス+10ならば、
   母艦の、幅は、枠の幅×横マス+10。
違えば、
   母艦の、幅は、パレット幅×5+30。
母艦の、高さは、枠の高さ×縦マス+パレット高さ+25
白色で、画面クリア。

{パレットを作る}
塗り色=白色。
(5,5)から、(パレット幅+5,パレット高さ+5)へ、四角形。
(5+パレットスペースX,5+パレットスペースY)へ、移動。'文字書体=「太字」。
「0」と、表示。

塗り色=青色。
(10+パレット幅,5)から、(パレット幅×2+10,パレット高さ+5)へ、四角形。
(10+パレット幅+パレットスペースX,5+パレットスペースY)へ、移動。
文字色=白色。
「1」と、表示。

塗り色=緑色。
(15+パレット幅×2,5)から、(パレット幅×3+15,パレット高さ+5)へ、四角形。
(15+パレット幅×2+パレットスペースX,5+パレットスペースY)へ、移動。
文字色=黒色。
「2」と、表示。

塗り色=黄色。
(20+パレット幅×3,5)から、(パレット幅×4+20,パレット高さ+5)へ、四角形。
(20+パレット幅×3+パレットスペースX,5+パレットスペースY)へ、移動。
「3」と、表示。

塗り色=赤色。
(25+パレット幅×4,5)から、(パレット幅×5+25,パレット高さ+5)へ、四角形。
(25+パレット幅×4+パレットスペースX,5+パレットスペースY)へ、移動。
文字色=白色。
「4」と、表示。

{エディタのフォームを作る。}
フォームの高さ=5+パレット高さ+10
{横線を引く}
カウンタ=0
(縦マス+1)回(
  (5,フォームの高さ+カウンタ×枠の高さ)へ、移動。
   (5+横マス×枠の幅、フォームの高さ+カウンタ×枠の高さ)へ、線。
   カウンタ=カウンタ+1
)。
{縦線を引く}
カウンタ=0
(横マス+1)回(
   (5+カウンタ×枠の幅,フォームの高さ)へ、移動。
   (5+カウンタ×枠の幅、フォームの高さ+縦マス×枠の高さ)へ、線。
   カウンタ=カウンタ+1
)。
{最初の色は赤}
ペン色=赤色。

{配列の初期化。全て0にする}
カウンタ=0
(横マス×縦マス)回(
   マップ#カウンタ=0
   カウンタ=カウンタ+1
)。

{メイン}
*メインラベル
   母艦の、マウス押した時を、マウスイベントに、設定。
   待機。
   
*マウスイベント
   {パレットの選択}
   もし、(マウスX>=5)かつ(マウスX<=パレット幅+5)かつ(マウスY>=5)かつ(マウスY<=パレット高さ+5)
      ならば、(
         塗り色=白色。
         ペン色=白色。
   )。
   もし、(マウスX>=10+パレット幅)かつ(マウスX<=パレット幅×2+10)かつ(マウスY>=5)かつ(マウスY<=パレット高さ+5)
      ならば、(
         塗り色=青色。
         ペン色=青色。
   )。
   もし、(マウスX>=15+パレット幅×2)かつ(マウスX<=パレット幅×3+15)かつ(マウスY>=5)かつ(マウスY<=パレット高さ+5)
      ならば、(
         塗り色=緑色。
         ペン色=緑色。
   )。
   もし、(マウスX>=20+パレット幅×3)かつ(マウスX<=パレット幅×4+20)かつ(マウスY>=5)かつ(マウスY<=パレット高さ+5)
      ならば、(
         塗り色=黄色。
         ペン色=黄色。
   )。
   もし、(マウスX>=25+パレット幅×4)かつ(マウスX<=パレット幅×5+25)かつ(マウスY>=5)かつ(マウスY<=パレット高さ+5)
      ならば、(
         塗り色=赤色。
         ペン色=赤色。
   )。
   
   {フォームの選択}
   もし、(マウスX>=5)かつ(マウスY>=フォームの高さ)かつ(マウスX<=5+枠の幅×横マス)かつ(マウスY<=フォームの高さ+枠の高さ×縦マス)
      ならば、(
         X座標=整数((マウスX-5)÷枠の幅)
         Y座標=整数((マウスY-フォームの高さ)÷枠の高さ)
         (5+X座標×枠の幅+ペン太さ,フォームの高さ+Y座標×枠の高さ+ペン太さ)から、(5+X座標×枠の幅+枠の幅-ペン太さ+1,フォームの高さ+Y座標×枠の高さ+枠の高さ-ペン太さ+1)へ、四角形。
         
         場所=X座標+Y座標×横マス。
         もし、塗り色=白色ならば、
            マップ#場所=0
         もし、塗り色=青色ならば、
            マップ#場所=1
         もし、塗り色=緑色ならば、
            マップ#場所=2
         もし、塗り色=黄色ならば、
            マップ#場所=3
         もし、塗り色=赤色ならば、
            マップ#場所=4
   )。
   戻る。

*セーブイベント
   カウンタ=0。
   出力マップ=「」。
   縦マス回(
      横マス回(
         出力マップ=出力マップ&マップ#カウンタ。
         もし、(カウンタ+1)%横マス=0ならば、
            出力マップ=出力マップ&「\n」。{改行文字の追加。}
         違えば、
            出力マップ=出力マップ&「,」。
         カウンタ=カウンタ+1
      )。
   )。
   出力マップを、『map.txt』へ、保存。
   待機。

*終了イベント
   「終了していいですか?」と、二択。
   もし、それが、はいならば、
      終わり。
   もし、それが、いいえならば、
      メインラベルへ、飛ぶ。



▲[ 57 ] / 返信無し
NO.70  作ってください:色々なゲームに使えそうですね。
□投稿者/ tosimiti -(2002/01/06(Sun) 18:55:57)
□U R L/
スタート(入り口)があって、左(右)周りで、入力数した数だけ順に色が変わっていけば、双六ゲームにいいなぁ。と思いました。

今の私には無理ですが、その内利用させていただこうと思ってます。
できれば、そういうのも作ってください。



▲[ 57 ] / ▼[ 89 ]
NO.73  さらに提案
□投稿者/ moka -(2002/01/07(Mon) 05:26:37)
□U R L/ http://www.geocities.jp/moka21/teatime/
マップを作成し、ひまわり同梱の迷路ゲームで遊んでみました。
1,0,1,1,1
0,0,0,4,1
1,0,1,0,0
1,2,0,3,1
1,1,1,1,1
隙間から外へ出て、無限の世界へ旅立てます。(笑)

以下、いろいろ要望です。無茶言ってたらすいません。
●起動直後の塗り色が赤だが、青の方がいいと思います。
●画像保存。(ドット絵っぽく描いて楽しめそうだから)
●マップの読み込み。(ファイルやクリップボードから)
●指定色で塗りつぶし。
●初期化。(マップの大きさから設定しなおす)
●名前を付けて保存。
●暗号化して保存。
(ゲーム側が暗号解除して読み込んでくれれば、
テキスト見られてもゴールへの道が分からない)



▲[ 73 ] / 返信無し
NO.89  Re[2]: さらに提案
□投稿者/ よしくん。 -(2002/01/08(Tue) 12:55:28)
□U R L/
>mokaさん
いくつか修正しました。

*マップの読み込みはあったほうがいいですね。配列の使い方で苦戦しましたが、読みこめるようになりました。また、名前を変更してセーブが出来る様にもなりました。読み込みの時にエラー処理をしたほうがいいのでしょうが、ここは使うかたの優しさに期待して・・・。

*色の指定は面倒なので止めました・・・が、最初のほうで0〜4までの色を配列に入れたので、ここを変更すればできます。

*初期化はあまり必要性を感じません(エディタで実行を終了して、また実行しなおせばいいので)が、なんとなく流れの中で作っちゃいました。また、画像への保存は上手く利用すればアイコンエディタになりそうな気もしますね。

そのほか簡単なエラー処理をしてます。あちこち修正したので分かりにくくなってます。もし、動作不具合があったら教えてもらえると嬉しいです。


――――――――――――――――――――――――――――――――――――
{マップエディタに挑戦}

{初期化}
パレット幅=24。
パレット高さ=24。
パレットスペースX=3。
パレットスペースY=3。

{ここの変数を変えると色を自由に指定できます}
色#0=白色。
色#1=青色。
色#2=緑色。
色#3=黄色。
色#4=赤色。
{---------------------}

ペン色=黒色。ペン太さ=2。
描画フラグ=0。{1ならファイルをロードして、マップを描画}

{メニューの作成}
メニューを、メニュー作成。
メニューに、新規作成を、メニュー追加。
メニューに、マップをセーブを、メニュー追加。
メニューに、終了を、メニュー追加。
{メニューのイベント}
新規作成の、イベントを、初期化イベントに、設定。
マップをセーブの、イベントを、セーブイベントに、設定。
終了の、イベントを、終了イベントに、設定。

新規作成フラグ=0。
「枠の大きさを指定してください。」と、尋ねる。
枠の幅=それ。
枠の高さ=それ。
もし、それ=0ならば、
(
   枠の幅=24。
   枠の高さ=24。
)。
「外部からファイルを読みこみますか?」と、二択。
もし、それが、はいならば、ロードイベントへ、飛ぶ。
もし、それが、いいえならば、読みこみフラグ=0。

*初期設定
   もし、新規作成フラグ=1ならば、
   (
      「枠の大きさを指定してください。」と、尋ねる。
      枠の幅=それ。
      枠の高さ=それ。
      もし、それ=0ならば、
      (
         枠の幅=24。
         枠の高さ=24。
      )。
   )。
   
   白色で、画面クリア。
   「横に何マス作りますか?」と、尋ねる。
   もし、それ=0ならば、初期設定へ、飛ぶ。
   横マス=それ。
   「縦に何マス作りますか?」と、尋ねる。
   もし、それ=0ならば、初期設定へ、飛ぶ。
   縦マス=それ。

*描画
   {母艦の設定}
   もし、パレット幅×5+30<枠の幅×横マス+10ならば、
      母艦の、幅は、枠の幅×横マス+10。
   違えば、
      母艦の、幅は、パレット幅×5+30。
   母艦の、高さは、枠の高さ×縦マス+パレット高さ+25
   白色で、画面クリア。
   
   {パレットを作る}
   塗り色=色#0。
   (5,5)から、(パレット幅+5,パレット高さ+5)へ、四角形。
   (5+パレットスペースX,5+パレットスペースY)へ、移動。
   文字色=黒色。
   「0」と、表示。

   塗り色=色#1。
   (10+パレット幅,5)から、(パレット幅×2+10,パレット高さ+5)へ、四角形。
   (10+パレット幅+パレットスペースX,5+パレットスペースY)へ、移動。
   文字色=白色。
   「1」と、表示。

   塗り色=色#2。
   (15+パレット幅×2,5)から、(パレット幅×3+15,パレット高さ+5)へ、四角形。
   (15+パレット幅×2+パレットスペースX,5+パレットスペースY)へ、移動。
   文字色=黒色。
   「2」と、表示。

   塗り色=色#3。
   (20+パレット幅×3,5)から、(パレット幅×4+20,パレット高さ+5)へ、四角形。
   (20+パレット幅×3+パレットスペースX,5+パレットスペースY)へ、移動。
   「3」と、表示。

   塗り色=色#4。
   (25+パレット幅×4,5)から、(パレット幅×5+25,パレット高さ+5)へ、四角形。
   (25+パレット幅×4+パレットスペースX,5+パレットスペースY)へ、移動。
   文字色=白色。
   「4」と、表示。

   {エディタのフォームを作る。}
   フォームの高さ=5+パレット高さ+10
   {横線を引く}
   カウンタ=0
   (縦マス+1)回(
     (5,フォームの高さ+カウンタ×枠の高さ)へ、移動。
      (5+横マス×枠の幅、フォームの高さ+カウンタ×枠の高さ)へ、線。
      カウンタ=カウンタ+1
   )。
   {縦線を引く}
   カウンタ=0
   (横マス+1)回(
      (5+カウンタ×枠の幅,フォームの高さ)へ、移動。
      (5+カウンタ×枠の幅、フォームの高さ+縦マス×枠の高さ)へ、線。
      カウンタ=カウンタ+1
   )。
   {最初の色は1}
   ペン色=色#1。
   塗り色=色#1。

   {もし、外部からファイルを読んでなければ、配列の初期化。全て0にする}
   もし、読みこみフラグ=0ならば、
   (
      カウンタ=0
      (横マス×縦マス)回(
         マップ#カウンタ=0
         カウンタ=カウンタ+1
      )。
   )。
   
   もし、描画フラグ=1ならば、
      ロードファイル描画イベントへ、飛ぶ。
   描画フラグ=0。

{メイン}
*メインラベル
   母艦の、マウス押した時を、マウスイベントに、設定。
   待機。
   
*マウスイベント
   {パレットの選択}
   もし、(マウスX>=5)かつ(マウスX<=パレット幅+5)かつ(マウスY>=5)かつ(マウスY<=パレット高さ+5)
      ならば、(
         塗り色=色#0。
         ペン色=色#0。
   )。
   もし、(マウスX>=10+パレット幅)かつ(マウスX<=パレット幅×2+10)かつ(マウスY>=5)かつ(マウスY<=パレット高さ+5)
      ならば、(
         塗り色=色#1。
         ペン色=色#1。
   )。
   もし、(マウスX>=15+パレット幅×2)かつ(マウスX<=パレット幅×3+15)かつ(マウスY>=5)かつ(マウスY<=パレット高さ+5)
      ならば、(
         塗り色=色#2。
         ペン色=色#2。
   )。
   もし、(マウスX>=20+パレット幅×3)かつ(マウスX<=パレット幅×4+20)かつ(マウスY>=5)かつ(マウスY<=パレット高さ+5)
      ならば、(
         塗り色=色#3。
         ペン色=色#3。
   )。
   もし、(マウスX>=25+パレット幅×4)かつ(マウスX<=パレット幅×5+25)かつ(マウスY>=5)かつ(マウスY<=パレット高さ+5)
      ならば、(
         塗り色=色#4。
         ペン色=色#4。
   )。
   
   {フォームの選択}
   もし、(マウスX>=5)かつ(マウスY>=フォームの高さ)かつ(マウスX<=5+枠の幅×横マス)かつ(マウスY<=フォームの高さ+枠の高さ×縦マス)
      ならば、(
         X座標=整数((マウスX-5)÷枠の幅)
         Y座標=整数((マウスY-フォームの高さ)÷枠の高さ)
         (5+X座標×枠の幅+ペン太さ,フォームの高さ+Y座標×枠の高さ+ペン太さ)から、(5+X座標×枠の幅+枠の幅-ペン太さ+1,フォームの高さ+Y座標×枠の高さ+枠の高さ-ペン太さ+1)へ、四角形。
         
         場所=X座標+Y座標×横マス。
         もし、塗り色=色#0ならば、
            マップ#場所=0
         もし、塗り色=色#1ならば、
            マップ#場所=1
         もし、塗り色=色#2ならば、
            マップ#場所=2
         もし、塗り色=色#3ならば、
            マップ#場所=3
         もし、塗り色=色#4ならば、
            マップ#場所=4
   )。
   メインラベルへ、飛ぶ。

*セーブイベント
   カウンタ=0。
   出力マップ=「」。
   縦マス回(
      横マス回(
         出力マップ=出力マップ&マップ#カウンタ。
         もし、(カウンタ+1)%横マス=0ならば、
            出力マップ=出力マップ&「\n」。{改行文字の追加。}
         違えば、
            出力マップ=出力マップ&「,」。
         カウンタ=カウンタ+1
      )。
   )。
   
   「txt」の、書込ファイル選択。
   もし、それ=「」ならば、
   (
      {エラー処理。↓警告文が出ない?}
      エラーを警告。
      「ファイルはセーブされてません。」と、言う。
      メインラベルへ、飛ぶ。
   )。
      
   出力マップを、それへ、保存。
   待機。

*ロードイベント
   {2次元配列から1次元配列に変換する処理}
   横マス=0。
   縦マス=0。
   横マスフラグ=0。
   カウンタ=0。

   描画フラグ=1。
   
   「txt」の、読込ファイル選択。
   もし、それ=「」ならば、ロードイベントへ、飛ぶ。
   
   それを、開く。
   バッファ=それ。
   バッファを、反復(
      もし、横マスフラグ=0ならば、
      (
         表示列=それ。
         表示列の、文字数。
         横マス数=それ。
      )。
      カウンタ=カウンタ+1
   )。
   横マス=(横マス数+1)÷2。
   縦マス=カウンタ。
   
   バッファを、「s/,/\n/g」で、正規表現置換。
   バッファ=それ。
   
   カウンタ=0
   (横マス×縦マス)回(
      マップ#カウンタ=バッファ#カウンタ。
      カウンタ=カウンタ+1
   )。
   
   読みこみフラグ=1。
   描画へ、飛ぶ。

*初期化イベント
   「初期化していいですか?」と、二択。
   もし、それが、はいならば、
   (
      新規作成フラグ=1。
      読みこみフラグ=0。
      ペン色=黒色。
      初期設定へ、飛ぶ。
   )。
   もし、それが、いいえならば、
      メインラベルへ、飛ぶ。
      
*ロードファイル描画イベント
   {読みこんだファイルの描画}
   描画フラグ=1。
   カウンタ=0。
   (横マス×縦マス)回(
      ペン色=色#(マップ#カウンタ)。
      塗り色=色#(マップ#カウンタ)。
      X座標=カウンタ%横マス。
      Y座標=整数(カウンタ÷横マス)。
      (5+X座標×枠の幅+ペン太さ,フォームの高さ+Y座標×枠の高さ+ペン太さ)から、(5+X座標×枠の幅+枠の幅-ペン太さ+1,フォームの高さ+Y座標×枠の高さ+枠の高さ-ペン太さ+1)へ、四角形。
      カウンタ=カウンタ+1
   )。
   メインラベルへ、飛ぶ。

*終了イベント
   「終了していいですか?」と、二択。
   もし、それが、はいならば、
      終わり。
   もし、それが、いいえならば、
      メインラベルへ、飛ぶ。



▲[ 57 ] / 返信無し
NO.146  トランプに挑戦。してましたが限界です。
□投稿者/ tosimiti -(2002/01/11(Fri) 20:19:23)
□U R L/
改造して、トランプに挑戦・・・してましたが、限界です。

やりたいこと
  まずは・・神経衰弱ゲーム・・がお手頃かと
    トランプの数字を隠(塗り色)したり、数字が現れるようにする。
    それは、同じクリックで、動作する。とゲームしやすい

    あと、ハートとかダイヤとかの表示。
----------

{トランプに挑戦}

{初期化}
枠の幅=40。
枠の高さ=38。
パレット幅=40。
パレット高さ=40。

ペン色=黒色。ペン太さ=2。

{メニューの作成}
メニューを、メニュー作成。
メニューに、マップをセーブを、メニュー追加。
メニューに、終了を、メニュー追加。
{メニューのイベント}
マップをセーブの、イベントを、セーブイベントに、設定。
終了の、イベントを、終了イベントに、設定。

白色で、画面クリア。
横マス=4
縦マス=13

{母艦の設定}
もし、パレット幅×15+50<枠の幅×横マス+40ならば、
   母艦の、幅は、枠の幅×横マス+140。
違えば、
   母艦の、幅は、パレット幅×9+30。
母艦の、高さは、枠の高さ×縦マス+パレット高さ+50
*押すボタン作成
シャッフルボタンを、ボタンとして、作成。
その、テキストを、「シャッフル」に、設定。
その、イベントを、シャッフルに、設定。
その、Xは、190。
その、Yは、110。
*線色ボタン作成
線色ボタンを、ボタンとして、作成。
その、テキストを、「塗り色」に、設定。
その、イベントを、線色に、設定。
その、Xは、190
その、Yは、50
*数ボタン作成
数ボタンを、ボタンとして、作成。
その、テキストを、「数」に、設定。
その、イベントを、数に、設定。
その、Xは、190
その、Yは、80
*シャッフル
シャッフル前=「A\n2\n3\n4\n5\n6\n7\n8\n9\n10\nJ\nQ\n\K」

   画面クリア。
   シャッフル後=「」
   シャッフル前の、要素数。
   それ回(
      シャッフル前の、要素数。乱数。
      シャッフル後=シャッフル後&シャッフル前#それ&「\n\n」
      シャッフル前の、それ行目を、行削除。
      シャッフル前=それ   
   )
   シャッフル前=シャッフル後
 
*シャッフル1
シャッフル前1=「A\n2\n3\n4\n5\n6\n7\n8\n9\n10\nJ\nQ\n\K」

   画面クリア。
   シャッフル後=「」
   シャッフル前1の、要素数。
   それ回(
      シャッフル前1の、要素数。乱数。
      シャッフル後=シャッフル後&シャッフル前1#それ&「\n\n」
      シャッフル前1の、それ行目を、行削除。
      シャッフル前1=それ   
   )
   シャッフル前1=シャッフル後
*シャッフル2
シャッフル前2=「A\n2\n3\n4\n5\n6\n7\n8\n9\n10\nJ\nQ\n\K」

   画面クリア。
   シャッフル後=「」
   シャッフル前2の、要素数。
   それ回(
      シャッフル前2の、要素数。乱数。
      シャッフル後=シャッフル後&シャッフル前2#それ&「\n\n」
      シャッフル前2の、それ行目を、行削除。
      シャッフル前2=それ   
   )
   シャッフル前2=シャッフル後
*シャッフル3
シャッフル前3=「A\n2\n3\n4\n5\n6\n7\n8\n9\n10\nJ\nQ\n\K」

   画面クリア。
   シャッフル後=「」
   シャッフル前2の、要素数。
   それ回(
      シャッフル前3の、要素数。乱数。
      シャッフル後=シャッフル後&シャッフル前3#それ&「\n\n」
      シャッフル前3の、それ行目を、行削除。
      シャッフル前3=それ   
   )
   シャッフル前3=シャッフル後

*押す
白色で、画面クリア。
(枠の幅-25,67)へ、移動。
「{シャッフル前}」と、表示。
((枠の幅-15)×2,67)へ、移動。
「{シャッフル前1}」と、表示。
((枠の幅-11)×3,67)へ、移動。
「{シャッフル前2}」と、表示。
((枠の幅-7)×4,67)へ、移動。
「{シャッフル前3}」と、表示。

*線色
*パレットを作る
塗り色=白色。
(5,5)から、(パレット幅+5,パレット高さ+5)へ、四角形。
塗り色=青色。
(10+パレット幅,5)から、(パレット幅×2+10,パレット高さ+5)へ、四角形。
塗り色=緑色。
(15+パレット幅×2,5)から、(パレット幅×3+15,パレット高さ+5)へ、四角形。
塗り色=黄色。
(20+パレット幅×3,5)から、(パレット幅×4+20,パレット高さ+5)へ、四角形。
塗り色=赤色。
(25+パレット幅×4,5)から、(パレット幅×5+25,パレット高さ+5)へ、四角形。
塗り色=黒色。
(30+パレット幅×5,5)から、(パレット幅×6+30,パレット高さ+5)へ、四角形。

{エディタのフォームを作る。}
フォームの高さ=5+パレット高さ+10

{横線を引く}
カウンタ=0
(縦マス+1)回(
  (5,フォームの高さ+カウンタ×枠の高さ)へ、移動。
   (5+横マス×枠の幅、フォームの高さ+カウンタ×枠の高さ)へ、線。
   カウンタ=カウンタ+1
)。
{縦線を引く}
カウンタ=0
(横マス+1)回(
   (5+カウンタ×枠の幅,フォームの高さ)へ、移動。
   (5+カウンタ×枠の幅、フォームの高さ+縦マス×枠の高さ)へ、線。
   カウンタ=カウンタ+1
)。

{配列の初期化。全て0にする}
カウンタ=0
(横マス×縦マス)回(
   マップ#カウンタ=0
   カウンタ=カウンタ+1
)。

{メイン}
*メインラベル
   母艦の、マウス押した時を、マウスイベントに、設定。
   待機。
   
*マウスイベント
   {パレットの選択}
   もし、(マウスX>=5)かつ(マウスX<=パレット幅+5)かつ(マウスY>=5)かつ(マウスY<=パレット高さ+5)
      ならば、(
         塗り色=白色。
         ペン色=白色。
   )。
   もし、(マウスX>=10+パレット幅)かつ(マウスX<=パレット幅×2+10)かつ(マウスY>=5)かつ(マウスY<=パレット高さ+5)
      ならば、(
         塗り色=青色。
         ペン色=青色。
   )。
   もし、(マウスX>=15+パレット幅×2)かつ(マウスX<=パレット幅×3+15)かつ(マウスY>=5)かつ(マウスY<=パレット高さ+5)
      ならば、(
         塗り色=緑色。
         ペン色=緑色。
   )。
   もし、(マウスX>=20+パレット幅×3)かつ(マウスX<=パレット幅×4+20)かつ(マウスY>=5)かつ(マウスY<=パレット高さ+5)
      ならば、(
         塗り色=黄色。
         ペン色=黄色。
   )。
   もし、(マウスX>=25+パレット幅×4)かつ(マウスX<=パレット幅×5+25)かつ(マウスY>=5)かつ(マウスY<=パレット高さ+5)
      ならば、(
         塗り色=赤色。
         ペン色=赤色。
   )。
    もし、(マウスX>=30+パレット幅×5)かつ(マウスX<=パレット幅×6+30)かつ(マウスY>=5)かつ(マウスY<=パレット高さ+5)
      ならば、(
         塗り色=黒色。
         ペン色=黒色。
   )。
   {フォームの選択}
   もし、(マウスX>=5)かつ(マウスY>=フォームの高さ)かつ(マウスX<=5+枠の幅×横マス)かつ(マウスY<=フォームの高さ+枠の高さ×縦マス)
      ならば、(
         X座標=整数((マウスX-5)÷枠の幅)
         Y座標=整数((マウスY-フォームの高さ)÷枠の高さ)
         (5+X座標×枠の幅+ペン太さ,フォームの高さ+Y座標×枠の高さ+ペン太さ)から、(5+X座標×枠の幅+枠の幅-ペン太さ+1,フォームの高さ+Y座標×枠の高さ+枠の高さ-ペン太さ+1)へ、四角形。
         
         場所=X座標+Y座標×横マス。
         もし、塗り色=白色ならば、
            マップ#場所=0
         もし、塗り色=青色ならば、
            マップ#場所=1
         もし、塗り色=緑色ならば、
            マップ#場所=2
         もし、塗り色=黄色ならば、
            マップ#場所=3
         もし、塗り色=赤色ならば、
            マップ#場所=4
   )。
   戻る。

*セーブイベント
   カウンタ=0。
   出力マップ=「」。
   縦マス回(
      横マス回(
         出力マップ=出力マップ&マップ#カウンタ。
         もし、(カウンタ+1)%横マス=0ならば、
            出力マップ=出力マップ&「\n」。{改行文字の追加。}
         カウンタ=カウンタ+1
      )。
   )。
   出力マップを、『map.txt』へ、保存。
   待機。

*終了イベント
   「終了していいですか?」と、二択。
   もし、それが、はいならば、
      終わり。
   もし、それが、いいえならば、
      メインラベルへ、飛ぶ。



- Child Tree -