プチコンまとめWiki (初代/mkII)

投稿プログラム : Minesweeper SEMI-AUTO

パンくずリスト

2011年04月02日投稿 / 投稿者 : 名無しさん / タグ : 投稿プログラム ゲーム QRコード 初代対応

概要

Windowsでおなじみのマインスイーパーを移植してみました。

操作方法

タッチペンだけで遊べること、なるべくうっかりミスで死なないことを目指し
Windows版と一部操作系を変えています

  1. 上下左右斜めに隣り合うマスがすべて灰色(まだ開けられていない)マスをタッチしたならばそのマスを開く
  2. 隣り合うマスにすでに開いてあるマス(数字が書いてあるマス)がある灰色マスをタッチしたならばそのマスに旗を建てる
  3. 旗のたっているマスをタッチしたならば旗を片付ける
  4. 数字マスをタッチし、その数字と隣り合うマスに建っている旗の数が一緒ならば
    周りの旗以外のマスをすべて開く(答え合わせする)
    旗の数と数字が違っている場合は何も起こりません。
    数字の0のマスを開けた場合は続けてその周りのマスを自動で開いていきます。
  5. これを繰り返し、(フィールドのマス数-地雷の数)分だけマスを開くことができればクリアです。
    全ての地雷に旗を建てる必要はありません。

個人的にDSとマインスイーパはすごく相性がいいと思います
6行目の数字を変えることでマスの数を変えることができますが16×16(Windowsの中級に相当)ぐらいまでにしておくのが無難です。

スクリーンショット・動画

9x9.jpg
16x16.jpg
24x36.jpg

QR コード

プチコンmkII 向けの QR コードです。

PRG:MAINSWP
qr000.pngqr001.png

プログラムリスト

  1. CLEAR:PNLTYPE”OFF”
  2. GPAGE 0:GCLS 0
  3. GPAGE 1:GCLS 0
  4. ’マスノヨコ,タテ,シ゛ライノカス゛
  5. XX= 9:YY= 9:BOMB=10
  6. ’XX=16:YY=16:BOMB= 40
  7. ’XX=36:YY=24:BOMB=130
  8. Z=192/YY:RT=9999
  9. ’マスノモシ゛トイロ
  10. DIM N$(12),C(12),V(XX+2,YY+2)
  11. FOR I=0 TO 11:READ N$(I):NEXT
  12. FOR I=0 TO 11:READ C(I):NEXT
  13. DATA ,17,025368,0254586
  14. DATA 03528,203586,206853,027
  15. DATA 03680,0862,6053,
  16. DATA 6,8,8,8,8,8,8,8,8,2,15,1
  17. ’クリアシ゛ノテ゛ータコウシン
  18. @STGCLR
  19. CLS:?”MINE SWEEPER SEMI−AUTO”
  20. LOCATE 8,4:?”クリアカイスウ  x”,CC
  21. CC=CC+1:IF CC==1 GOTO @START
  22. IF RT>T THEN RT=T
  23. ?,,”サイタンキロク”,,RT;” S   ”
  24. ST=ST+T:M=FLOOR(ST/(CC−1))
  25. ?,,”ヘイキンタイム”,,M;” S  ”
  26. ?,,”クリアタイム”,,T;” S   ”
  27. BGMPLAY 5:VSYNC 300
  28. ’ケ゛ームオーハ゛ーナラ ココニモト゛ル
  29. @START
  30. FOR DX=0 TO XX+1
  31.  FOR DY=0 TO YY+1
  32.   V(DX,DY)=10
  33.   D=11:GOSUB @DRW
  34.  NEXT
  35. NEXT
  36. ’シ゛ライセッチ
  37. FOR I=1 TO BOMB
  38.  @S1
  39.  X=RND(XX)+1:Y=RND(YY)+1
  40.  IF V(X,Y)>18 GOTO @S1
  41.  V(X,Y)=19
  42.  FOR J=X−1 TO X+1
  43.   FOR K=Y−1 TO Y+1
  44.    V(J,K)=V(J,K)+(V(J,K)<18)
  45.   NEXT
  46.  NEXT
  47. NEXT
  48. FRM=MAINCNTL:ENDFLG=0
  49. BGMPLAY 25:GOTO @T2
  50. ’タッチニュウリョク マチ
  51. @TCH
  52. T=FLOOR((MAINCNTL−FRM)/60)
  53. LOCATE 8,9:?”ケイカシ゛カン”,,T;” S”,
  54. IF Q==0      GOTO @STGCLR
  55. IF ENDFLG==1 GOTO @GMOVR
  56. IF TCHST ==0 GOTO @TCH
  57. X=FLOOR(TCHX/Z)+1
  58. Y=FLOOR(TCHY/Z)+1
  59. IF X>XX OR Y>YY GOTO @TCH
  60. @T1
  61. IF TCHST==1 GOTO @T1
  62. ’タッチシタトキノフ゛ンキ
  63. V=FLOOR(V(X,Y)/10)
  64. ON V GOSUB @AUTO,@MAN,@FLG
  65. @T2
  66. Q=XX*YY−BOMB
  67. FOR Y=1 TO YY
  68.  FOR X=1 TO XX
  69.   IF V(X,Y)<9 THEN Q=Q−1
  70.  NEXT
  71. NEXT
  72. LOCATE 8,10:?”ノコリ”,,,Q;”マス ”
  73. GOTO @TCH
  74. ’アイテルマスヲタッチシテ オーフ゜ン
  75. @AUTO
  76. F=0
  77. FOR I=X−1 TO X+1
  78.  FOR J=Y−1 TO Y+1
  79.   IF V(I,J)>=20 THEN F=F+1
  80.  NEXT
  81. NEXT
  82. IF F!=V(X,Y) THEN RETURN
  83. ’ハタノナイ アイテナイマス ヲアケル
  84. BEEP 2
  85. FOR DX=X−1 TO X+1
  86.  FOR DY=Y−1 TO Y+1
  87.   M=V(DX,DY):N=FLOOR(M/10)
  88.   IF N!=1 GOTO @A1
  89.   V(DX,DY)=M−10:D=M−10
  90.   GOSUB @DRW
  91.   @A1
  92.  NEXT
  93. NEXT
  94. GOSUB @OPN
  95. RETURN
  96. ’アイテナイマスヲタッチ
  97. @MAN
  98. F=0
  99. FOR I=X−1 TO X+1
  100.  FOR J=Y−1 TO Y+1
  101.   IF V(I,J)<9 THEN F=1
  102.  NEXT
  103. NEXT
  104. IF F==0 GOTO @MAN1
  105. ’コリツシテイナイナラ ハタヲタテル
  106. BEEP 3
  107. V(X,Y)=V(X,Y)+10
  108. DX=X:DY=Y:D=10:GOSUB @DRW
  109. RETURN
  110. ’コリツシタマスヲクリックシテ オーフ゜ン
  111. @MAN1
  112. D=V(X,Y)−10:V(X,Y)=D
  113. DX=X:DY=Y:GOSUB @DRW
  114. IF D!=0 GOTO @TCH
  115. BEEP 32:GOSUB @OPN
  116. RETURN
  117. ’ハタヲ ヒッコメル
  118. @FLG
  119.  DX=X:DY=Y:D=11:GOSUB @DRW
  120.  V(X,Y)=V(X,Y)−10
  121. GOTO @TCH
  122. ’ケ゛ームオーハ゛ー
  123. @GMOVR
  124.  BGMPLAY 6:BEEP 13:VSYNC 300
  125. GOTO @START
  126. ’マスノヒ゛ョウシャ
  127. @DRW
  128.  DD=(DX>XX) OR (DY>YY)
  129.  IF DD THEN RETURN
  130.  DZ=Z/4
  131.  DL=(DX−1)*Z:DT=(DY−1)*Z
  132.  GFILL DL,DT,DL+Z,DT+Z,C(D)
  133.  GBOX  DL,DT,DL+Z,DT+Z,0
  134.  IF D==9 THEN ENDFLG=1
  135.  FOR I=0 TO LEN(N$(D))−1
  136.   D0=VAL(MID$(N$(D),I,1))
  137.   D1=DL+(D0%3)*DZ+DZ
  138.   D2=DT+FLOOR(D0/3)*DZ+DZ
  139.   IF I==0 THEN D3=D1:D4=D2
  140.   GLINE D1,D2,D3,D4,1
  141.   D3=D1:D4=D2
  142.  NEXT
  143. RETURN
  144. ’0ノマスナラ レンソ゛クシテアケル
  145. @OPN
  146.  F=0
  147.  FOR X=1 TO XX
  148.   FOR Y=1 TO YY
  149.    IF V(X,Y)!=0 GOTO @OP1
  150.    FOR DX=X−1 TO X+1
  151.     FOR DY=Y−1 TO Y+1
  152.      IF V(DX,DY)<9 GOTO @OP2
  153.      D=V(DX,DY)%10:GOSUB @DRW
  154.      V(DX,DY)=D:F=1
  155.      @OP2
  156.     NEXT
  157.    NEXT
  158.    @OP1
  159.   NEXT
  160.  NEXT
  161.  IF F==1 GOTO @OPN
  162. RETURN

CHECKER FLAG (ひとことコメント)

この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)

  • 名無しさん : こちらでは、以下の修正をしないと動きませんでした。23行目"CC,"→"CC",49行目"V(J,K)-(V(J,K)>19)"→"V(J,K)+(V(J,K)<19)",53行目"FNDFLG"→"ENDFLG",58行目"FLM"→"FRM",61行目"@GMOVR"→"@GMOVER",148行目"C(D)"→"0" (2011/04/03 (日) 08:51:50)
  • 投稿者 : 指摘ありがとうございます。ソース修正しました。テキストでupしたら打ったら自分で打ち直して動くか確認しとかないとだめですね。 (2011/04/03 (日) 10:21:11)
  • 名無しさん : 確かにタッチペンと相性いいですね。 (2011/04/06 (水) 08:58:14)
  • 名無し君 : どうしても Out of DATA (14, READ) (2011/05/08 (日) 17:59:50)
  • 名無し君 : になってしまいます。どうすればいいでしょうか?? (2011/05/08 (日) 18:01:05)
  • 名無しさん : 13〜18行目のどこかを打ち間違っているので確認すべし。おそらく、15行目の最初のコンマか、17行目の最後のコンマが抜けている。 (2011/05/08 (日) 19:32:47)
  • 名無し君 : 17行目の最後のコンマがありませんでした。ありがとうございます。 (2011/05/09 (月) 18:25:25)
  • 名無しさん : out of data out of data (2011/05/24 (火) 14:12:18)
  • 名無しさん : Ver1.1では、157行目のNEXTの前のスペースを消さないと動かないので注意。 (2011/08/21 (日) 21:14:44)
  • 名無しさん : おー、すごい! はまりました! 明日の学校、休みます。『嘘』 (2013/09/01 (日) 17:06:22)

表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.116 秒 | このページの最終更新 : 2022/09/20 (火) 12:44:05 (565d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30